Az „Excel” fórum célja, hogy keretet adjon az Excel felhasználók széles táborának tapasztalataik megosztására, és lehetőséget a segítséget kérőknek. Az alábbi összefoglaló azért készült, hogy segítse a helyes kérdésfeltevést.
– Írd le szabatosan a problémát. Úgy fogalmazz, hogy ne csak te magad, de a szakértő is megértse, mire szeretnél választ kapni.
– Írd le, hogy milyen verziójú Excellel dolgozol. (Vagy ha nem – ill. nem csak – Excel, akkor micsoda?)
– Írd le, hogy milyen úton indultál el, és hol akadtál el rajta.
– A kérdés megértése szempontjából sokat segíthet, ha feltölteszt egy képet, amin látszik, hogy mit szeretnél, vagy illusztrálja azt.
– Még jobb, ha feltöltesz egy minta munkafüzetet valahová (pl. data.hu). Feltöltés előtt távolítsd el belőle a nem publikus adatokat.
– Ha a feladat jellege olyan, célszerű az "előtte" és "utána" állapotokat bemutatni. (Miből kellene csinálni mit?)
– Ha VBA kódon kell javítani, másold be a releváns kódrészt. Rövid kód mehet hozzászólásba, hosszú kód inkább ide: http://pastebin.com/
– Ha valami nem úgy működik, ahogy kellene, add meg a rendellenes viselkedés jellemzőit, a hibaüzenetet, és a hibát okozó programsort.
A régi módon kerestetve ( =VAGY(A1= ) ez a végeredmény volt az üres karaktereket kiszedve a kész függvényből.(az excelből átmásolt jegyzettömb.txt-be átrakott sorból,mindig csak 1 sor van kerestetve )
Bocs, még mindig annyira nem világos, hogy miből készítesz jegyzettömböt, és hogyan, hogy nem vagyok képes reprodukálni sem.
Feltételezem, hogy a mentés másként technikával választod valamelyik txt-be mentést. De nem látom, hogy miből. Hol van az a képlet, amit kimásolsz? Nem lehet fenn a szerkesztőlécen, mert annak csak az eredménye másolódik.
De az sem világos, hogy a képen látható számaid hogy kerülnek oda. Mert ott meg képletek nincsenek.
Próbáld meg elküldeni az Excel tábla képét, amit kimásolsz, és lépésről lépésre azt, hogy mit csinálsz.
És különösen érdekelne, hogy ha számokat másolsz ki a jegyzettömbbe, akkor hogy kerülnek valami képletnek az egyes részei Excel oszlopokba, ahogy az első képen mutattad.
Igen,köszönöm az akkori segítségeteket ( =VAGY(A1= ) az volt a megoldás. "..de ott nem kevert bele a jegyzettömb .." mert akkor kicsi számhalmazt néztem. - Azzal nem tudok mit kezdeni hogy excel-ből átmásolva jegyzettömb.txt-be a szám oszlopokat széthúzza és üres karakterekkel elválasztja. - Visszafelé nincs gond szépen át teszi excel-be.(a varázsló segítségével ) - A kapott üres karakterekkel nem tudok mit kezdeni,kézzel törölgetni időigényes.Nagy a számhalmaz amiben kutakodok. A sorokból készítem el a pl .........
Ezt írod: "Excelből átmásolva (jegyzettömb.txt)...". Viszont a kép, amit csatoltál épp az ellenkezőjét mutatja. Ott az Excelbe lett bemásolva valami, ismeretlen forrásból, de a képen látható cellatartalom számomra értelmezhetetlen. Ilyet nem tudnál kézzel beírni az Excelbe.
Írd meg a pontos történetet, hogy milyen forrásból mit és hogyan másoltál. Nem utólag kell javítani az eredményt, hanem a kiindulásnál.
De ha arra gondolsz, hogy a makróban lévő hiba miatt nem engedi a rendszer a makró mentését, akkor az félreértés. A mentést nem érinti az, hogy van-e hiba a makróban, vagy sem.
Mondanám, hogy szívesen, de az s hiányáról Fferi írt. Én a 33802 és 33803-as hozzászólásban írtam arról, hogy hogyan mentsd a makrót tartalmazó munkafüzetet.
A jobboldali képen a számok szövegformátumban vannak (abból látszik, hogy balra vannak pozicionálva).
Az átvett fájlban ezeket számként vetted át. Ott nem tudja az Excel használni a + előjelet. A gyanúm az, hogy a negatív számaidnál is levágta a tizedesjegyek utolsó nulláit, bár ez a képen nem látszik.
Megoldás: Ne egyszerűen megnyisd az Excellel a CSV-t, hanem egy üres Excel munkafüzetben az Adatok csoportjában a "Szövegből" választással nyisd meg, és beolvasáskor az adott oszlopoknál jelöld be, hogy szövegként kéred.
Továbbra is tartom magam ahhoz, hogy ez tipikusan egy összetettebb üzemmérnöki/technológiai mérnöki feladat, ami túlmutat a "gyorsan összedobok egy makrót, mert nekem könnyebb" módon. Ezt papíron kell(ene) végiggondolni, és a végén megetetni az Excellel, de - még egyszer mondom - ez szakfeladat. Nagyon.
Szerintem ez nem Excel/nem Excel kérdés. Ha jól értem, akkor arra kellene optimalizálást végezni, hogy az adott feltételekkel hogy lehet a legnagyobb mennyiséget legyártani. (A 60 perces elfogyást ebben a relációban persze nehezen tudom értelmezni).
Ezt a feladatot korlátozza, hogy a bepakolást követően azonnal indul a gép munkája, és a még nehezebben teljesíthető korlát, hogy a gép munkája befejezésekor azonnal ugyanannyi idő kell a kipakolásra (ez nem derül ki számomra a képen látható táblázatból, pedig fontos eleme lenne annak.)
Ha erre sikerül valami algoritmust megadni, akkor valószínűleg akár Excelben is lehet készleteket értékelni, diagramokat készíteni, vagy ábrát a folyamatról. Ha pedig nincs algoritmus, akkor semmilyen szoftverrel nem lesz megoldás.
Sajnos pont erre algoritmusra nincs ötletem, és lehet, hogy a matematikusok fórumán előbb lehet elvi megoldást találni a dologra. Kicsit emlékeztet ez engem a hálótervezésre, de sok az eltérés is attól.
Én pedig arra, hogy én részletesen ismerem a feladatot, és azt is tudom, hogy ez nem pont az a forma, amit az amerikaiak használnak, ezért az excelbe betett solver se ismeri ezt a sémát. :-(
Ezért kértem tanácsot, hogyan lehet vagy átalakítani, hogy az excel számára érthető legyen, vagy másik programot ajánlani, aminek ez a feladat jobban fekszik.
A lényeg sajnos a grafikai ábrázolás lenne, de jó lenne először egy számításos megoldás az optimális min-max sávokkal termékenként, hogy ha kézzel kell megcsinálni az ábrákat, legyen egy viszonyítási alap.
Adottak az idősávok és a készlet min-max értékek, tudjuk, hogy mikor dolgoznak az emberek és mikor a gépek, és azt is, hogy milyen sorrendben vannak a tevékenységek.
Nézzük először, hogy excel-ben mik a lehetőségek - ebben nagyon nem vagyok otthon.
Ha jól tudom, az excel a számításhoz csak min-max értékeket akar, ehhez kérnék tippet, hogy miket vonjak össze, hogy elfogadja.
Mondhatom, hogy legyen csak hét munkafeladat, mindegyikhez tartozik min-max készlet adott időszakokra.
Ezzel lebutított sémával már megoldható a számítás excelben?
Inkább arra céloztam, ha első olvasásra nem fog meg valakit a feladat, aztán másodikra sem - akkor a kérdés feltevéssel van gond. Szerintem senki nem fogja elemezgetni 10 percnél többet. Ha nem világos a kérdés második olvasásra sem, akkor válasz sem lesz rá
Sajnos a GANTT diagramm erre kevés, reméltem, hátha van rá megoldás, hiszen közel száz éve ismert és alkalmazott módszer, furcsa, hogy nincs rá program.
Szerintem ez Excellel elég nehéz lenne. Talán jobban járnál, ha készítenél egy folyamatábrát (pl. draw.io): függőlegesen a gépek, vízszintesen egységnyi időszakaszok (praktikusan a legrövidebb részfolyamat ideje, pl. a 2 perces karbantartás-indításé), a kettő metszetében pedig hogy melyik ember épp mit csinál, és ezt folytatnád az első ismétlődésig (olyan pillanat, amikor épp mindenkinek és minden gépnek az következik, amivel a napot indította), ha ilyen nincs, akkor egész napra.
Ha ismered, az MS Project (vagy klónjainak egyike) még jobb lehet erre.
Ha a "Nem" gombra kattintasz, akkor sem látod alul a választó menüt, ahol xlsm kiterjesztésű makróbarát munkafüzetként már mentheted? Ezt nem hiszem el. Nézd meg még egyszer.
Bocs, de a szilveszteri hangulatban valószínűleg félrenyomtam a hozzászólást - illetve nem a te problémádra válaszoltam.
Az oszlopok elrejtését a 33788 hozzászólásban levő makró végezni.
Ezt a makrót kellene bemásolnod a munkafüzetedbe a Thisworkbook - Workbook_open eseménykezelőjébe, mutatom a képen:
A "munkalap" helyére a saját munkalapod nevét kell írni.
A VBA nézetet az Excel munkalapról az Alt + F11 kombóval tudod előhívni. Utána kattints kettőt a Thisworkbook névre. Ezután bemásolhatod:
Private Sub Workbook_Open()
Dim i a Long i = 2 Do While Sheets("munkalap").Cells(2, i).Value < Date Cells(2, i).EntireColumn.Hidden = True i = i + 1 Loop End Sub
A fájlt makróbarátként (xlsm) vagy binárisként (xlsb) kell mentened a mentés másként opcióval.
A képről sajnos nem derült ki, hogy a dátum valóban dátum vagy csak szöveges érték. Ezt megnézheted a következő módon:
Ráállsz a dátumot tartalmazó cellára. Jobb egérgomb - cellaformázás - szám ---> ha számérték jelenik meg, akkor dátum van ott, ha nem, akkor szöveg. Ebben az esetben dátummá kell alakítani a hasonlítás előtt. Ha így lenne, akkor a makró:
Private Sub Workbook_Open() Dim i As Long i = 2 Do While Sheets("Munka1").Cells(2, i) <> "" With Sheets("Munka1").Cells(2, i) If DateSerial(Left(.Value, 4), Mid(.Value, 6, 2), Right(.Value, 2)) < Date Then Cells(2, i).EntireColumn.Hidden = True i = i + 1 Else Exit Do End If End With Loop End Sub
Megnéztem! Értem a leírást meg az egyszerűbb példát is de az én problémámra nem tudom a megoldást sajnos. Megpróbálom egy ismerőssel megcsinálni. Köszönöm!
Köszi a választ. Így fogom csinálni, azaz az egyik munkalapon lesznek az adatok "ömlesztve", aztán a másikon meg majd sorbarendezem a kívánalom szerint (ha sikerül).
Makrót nem tudok írni, úgyhogy ha lesz rá szükség, akkor megint jövök segítséget kérni :)
Viszont dolgoztam már olyan táblázattal - nem tudom a megnevezését - ahol csoportosítva vannak az adatok. Egy + jellel lehet kinyitni, ha jól emlékszem. Nem a sor és oszlop azonosítóknál lévő csoportosítást értem ez alatt. Lehet, hogy ilyen formula is jó lenne. Ha tudnám, hogy hol keressem.
Jó, hogy feltetted a kérdést, mert ebből így borítékolható káosz lesz.
Én vagyok itt az a pasas, aki folyton az adatbázisokról beszél, Most azt mondom, hogy azt a gondolkodásmódot vissza lehet azért származtatni az Excelbe is, és itt is lehet normális adatszerkezetet kiépíteni. A problémád az, hogy az adatszerkezetet,amiben az adatokat tárolni akarod, összekevered a megjelenítéssel. Válasszuk szét.
Ne foglalkozz vele, hogy néz ki. Azzal foglalkozz, hogy jó legyen. Ha nem tetszik, akkor csinálhatsz egy másik munkalapot, ami az adattároló munkalapról átveszi az adatokat, és pofásan jeleníti meg.
A cellaegyesítés maga a halál, a fejlécen kívül mindenhol felejtsd el örök időkre.
Nem írtad le pontosan, mi a feladat, mire akarod ezt használni, de én a következőket csinálnám:
1. munkalap: csak a számlák törzsadatai szabályosan egymás alatt. Sorszám (az ugye egy számla alapvető adata), dátum, eladó, végösszeg.
2. munkalap: számlaszám, tétel, tételár végtelen sorban egymás alatt. Mindegyik számlához annyi sor, amennyi tétel van.
1. munkalap megint: a begépelt végösszeg mellett egy képlettel számított végösszeg ellenőrzésül a tételek alapján. Azt is lehet, hogy ez a számított összeg egy HA függvényben csak akkor jelenik meg vastag pirossal, ha nincs egyezés. Ha egyezés van, nem látsz semmit, ebből tudod, hogy OK.
3. munkalap: itt lehet díszesen megjeleníteni, pl. definiálsz egy listát, amihez adatérvényesítéssel hozzárendeled az 1. munkalapról a számlaszámokat egy legördülőben, és ez kiválasztja a számlát. Lehet, hogy makró is kell, hogy annak a tételei szépen megjelenjenek alatta. Itt akár vonalazni, dekorálni is lehet.
Mindig az adatszerkezet az első, még akkor is, ha az Excel nem kényszerít rá, hogy ezzel foglalkozzál.
Biztos jót írtál de sajnos nem én ezt nem értem! Nem vágom ennyire az excelt. Kicsit bővebben nem tudod leírni, hogy értsem? :D Csatolok egy fájlt, hogy is néz ki ez!
Igenám, de ha dátum szerint sorba akarnám rendezni (mert nem dátum szerint lennének az adatok beírva, hanem ahogy a kezembe akad a kupacból a nyomtatott papír), akkor az üres cellák miatt, nem lehet. Ugyebár üres cellák lennének a fenti példa alapján: A2-A3, B2-B3, E2-E3, A5, B5, E5.
Ha cellaegyesítek az üres cellákkal a fölöttük lévő cellával, szintén nem tudok majd a sok sorból álló táblázat esetén sorbarendezni.
Az meg túl zsúfolttá tenné a táblázatot, ha az üres cellákba beírom a fölöttük lévő adatot. Ezt nem szeretném. Vagyis A2-be és A3-ba is ugyanaz a dátum kerülne, mint ami az A1-ben van. Ráadásul így 1 számlához tartozó végösszeg többször szerepelne (ahány tétel van). Ez totál hibás adatot adna a számlák végösszegének szummája esetén.
Szóval hogyan lehet ezt jól megcsinálni? Hogy rendezni lehessen szinte bárhogy, de a lényeg, hogy az 1 számlához tartozó tételek mindig együtt maradjanak? Azaz ne ékelődjön egyazon számla tételei közé egy másik számla tétele. Illetve ha mégis - mert akár tételek ára szerint is kéne sorbarendezni - akkor az eredeti kinézetet (1 számla adatai egymás alatt) vissza lehessen állítani?
Excel 2002 vagy Excel 2007-tel dolgozom.
Köszi előre is, ha van erre valami praktikus megoldás.
i=1 ' ha az első oszlopban nincsenek dátumok, akkor i=2
Do While Sheets("munkalap").Cells(1,i).Value < Date
Cells(1,i).EntireColumn.Hidden=True
i=i+1
Loop
Ha viszont nem valódi dátumok, csak annak látszó értékek vannak a cellában (pl. szövegformában), akkor át kell alakítanod a hasonlítás érdekében a kifejezést.
Már csak az lenne a kérdésem, hogy azok az oszlopok ahová a dátum be van írva a legfelső cellába az eltűntethető-e úgy hogy amikor elmúlik a dátum akkor az az oszlop is rejtve lesz. Remélem érthető, hogy mire gondoltam.
Sziasztok, január közepe táján - amikor megszűnik a Win 7 támogatása - tervezem az áttérést a Win 10-re. Viszont ha már, akkor az Office tekintetében is haladnék a korral. Ebben kérném a véleményeteket.
Szóba jöhet az Office 2019 beszerzése, vagy az Office 365 előfizetése. Az utóbbival azért kacérkodom, mert havi 2100 Ft-ért 1 TB tárhelyet is adnak a OneDrive-on. Viszont ezt még sosem használtam, és olvastam panaszokat az ingyenes OneDrive kapcsán.
Van valakinek tapasztalata? Érdemes belevágni az előfizetésbe, vagy telepítsem a 2019-es verziót? Utóbbi esetben akkor a többlet tárhelyet (nekem 200 GB elég lenne havi 1100 Ft-ért) vegyem meg a GoggleDrive-nál, amit ismerek és használok (egyelőre ingyen), és amivel messzemenően elégedett vagyok.
"A másik kérdés, hogy hogy tudom mondjuk a 2020 as év minden péntek szombat vasrnapi dátumát beírni egy sorba?"
a) Végighúzod, majd alatta HÉT.NAPJA függvény, ahol nem jó a visszaadott érték, azokat törlöd.
b) Csinálsz egy olyant, hogy kikeresed az első pénteket, mellette lévő cellába a dátumhoz +1-et adsz, aztán megint, aztán 5-öt. És ezt másolod egymás mellé kb. 52-szer.
Segítséget szeretnék kérni! Egy úgymond jelentkezési lapot szeretnék összeállítani. Bal oldalon oszlopba a nevek fent sorban a dátumok. Mindenki be tudja majd jelölni mikor ér rá!
Kérésem: meg lehet azt oldani, hogy ahogy múlik az idő úgy a már elmúlt dátumú oszlopok eltűnnek vagy el lehet e rejteni őket, hogy mindig az aktuális dátum legyen elől? Pl: az év minden hétvégéjének dátumát beírom az excelbe és hogy ne kelljen nekem mindig elrejteni az elmúlt dátumot.
A másik kérdés, hogy hogy tudom mondjuk a 2020 as év minden péntek szombat vasrnapi dátumát beírni egy sorba?
"A HA nem megoldás, mert 70 körüli partnerről van szó, és az azonosságok eltávolítása után is maradna vagy 40 féle formátum."
Szia! Látom, hogy nem jutottál még el a keresett megoldáshoz, így fogadj el tőlem egy ötletet. Van az Excelnek egy ritkábban használt nagyon egyszerű alkalmazása a Boolean logika. Ez a név az Excel képletek építési technikájára utal, azaz arra, hogy az IGAZ = 1 és HAMIS = 0. Ezzel a technikával nagyon egyszerűen korlátlanul sok HA függvény írását tudod megspórolni, ugyanis a matematikai műveletek soránaz Excel a logikai értékeket számokká változtatja, az IGAZ-ból logikai 1 lesz, a HAMIS pedig 0 lesz. Pl. ha a formula = F15>10000, akkor a logikai eredmény HAMIS, a Boolean eredmény tehát 0 lesz.
Hogy lehet ezt HA függvény helyett használni? HA függvénnyel: = HA (6000> 10000;500;0) => itt az eredmény nulla lesz Boolean logikával pedig: = (6000>10000) * 500 => itt is az eredmény nulla lesz Ennek a logikai feltételnek a többszöri megadását pedig így alkalmazhatod korlátlanul sokszor: = (F15> 10000) * 500 + (F15> 12000) * 250 (VAGY kapcsolatok sokasága) itt az eredmény F15=11 000 esetén 500, F15=13 000 esetén pedig 250 A számla számaidat kell csak felsorolnod, és máris ugyanott vagy, mint ha sok-sok HA függvénnyel dolgoztál volna. Remélem ezt használni tudod.
Mozdonyra létezik ilyen (mikor van előkészítés alatt, mikor dolgozik, mikor van vizsgálaton), gondolom ugyanúgy makróval megoldható ez is. Itt inkább az üzemtani oldala érdekes, nem is az ábrázolás (bár a végén _Nyúlván majd az fog számítani), de az meg külön "szakma" (inkább egyetemi képzésnek mondanám).
Nem vagyok benne biztos, hogy Excelben kell ezt megoldani, de talán itt lesz valaki, aki útbagazít.;)
LP feladat megoldásában és a végsõ diagramm (folyamat, emberek és gépek terheltsége, valamint a készletek alakulása) felrajzolásában kérnék egy kis segítséget.
A képen zanzásítva vannak az adatok, a számadatok percekben illetve db-ban vannak megadva:
Az elsõ problémám az, hogy bár két ember kezel 3+2 gépet ötféle terméket gyártva, csak az elõkészítés és anyagbetöltés idejére vannak a gépekhez kötve, a kész terméket a gépekbõl már az veszi ki, aki éppen ráér.
Valamint minden gépnél minden harmadik ciklus után karbantartást kell végezni, a gép karbantartását szintén az végzi el, aki ráér, 2 perc emberi munka után a gépeknek van egy egységes 7 perces öntisztító folyamata. (Ténylegesen 9 perces folyamat, de csak az elsõ két percben kell embernek ott lennie)
A második problémám az, hogy az emberek és gépek napi 16 órában dolgoznak 6-22 között, fél óránkénti gyártási kötelezettségük van, ezt mutatják az alsó táblázatban a min. és max. értékek. Viszont a C terméknek-gépnek az elsõ emberrel 11-13 és 19-22 között magasabb az óránkénti gyártási kötelezettsége.
A kérdésem az, hogy milyen programmal tudom a feladatot megoldani, és milyen programmal tudom a terhelési diagrammokat ábrázolni?
Excelben meg tudnám oldani, ha az emberek folyamatosan adott gépekhez lennének rendelve, de ez csak az anyag betöltéséig, illetve a gép munkavégzéséig igaz.
Utána már keveredés van, nem beszélve a karbantartási holtidõkrõl.
Kézzel nekiálltam a diagrammoknak, de csak az elsõ óráig jutottam, és az alapján úgy látszik, hogy az elsõ ember az szinte folyamatosan dolgozik, míg a másodiknak közel fél órás szabaideje van, így késõbb neki kell a gépek karbantartását végezni.
Két erõs kötelezettség van: 1. Az elõkészület (1p) bepakolás és gép indítás között nem lehet szünet egyetlen gépnél sem 2. A gép leállásakor azonnal ki kell pakolni a készterméket (1p)
Az induló diagramm nálam így néz ki:
1. ember C-nél 1+3p munka, innentõl 3.gép 15p munka 1. ember B-nél 1+2p munka, innentõl 2.gép 6p munka 1. ember A-nál 1+1p munka, innentõl 1.gép 4p munka 1. ember 4 perc szünet
2. ember D-nél 1+3p munka, innentõl 4.gép 7p munka 2. ember E-nél 1+1p munka, innentõl 5.gép 4p munka 2. ember 4 perc szünet 2. ember 1p 4-es gépbõl kipakol 2. ember 1p 5-ös gépbõl kipakol 2. ember 1 perc kényszerszünet, mert elsõ gond: A és B gép egyszerre van készen
1.ember 1p A gépbõl kipakol 2.ember 1p B gépbõl kipakol
Tehát 14p eltelt, 1, 2, 4, 5 gépek elsõ ciklusa lezárult, termékek kipakolva, míg 3. gép még dolgozik.
Tovább nem írom, csak érzékeltetni akartam, hogy olyan diagrammra van szüségem, ami mutatja a folyamatokat percekben, valamint azt, hogy a két ember és az öt gép mikor dolgozott, mikor várakozott, és ráadásul azt is, hogy az öt termék készlete hogyan alakult, mikor történtek a készletnövekedések. (Az a feltételezés, hogy legkésõbb minden 60. percben nullára csökken a készlet, de gyártási kötelezettség csak a 61. perctõl van.)
Az értékek beillesztése parancsot be lehet tenni a gyorselérési eszköztárba. A Ctrl+C után automatikusan megjelenik. Már csak arra kell megtanítani a delikvenseket, hogy azt használják egérrel rámutatva és ne a Ctrl+V-t.
Más: a makrót lehet még tovább finomítani, hogy csak a kijelölés látható celláiba menjen a beillesztés. Persze ehhez azért tudni kell, hogy pl. eredetileg mi lehet a Ctrl+C eredménye a weblapról, hány cellára való érték, stb.
Na és persze le is lehet tiltani a Ctrl+V billentyűt (pl. egy üres makróval, esetleg egy "rákiáltással"), hogy ne működjön az Excelben, akkor kénytelenek az egeret használni.
Pl:
Sub tiltV() If Application.CutCopyMode Then MsgBox "Ne használd! Ott a gyorselérési eszköztár érték beillesztése!", vbCritical End If End Sub
Eredetileg csak egy általános kérdésnek szántam, hátha tudtok rá egy beállítást, hogy ne kelljen mindenkinek 1000x elmondani, hogy "irányított beillesztés/érték". Például van olyan védett táblázatom, hogy ha weboldalról illeszti be a rendelési kódot, úgy elrontja a képleteket, hogy ki se tudja törölni a védelem miatt. De mivel ez a munkafolyamatuk rész nem állhatok ott minden partnernél, hogy ellenőrizzem a beillesztéseiket.
És mi lenne, ha egy másik helyre másolnák be az adatokat, ahonnan te valahogy a megfelelő módon a végleges helyére teszed? Erre már elsőre is gondoltam, csak lett másik megoldás, azért nem írtam.
Sajnos ennek a megoldásnak is van egy hibája, mégpedig az ami általában a makróknak is, hogy nem vonható vissza.
Mondjuk egy szűrt listába több cellából álló kimásolás beillesztése visszafordíthatatlan károkat okozhat. Rejtett sorokba is beilleszt, ezzel felülírva az adatokat.
Mérlegelnem kell, hogy a szabályok sérthetetlensége vagy az adatok biztonsága a fontosabb. Azt nem igazán értem, hogy az Excelben a ctrl+v miért nem a legegyszerűbb, érték beillesztés és minden komplikáltabb megoldás a menüből van?
Off: Az én egykori szakmámban (kertészmérnök 1977) a talajtan kutatóiról volt egy pletyka, hogy szerintük a talaj egy gyönyörű homogén közeg, nagyon jól érthető, tanulmányozható, csak az a fránya gyökér ne lenne benne, ami megzavarja a tökéletes rendszert:-)
Nekem a personalban van egy ilyen érték-beillesztőm, de nem Ctrl+v-re, hanem Ctrl+e-re fut. Az e-hez tudtommal nincs hozzárendelve eredeti funkció, és könnyű megjegyezni (e=érték).
Kicsit változtattam a makrón, így csak az adott munkafüzetben lesz érték beillesztő hatása:
Sub ertekbe() If ActiveWorkbook.Name = "Füzeted neve" Then ' ide írd annak a munkafüzetnek a nevét, ahol érvényesíteni szeretnéd Selection.PasteSpecial Paste:=xlPasteValues Else Selection.PasteSpecial Paste:=xlPasteAll End If Application.CutCopyMode = False End Sub
Az End Sub előtti sor megszünteti a másolás kijelölését.
Én ezt magamnak csináltam, de adott esetben egy júzernek is meg tudnám mondani, hogy az érték beillesztéshez ezt használja. Ha nem képes rá, az meg már az ő baja. Szerintem jobb megoldás, mint felülírni a Ctrl-v-t.
Hozzárendeltem a ctrl+v-hez az érték makrót, de létezik, hogy párhuzamosan egy másik excelban ctrl-v-nél hibát okoz? Ha nyitva van a fájl, akkor ez a makró mindegyik excelben működik?
Amatőr technikámmal én csinálnék egy segédoszlopot amit feltöltök a kívánt ismétlődéssel, mondjuk 1 0 0 0 0 0 0 0 0 0 1. Aztán az 1-re szűrnék, és formáznám.
Rendszeresen visszatérő probléma, hogy a felhasználók nem megfelelően illesztik be a kimásolt adataikat és ezzel különböző formátumokat, vagy éppen egy szabályt is átmásolnak egy másik cellába. Lehet valahogy ez ellen védekezni, és csak az érték beillesztést engedélyezni a nem zárolt cellákban?
1016 és 43916 közötti értékekkel. Ezeket szeretném "éééé./hh/nn. (nnn)" ilyen formátumra hozni. Viszont sajnos a többi cellában is vannak olyan értékek, amik beleesnek ebbe a kritériumba. Nekem pedig csak az A2; A12; A22; A32... A9432 cellák kellenének. Például az A25 cellában levő 8500 nem szeretném beletenni.
For sor = 12 To 9432 Step 10 If sor < 9432 Then szoveg = szoveg & "A" & sor & "," Else szoveg = szoveg & "A9432" Next Range(szoveg).Select End Sub
ha nem lenne a szoveg változó túl hosszú, 5549 karakter. A címek összefűzése helyett azt kellene megadnod, hogy mi legyen ezekben a cellákban, pl. Range("A" & sor).Interior.ColorIndex = 3
Csináltam egy egyszerű mintát. Persze ez nem a kész feladatmegoldás. Egyetlen tanár, egyetlen diáknak kiadandó tételekkel mutatja be a működést. Megadod a tanár nevét, és a program ad 1-1 tételt a kalapokból, illetve kettőt a 3. kalapból. Mivel az Excel interaktivitása nem az igazi, ezért a kalapokból kiválasztott tételek sorszámát és nevét nem a képernyőre, hanem a 40-41. sorba írja ki. A mintaprogram itt van: https://drive.google.com/open?id=1nzvWOYlzuxotDR2i9RvwhlWzkvb_c3pM
Azért, hogy a tesztelgetés során ne kelljen mindig újraírni az adott tanár munkalapját, a program a teszt idején készít róla egy másolatot, és abban dolgozik.
Ha ez az irány megfelelő, akkor folytathatjuk azzal, hogy a program visszatér a gombjaidhoz, ott lehet majd másik tanárt választani. És persze az újabb diákot is ki kell tudni választani. És adminisztrálni, hogy éppen hol tartunk. Ez is a program dolga. Aztán meg kell oldani, hogy a diák megkapja a tételeit. Ehhez ki kellene nyomtatni a tétellistáját. Persze ennek is lehetnek technikai nehézségei.
"...akkor most itt mindig manuálisan kell az utsó cellát a megüresedett cella helyére másolnom?" Jaj dehogy! Az első kérdéseben azt olvastam, hogy tudsz makrót írni: "...csináltam egy gombot és hozzá egy makrót is, hogy a hallgató arra kattintva megkapja az új random számokat"
Az egész feladatot makróval képzelem el.
1. Valahogy úgy, hogy a random számot generálod először 1 és 30 között, de úgy, hogy a felső határt (30) a 4. sorból olvassa a program. Aztán a kapott random számhoz az én mintám szerint hozzáadsz 6-ot, mert hogy az adatok a 7. sorban kezdődnek. ez lesz a kiválasztott tétel adatait tartalmazó sor.
2. Ez alapján megkapja a hallgató az adott tételt. Ha mondjuk a random szám 5 volt, akkor a sor száma 6+5 =11, tehát az ebben a sorban lévő tételt.
3. Aztán a 4. sorban lévő szám + 6. sorban lévő tétel adatokat (az első alkalommal ez a 36. sor) átmásolod a 11. sorba, majd a 4. sorban lévő tételszámot csökkenti a program: aktlap.cells(4,1)=aktlap.cells(4,1)-1.
Ha jön a következő diák ugyanehhez a tanárhoz, akkor az első kalap random számát 1-től az aktlap.cells(4,1) között generálod az 1. pont szerint, (ami most már 29) majd folytatod a 2. és 3. pont szerint.
Ha akarod, este csinálok mintaprogramot a fenti eljárásra, de azért a teljes feladatot az sem oldja meg. Például nem ártana, ha a tanár a saját nevének megadása után a diák nevét is listából választaná, sőt naplózná a tanár munkalapján, hogy melyik diák melyik tételt kapta. Meg a diáknak nem csak sorszámot adna, hanem a tétel sorszámát és címét (esetleg mind a 4 kalapból kivettet) ki is nyomtatná neki.
Köszi az excelt, nagyjából értem is mi lenne a gondolat menet.
De akkor most itt mindig manuálisan kell az utsó cellát a megüresedett cella helyére másolnom?
És ezt követően a random szám generálást, hogyan végezzem el, hogy már csak ennyivel kevesebb számból generáljon. Mert ha az elején megadom a véletlen szám generáláskor, hogy 1-30 ig generáljon, utána ahogy csökken a lista egyes kalapokban, úgy kellene a generálás tartományának is csökkennie. Ezt hogy kell megadni, milyen kóddal?
Köszönöm Jimmy the Hand-nek is segítséget és a problémámra fordított energiát, de Sánta Kutya makrója nekem talitalálat. A mostani tudásommal ezt nem tudtam volna megírni.
Beépítettem a táblázatba ebben a formában =HAHIBA(NEM(szlaell($B3:$C3));HAMIS)
- így a szabály tökéletesen figyeli az elírást,
- amíg nincs beírva a két adat nem jelez,
- új partnert figyelmen kívül hagyja
- akinek 2,3 formátuma van | vagy jellel elválasztva felsorolom őket
Néhány ponton egyetértek, más pontokon nem feltétlenül. Mindenesetre eszembe nem jutott volna ezzel a megoldással előjönni, ha nincs az a kikötés, hogy makró nélkül kellene. Makró nélkül viszont sajna ez a legjobb, amit ki tudtam találni.
A 4. ponthoz:
A VÁLASZT függvény (második és azt követő) argumentumaiként kell felsorolni a kiértékelő képletek mindegyikét, és ezek közül az lesz kiszámolva, amit az első paraméter meghatároz. Ha az első paraméter (ami egy FKERES) értéke 1, akkor a 2. paraméterként megadott függvény/képlet eredménye lesz a végeredmény. Ha az 1. paraméter értéke 2, akkor a 3. paraméterként megadott képletet számolja ki. És így tovább. Ha ez nem válasz a kérdésedre, akkor nem értem a kérdést :-)
Szerintem túlbonyolítod. Nem kell semmit másolgatni, és ehhez nem kell külön gomb sem. Egyetlen dolgot kell másolni, a random kihúzott tétel sorszám és név helyére az aktuális utolsó tételt kell bemásolni. Gomb pedig elegendő ahhoz, hogy a diák kiválassza a tanárt vagy fordítva, a tanár kiválassza saját magát (az ő nevére szóló munkalapot), és elindítsa a tétel kiadást a soron következő diáknak.
A tételeket tartalmazó munkalapot előre el kell készíteni. A munkalapon kalaponként a tételek sorszámával feltöltve, mellette azok neveivel (elvileg még ez is elhagyható külön tétellistával, de az bonyolítaná a programot). És mivel - ha jól értettelek - a tanárok ugyanabból a tétellistából dolgoznak, elég ha az első tanár munkalapját elkészíted, és aztán csak másolatokat készítesz erről a munkalapról a következő tanárok nevével.
Körülbelül ezt írtam le a 33703. hozzászólásomban, de hogy érthetőbb készítettem egy modell Excel munkafüzetet. Az ott leírt eljárás alapján szerintem könnyen elkészíthető a tételeket kiosztó algoritmus. Szükség esetén segítek.
Bocsánat, nem szoktam itt a magam lovát dicsérni vagy másét leszólni, de ez nekem több okból sem tetszik.
1. A produkciós munkalapon összekeverednek az éles adatok a technikai segédadatokkal. Ez logikai hiba. (Piszkos kód.)
2. A képletek ismétlődnek. Ez redundancia. Habár a táblázatkezelésben nem szokták ezt a szót használni, de ez denormalizálás.
3. A VÁLASZT függvény szerintem gyakorlatilag kezelhetetlen lesz, erre te is utaltál, plusz nehezebb új mintával bővíteni a listát, mint az én megoldásomnál, ahol csak egy új sor egy munkalapon.
4. Nem tudok, milyen képletekre gondolsz, amiket a VÁLASZT beírhatna. Zdomiter függvényeket akart végrehajtani. Egy olyan képlet, ami se nem függvény, se nem reguláris kifejezés, biztos, hogy sokkal gyengébb ellenőrzést tud megvalósítani, a reguláris kifejezéssel egészen pontos illeszkedések ellenőrizhetők. (Az enyémből is igaz/hamis lesz.)
Különböző pontossággal lehet megadni a reguláris kifejezéseket attól függően, hogy mekkora hibát engedünk meg, mennyire pontosan ismerjük a minta szerkezetét.
A ^és a $ az elejét és a végét jelöli, hogy több ne legyen.
Tehát ha az elejéről lehagyod a ^jelet, akkor bármilyen karakterek lehetnek az 5 számjegy előtt.
Ha nincs nullával felöltve, akkor szerintem csökken. Ezt így kezelheted: \d{2,5} (llegalább 2, de egfeljebb 5 számjegy).
Én telephelyenként külön azonosítót adnék meg, ha kezelhető a mennyiség. Az azonosítók tetszőlegesek, tehát lehet XX Kft. 1, XX Kft. 2 is, ami más célokra csoportosítható.
A reguláris kifejezésre vagy regexre keress rá, egy csomó helyen le vannak írva a szabályai, több, mint ami ide befér.
Az utolsót nem tudom fejből, nekem is kísérleteznem kellene. A VLOOKUP függvény kiértékelését kell kiemelni külön sorba, és lekezelni a hibát (talán egy on error goto?).
Csináltam egy próbát, mert nem bírtam ki, és működik! Nagyon szépen köszönöm. Majd most megpróbálom a program részeit értelmezni. Abban kérném még a segítségedet, hogy ezeket a formátumokat hogyan kell megadni (^d{5}/20dd$)? Mi ezeknek a neve, hogy keressem a leírását?
Egy pár kérdésem lenne még.
Van olyan számlaszám is, amelyik nincs nullával feltöltve, így növekszik a karakterek száma. Azt hogy lehetne megadni, vagy figyelmen kívül hagyni azt a részét?
Ha egy cég több formátumot használ a különböző telephelyein?
Egyszeri beszállítók számlaszámainak figyelmen kívül hagyása, ha nincs a listában, hogy ne kelljen mindig belenyúlni?
Makró nélkül esetleg a VÁLASZT függvénnyel lehetne megoldani. Ez a függvény egy kifejezés értékétől függően választ ki egy értéket vagy végrehajtandó műveletet az argumentumokban felsoroltak közül. Ebben az esetben így lehetne használni:
- Tegyük fel, hogy a számlákat tartalmazó munkalapon az A oszlop tartalmazza a számlaszámot, a B oszlop tartalmazza a számlakibocsátó azonosítóját, a C oszlop a számlaszám ellenőrző képletet -> ez utóbbi a VÁLASZT függvényes
- Egy külön munkalapon fel vannak sorolva a számlakibocsátók és mindegyiknek van egy sorszáma
- A VÁLASZT függvény első argumentuma lenne a számlakibocsátó sorszáma, amelyet FKERES függvénnyel lehet előállítani a B oszlop és a számlakibocsátók listája alapján
- A VÁLASZT függvény további argumentumai pedig a számlaszám-ellenőrző képletek ugyanabban a sorrendben, ahogy a számlakibocsátók vannak számozva
Példán:
A számlaadók (külön munkalapon) a következők:
SZÁMLAADÓ1 -> értéke 1
SZÁMLAADÓ2 -> értéke 2
SZÁMLAADÓ3 -> értéke 3
SZÁMLAADÓ4 -> értéke 4
Az ellenőrző függvényeid pl. így néznek ki:
= HA(SZLAADÓ1_FELTÉTELE(A1);IGAZ;HAMIS)
= HA(SZLAADÓ2_FELTÉTELE(A1);IGAZ;HAMIS)
= HA(SZLAADÓ3_FELTÉTELE(A1);IGAZ;HAMIS)
= HA(SZLAADÓ4_FELTÉTELE(A1);IGAZ;HAMIS)
Akkor a VÁLASZT függvényt így kellene paraméterezni:
1. paraméter: FKERES(B1;Számlaadók_listája;2;HAMIS) -> ez visszaadja a számlaadó sorszámát a B oszlop értéke alapján
Az viszont biztos, hogy ha a VÁLASZT függvény argumentumainak mindegyike képlet, akkor akkor a kiértékelő cella eredő képlete baromira bonyolult és átláthatatlan lesz, ezért szerintem a szerkesztéshez érdemes a képletvarázslót használni, mert ott az argumentumok soronként elkülönítve jelennek meg.
Át kellene néznem a nagy halom választ az eredeti kérdésedre, de ez túlhalad az én türelmemen. Inkább javaslok egy oldalt, ahol a már kiválasztott tételekkel szűkül az ezután választható tételek száma.
Az egyes tanárokat a hozzájuk tartozó tételekkel együtt külön lapon tárolnám.
És akkor ez kezeli a dátumot is, vagy mindennap kitakarítod?
És ott fogsz ülni egész nap, hogy ha fennakadás van a rendszerben, tudjanak hívni?
Én alsó hangon egy gombbal intézném a nyomtatást és a PDF-et, hogy ne lehessen a másodikat elfelejteni, és ezt a gombot a generáló munkalapra tenném, hogy ne kelljen váltogatni. Keresse meg a makró a másik munkalapot, és az persze legyen jelszóval levédve.
Ha betárolod két oszlopba a kisorsolt tételszámokat és az oktató azonosítóját, akkor egy újabb sorsoláskor a darabhatöbb függvény megmondja, volt-e már ilyen párosítás. Innentől programozási alapgyakorlat addig generálni, amíg nulla találat nem lesz. Ez egyszerűsíthető halmaz adattípus használatával:
Most sikerült csinálnom egy gombot, amire ha rákattintok átmásolja egy másik munkalapra a generált számokat. De mindig az első sorba másolja és felül írja az előzőt.
Amit írtál kódot azt is beleírtam de lehet hogy hibásan, és ezért nem megy.
Egy terem egy gép és az oktatók fogják kezelni az excelt.
Van egy munkalap, amin egy legördülő listából kiválasztja magát az oktató, ezt követően egy másik legördülő listából kiválasztja a hallgatót akit éppen behívott vizsgázni (a második listában csak azok a hallgatók vannak, akiket az adott oktatóhoz beosztottak [ezt meg tudtam oldani]). Ezt követően a hallgató kattint a sorsoló gombra, és a rendszer generál neki 5 számot.
Átmegyünk a másik munkalapra, ahol a vizsgalap van, annak megfelelő helyeire beíródik a tétel címe automatikusan (ez is meg van), itt van két gomb, az egyikkel nyomtatni, a másikkal pdfbe exportálni lehet a vizsgalapot.
Ennyi a dolga az oktatónak az excellel.
Csak a generátornak tudnia kellene, hogy mely számokat ne generálja le újra, mert az előző hallgatónak is pont azt generálta. Ennek kicsi a valószínűsége, de a tesztelés során előfordult többször is. Szeretném ha ezt ki tudnám küszöbölni, hogy ne kelljen azt mondani a hallgatónak, hogy nyomjon még egyet, mert ebből problémázni fognak.
Most még előre ki kell nyomtatni a hallgatóknak a vizsgalapot, és minden vizsganap reggelén irattartókból kikeresni.
Ez a tétel sorsoló excel fájl kellene hogy lehetővé tegye azt, hogy majd csak a helyszínen legyen kinyomtatva és pdf-ben elmentve a vizsgalap. Így könnyebb a későbbi visszakeresés.
Az a baj hogy a vizsgáztató oktatók között vannak olyanok is akik szinte teljesen inkompetensek az excelel, és emiatt kell automatizálni a rendszert. Ezért csináltam gombot makróval a nyomtatásra és pdf-b exportálásra, hogy csak rá kelljen kattintani és kész.
Vannak ötleteim a probléma megoldására, de mindegyikhez a vizsgáztatónak az excelben kellene beírni vmit, vagy ilyesmi. És erre egyes oktatók nem képesek, valamint hibázhatnak is.
Ha már azt meg tudnám, vagy abban tudnátok segíteni, hogy:
Egy cellából hogyan tudok másolni és beilleszteni csak az értéket, egy másik cellába, de mindezt úgy hogy a forrás cella mindig ugyanaz, amiből másolok, de a cél cella, ahova beillesztem mindig egy következő sorban lévő cella legyen. Ezáltal automatikusan tudnám kigyűjteni, hogy a generátor mely számokat adta már ki, és így talán tudnék feltételeket beletenni.
Bevallom töredelmesen, hogy vizsgáztattam már jó pár helyen (és jó sok éven át), meg magam sem kevésszer vizsgáztam, de ennyire nyakatekert rendszert még nem láttam.
Ha beszorul egy papír a nyomtatóba, megáll a vizsga?
"Valamint előfordult, hogy a hallgatónál maradt a tétel kártya (és nem hozta vissza, mert ha meg lett a vizsgája, akkor az intézet felé sem akart jönni többet)."
Az első bekezdésben leírt tapasztalatomra alapozva legyen szabad nem értenem. A vizsgáztató feladata begyűjteni a kártyát, ez nem olyan bonyolult.
Azt sem értem, hogy kerül bele a tétellista valami nyilvántartásba ettől a rendszertől. A vizsgázó először beírja a nevét?
Én kezdtem törni a fejem rajta (kezdve persze azon, hogy biztosan Excelben oldanám-e meg), de aztán arra jutottam, hogy így nem sok értelmét látom a feladatnak.
A tételek előkészítése és a nyilvántartás kevesebb munka, mint kinyomtatni és felvágni a kártyákat?
ott helyben nyomtatható a vizsgalapja a hallgatónak, és a vizsgáztatónak nem kell körmölnie. Plusz a hallgatónak is kinyomtatja a tételeket, hogy neki se kelljen egy tétel listából kimásolnia, majd csak ezt követően neki kezdeni a tétel kidolgozásához.
Jó, de ha már úgyis így megy, akkor mit kell még variálni? Miért nem elég az, hogy vagy a hallgató húz egy számot, amit aztán visszaad, és félretesznek, vagy véletlenszámot generálnak, aztán kikeresik a tételek listájából az adott számú tételt, és törlik onnan, miután (mindkét esetben) rámásolták a vizsgalapra a kérdést is? Ehhez elég az, hogy kezdetben minden oktatónak legyen egy másolata a tételek listájából, ami a vizsga folyamán szépen fogyogat.
Az a lényege a dolognak, hogy szinte minden félévben változik a tételek összetétele (hogy pontosan mi is tartozik az adott tételekhez). Eddig az a rendszer volt, hogy tétel kártyák voltak, melyre 3 nyelven kellet ráírni a tétel címét is röviden mi tartozik bele. Ezeket a tétel kártyákat szinte mindig újra kellet nyomtatni, vágni, ami sok munkát és energiát igényelt.
Valamint előfordult, hogy a hallgatónál maradt a tétel kártya (és nem hozta vissza, mert ha meg lett a vizsgája, akkor az intézet felé sem akart jönni többet).
Továbbá a hallgatóknak nyomtatunk egy vizsgalapot, amelyre a tételek címeit fel kell írni. Jelenleg az is könnyítene a dolgon hogy ezt automatikusan megcsinálja az excel, és ott helyben nyomtatható a vizsgalapja a hallgatónak, és a vizsgáztatónak nem kell körmölnie. Plusz a hallgatónak is kinyomtatja a tételeket, hogy neki se kelljen egy tétel listából kimásolnia, majd csak ezt követően neki kezdeni a tétel kidolgozásához. Így egy kis időt spórolva a vizsgáztatások során.
Csak hozzá teszem, egy félévben közel 1500 hallgató jön vizsgázni. (2 évfolyam 3 nyelven). És az adott napi vizsgára jelentkezett hallgatók vizsgalapjait egyszerűbb egy digitális rendszerben kikeresni, mint manuálisan egy irattartóból.
A generálásnál nem látja a hallgató a tételek címét csak egy számot. Majd egy másik munkalapon van a vizsgalapja, ahova a megfelelő helyekre kerülnek a címek, de ott már nincs lehetősége változtatni, csak nyomtatni.
Minden oktatónak van vizsgáztató asztala, ahol a hallgatók az oktatóval szemben ülve dolgozzák ki a tételeket, tehát nincs lehetőség másik tételt kidolgozni, mint amit kapott, vagy egymás közötti cserére. Ezt egyébként a vizsgalap is megakadályozza, ahol rögtön rajta van melyik tételeket kell az adott hallgatóknak elmondania.
Az alsó blokk értelemszerűen figyelmen kívül hagyandó, ez a fórum úgynevezett szoftverének a hülyesége, hogy amit bevágólapoztál, az ott is marad, hiába törlöd ki.
De legalább megtudtam, mi az az Útvonal p minden hozzászólás alján...
Ez a feladat most érdekelt, úgyhogy dolgoztam vele egy kicsit.
A függvény a következő:
Function szlaell(ByVal data As Range) ' When I tried this I got Compile error: User-defined type not defined. ' Go to Tools -> References -> Find & check the "Microsoft VBScript Regular Expressions" ' (1.0 or 5.5 both work for me). Application.Volatile Dim lista As Range Dim regex As New RegExp If data.Cells.Count <> 2 Then szlaell = data(0) ' Hibaüzenet lesz. Exit Function End If Set lista = ThisWorkbook.Worksheets("Kódok").Range("A:B") ' Ha nem találja a cégkódot, magától hibaüzenet lesz. regex.Pattern = Application.WorksheetFunction.VLookup(data(2).Value, lista, 2, False) szlaell = regex.Test(data(1)) End Function Az elején a kommentben van, hogy mit kell beállítani a VBA ablakban, hogy felismerje a regexp típust. Különben hibaüzenetet ad.
Van egy Kódok munkalapot, ahol pl. A4-ban ez van: XX Kft.
B3-ban:
^d{5}/20dd$
A fő munkalapodon A2-ben a számlaszám: 00123/2019
B2-ben a cégkód: XX Kft. (Bármi lehet, csak egyezzen a két lapon.)
C2-ben a függvény: =szlaell(A1:B1)
És la voilá!
Function szlaell(ByVal data As Range) ' When I tried this I got Compile error: User-defined type not defined. ' Go to Tools -> References -> Find & check the "Microsoft VBScript Regular Expressions" ' (1.0 or 5.5 both work for me). Application.Volatile Dim lista As Range Dim regex As New RegExp If data.Cells.Count <> 2 Then szlaell = data(0) ' Hibaüzenet lesz. Exit Function End If Set lista = ThisWorkbook.Worksheets("Kódok").Range("A:B") ' Ha nem találja a cégkódot, magától hibaüzenet lesz. regex.Pattern = Application.WorksheetFunction.VLookup(data(2).Value, lista, 2, False) szlaell = regex.Test(data(1)) End Function
Ennek mi a haszna? A tételhúzásnál csak papírokat lát (esetleg kalaponként más színűeket, hogy este a vizsgáztató könnyebben szétválassza), azon már nyugodtan rajta lehet a tétel sorszáma. Ha ez így nem lenne elég random, nem használnák mindenfelé vizsgáztatásra.
Én nem vagyok az a fickó, aki mindenre rögtön makrót ajánl, de erre igen.
Mégpedig azért, mert a VBA tud reguláris kifejezéseket kezelni, a grafikus felület meg nem.
Márpedig ezt a feladatot az isten is a reguláris kifejezések példagyűjteményébe teremtette.
Én úgy képzelem, hogy van véges sok partnercég, amikhez a makró egy elágazást rendel. De magát a reguláris kifejezést akár szövegként is lehetne tárolni egy munkalapon, hogy könnyebb legyen bővíteni. Az A oszlopban a partner kódja, a B oszlopban a regex.
A számlák mellett pedig egy felhasználói függvény (UDF) lenne, aminek az egyik paramétere a partnerkód, a másik a számlaszám. Ez kiírná, hogy OK vagy hibás.
Amit te akarsz, hogy függvényt paraméterként használni, azt csak programnyelvek tudják.
És egy oktató egész nap azt ellenőrzi, hogy a hallgató valóban azokat a tételeket dolgozza ki, amiket kisorsolt, és csak egyszer nyomta meg a gombot, nem addig nyomkodta, amíg tetszetős címek jöttek ki?
Elég faramuci megoldás.
Én letennék minden oktató elé kalaponként egy csomó sorszámot, mint az érettségin, és a vizsgázó kihúzná. Nincs benne elektronika, de sokkal kevesebb munka, és ugyanazt tudja. Vagy félreértettem valamit, és tud valamit ez a hipersorsoló rendszer, amit a tételhúzás nem? Megéri a munkát?
Ez egy amatőr táblázat a beszállítók számláinak kezelésére. A makrók programozásához még nem nagyon értek. Korábban azt úgy csináltam, hogy felvettem a szűrési folyamatot és kitettem rá egy gombot. A szűrés lényege nagyjából az volt, hogy sorrendbe tegye lejárat szerint a számlákat és kiszűrje belőle a kompenzálós cégeket. De ezek a beszerzési folyamatok azóta megváltoztak, így erre már nincs is akkora szükség.
Nyuszival egyetértve javaslom, hogy minden tanár tételei legyenek külön munkalapon. A munkalap neve akár a tanár neve is lehet "Gipsz Jakab", "Diáknyúzó Péter" stb. Ha jól értem, akkor a munkalapok lehetnek teljesen azonos szerkezetűek, ha ugyanabból a tárgyból, ugyanazokból a tételekből vizsgáznak a diákok.
Amikor a diák kiválasztja a tanárt, akkor a program kiválasztja munkalapot, majd ugyanazt végzi.
Dim aktlap As Worksheet
Aztán ha a diák kiválasztotta a tanárt, akkor:
...
Set aktlap = ThisWorkbook.Worksheets("Diáknyúzó Péter")
És innentől kezdve a program nem kell, hogy "tudja", hogy hol dolgozik, meg hogy ki a tanár, csak minden parancsban az aktlap-ra hivatkozz. Aztán ha új diák jön, akkor kiválasztja a tanárt, majd a Set aktlap = .... paranccsal az ő munkalapjára állítja a feladatot. Csak soha ne felejtsd el a hivatkozást: A cells(sor, oszlop) helyett aktlap.cells(sor, oszlop), illetve a Range ("A1") helyett aktlap.Range("A1") stb.
Ami pedig a véletlenszám szerinti kiválasztást illeti, én úgy oldanám meg, hogy az adott munkalap 4 oszlopában felsorolnám a számokat. Mondjuk az A oszlopban az 1. kalap szerint 1-30-ig kerülnének a számok, a B és C oszlopba 1-22-ig stb.
Amikor pedig a program kioszt egy tételt, akkor az első kalapban az induló utolsó szám a 30, amivel a véletlenszámot 1-30 közt generálod. De ez nem az értéke, hanem a helye!!! Az első lépésben persze ez ugyanaz. Azután az utolsó számot (30) kimásolod és beteszed a kihúzott szám helyére. Az utolsó számot pedig 29-re csökkented. (Ezt a számot érdemes valahol a munkalapon tárolni, hogy ne legyen bonyolult megtalálni).
Ha megint ki kell adni egy tételt, akkor már a megmaradó 29 sorszámból keresel egyet, az utolsót a helyére másolod, csökkented, és így tovább.
" Egy makrós rendezést már ki kellett vennem, mert nagyon belassította a rendszert." Na ne már, hogy egy makrós rendezés lassítson. Milyen elven írtad? Csak nem buborékrendezéssel?
Ha megírod, hogy hol találhatók a rendezendő adatok (oszlop neve, sorok száma tól-ig - gondolom, nem soronként vannak az adatok), akkor küldök egy makrót (quicksort), ami bináris technikával működik, és pillanatok alatt rendez nagyon nagy tömböt is. Ha már az Excel fenn van a gépen, nem lehet a gép olyan gyenge, hogy akadálya legyen a futtatásnak.
Nem túl erős gépen fut és nagy méretű táblázatról van szó. Egy makrós rendezést már ki kellett vennem, mert nagyon belassította a rendszert. Ismétlődések, lejáratok figyelmeztetése már szépen működnek szabályokból. Ez egy további védelem lenne, mert az ismétlődés nem jelezhető, ha elírás van benne. Az egyik ilyen gyakori hiba a nullák száma elírás, de ezt a HOSSZ vizsgálattal egyszerűen meg tudom tenni, mert ott csak a számokat kell külön tárolnom. A formátum vizsgálat csak precízebb lett volna, de ez is több a semminél.
A szövegként tárolást próbáltam, de nem működik, mert az FKERES is csak szövegként adja vissza. Ha ezt egy függvény bekapcsolná, az tuti lenne, de a FÜGGVÉNYSZÖVEG pont fordítva működik. A HA nem megoldás, mert 70 körüli partnerről van szó, és az azonosságok eltávolítása után is maradna vagy 40 féle formátum. Az egészet egy szabályba építeném, ami egyből jelez a számlaszám elgépelésnél, ezért a makró nem jöhet szóba.
Ha szövegként tárolod el, az nem jó? (Cellaformázás, szöveg-re állítod, kilépsz, enter. Ekkor a cellában nem a képlet eredménye fog látszódni, hanem maga a képlet. - de ez nem biztos, hogy megoldja. A HA függvénynek van egymásba ágyazható maximuma (talán 8-at lehet), ha kevesebb fajta számlaszámot használsz, akkor érdemesebb szerintem azzal csinálni. Ha többet, akkor pedig makróval, ha így nem boldogulsz.
Kódot most tőlem nem fogsz kapni, de úgy érdemes, hogy egy másik munkalapra, amit a hallgató nem lát (mert nem is keres) mondjuk az A1-es cellától lefelé gyűjtögetni a kisorsolt tételeket. Van arra valami trükk, hogy hogyan tudsz egy tartomány legaljára ugrani makróval, arra érdemes rákeresni. Generálásnál pedig az a feladat, hogy az első üres celláig induljon el az A1-től lefelé, és mindegyik cella tartalmát hasonlítsa össze a kisorsolt számmal: Ha egyezik, generáljon új számot és kezdje elölről az összehasonlítást.
A Munka1-en vagy valahol pedig van egy másik gomb, amivel ezt a - nevezzük úgy - Munka2 munkalapot ki tudod üríteni. Mondjuk nap végén (elején), ebédszünetkor stb.
A több vizsgáztatós történet úgy nézne ki ahogyan leírtad. Egy terem egy gép egy fájl viszont több vizsgáztató, és valaki erre valaki arra megy kidolgozni.
Ehhez készítettem legördülő listás megoldást, az első listában a vizsgáztatókat lehet kiválasztani, majd a másiodik legördülő listában csak az aznapra hozzájuk beosztott hallgatókat lehet kiválasztani. Ezt követően a hallgató nyomja a gombot. Valahogy az is jó lehet-e, ha amit kikalkulált azt át másolja/gyűjtse ki egy másik táblázatba, majd a következő sorsolásnál figyelembe veszi azokat a számokat. Ezt meg lehet valahogy csinálni? Ha igen akkor hogy?
Hogyan tudok egy táblázatban függvényeket tárolni úgy, hogy egy másik munkalapon lennének egy feltétel által behívva. A táblázatban még nem kell működnie, csak ha másik munkalapon egy fkeres eredményül hozza.
A feladat a számlaszám helyességének ellenőrzése. Minden partner másmilyen számlaszám formátumot használ (00123/2019, 2019SZ0123 stb.), ezért azokat egy táblázatba gyűjteném, és írnék mindegyikre egy olyan függvényt, ami a számlaszám hosszát és a konstans elemeit vizsgálná. A fő táblázat segédoszlopában pedig egy fkeres az adott sorhoz, partnerhez tartozó ellenőrző függvényt keresné meg és helyettesítené be, hogy egy szabály ki tudja emelni a hibás vagy elütött számlaszámot.
Egy ponton akadok el, nem tudom a táblázatban összegyűjtött függvényeket a segédoszlopba átvinni. Valahogy úgy kéne, hogy a gyűjtő táblázatban még nem működjön a függvény csak amikor az fkeres áthozza a fő táblázatba. Ez lenne pl. az egyik.
=NEM(KÖZÉP(Táblázat1[@SZLASZÁM];5;2)="SZ") /ezt a függvényt szeretném átvinni
Inkább a klasszikus kockadobásnál (vagy dodekaéder-dobásnál vagy más ilyen ...-dobásnál maradnék). :)
(A valszámoknak sajnos pont az a lényege, hogy ha 0 és 1 között generálsz, akkor a várható értéke 0,5 kell legyen. Ezt úgy lehet torzítani, hogy gyűjtögeted egymás alatt cellákba a már kiadott tételeket és egy gombnyomásra ezeket törölni tudod, addig viszont azokat nem adja újra.
A több vizsgáztatós dolog hogy nézne ki? Egy fájlt futtatnak többen, több teremben? Vagy a tételhúzás egy gépen történik, csak valaki erre, valaki arra megy kidolgozni?
Egy egyetemi kurzus vizsgáztatásához készítenem kell egy random tétel sorsoló excelt, melyben a hallgató (diák) egy gomb nyomásra magának sorsolja ki a tételek számait.
Addig jutottam, hogy készítettem egy random szám generátort (kb ugyan az mint egy lottószám generátor), csináltam egy gombot és hozzá egy makrót is, hogy a hallgató arra kattintva megkapja az új random számokat.
Van egy másik munkalap, amelyeken a számokhoz tartozó tételek nevei szerepelnek. Összesen 4 különböző kalapból/témakörből kap tételt a hallgató, az egyes témakörök eltérő mennyiségű tételt tartalmaznak. (egészen pontosan: 1. kalap - 30 tételt; 2. és 3. kalap - 22 tételt; egyes hallgatóknak a 3-as kalapból kettőt kell húznia; 4. kalap - 32 tétel) Még ez is rendben van megoldottam.
DE most jön ahol elakadtam:
1. Egy napon egy időben egy vizsgáztatónál több hallgató is vizsgázik, és valahogy a random generátornak figyelembe kellene vennie, hogy aznap már melyik tételek kerültek kihúzásra, hogy azokat a következő hallgató már ne kaphassa. (Elkerülve azt, hogy amíg "A" hallgató éppen felel a tételéből és "B" hallgató ugyanazt kapta és leírja.)
2. Bonyolítsuk meg egy kicsit az 1. pontban leírtakat: Egy napon egy időben több vizsgáztató is vizsgáztat változó számú hallgatót, valahogy a random generátornak figyelembe kellene vennie, hogy aznap melyik vizsgáztatónál már melyik tételek kerültek kihúzásra. Ebben az esetben is érvényesülnie kell az 1. pontnak. Viszont ebben az esetben két vizsgáztatónál egy-egy hallgató kihúzhatja ugyanazt a tételt, mert a teremben egymástól hallótávolságon kívül ülnek le.
A segítségeteket és válaszaitokat előre is köszönöm.
Köszönöm a segítséget. Tökéletesnek tűnik, még tanulmányozom a működését, de biztos, hogy hasznos és elegáns megoldás a problémámra.
Közben próbálkoztam és úgy sikerült "automatikusan" kiterjeszteni a tartományt, hogy az eredetileg megadott tartomány közepébe új oszlopokat szúrtam be, majd az adatokat a megfelelő oszlopokba másoltam.
A kategóriák valószínűleg kompatibilitási probléma miatt nem frissültek automatikusan. A diagramok eredetileg a munkahelyi Office 2007-ben készültek, a hibát pedig az otthoni Office 2016-ban tapasztaltam.
Először is a szerződés számot nem ártana mindkét munkalapon azonos formában megadni, mert különben nem lehet párosítani. Aztán a termékeket is egyformán kellene jelölni - talán valami azonosító lenne jó a név helyett?
Elképzelhető, hogy szerződésszám+termék összefűzése lehetne a kulcs egy segédoszlopban. Ez alapján lehetne keresni.
Ezek után pedig az Index - Hol.Van függvény párost lehetne felhasználni a párosításhoz.
Nevezd el a tartományt úgy, hogy dinamikus legyen a név tartalma.
Például:
tartomány =ELTOLÁS(Munka1!$A$1;0;0;DARAB2(Munka1!$A$1:$A$100);DARAB2(Munka1!$A$1:$X$1))
Ez a név az A1 cellából kiindulva a tele sorokig és tele oszlopokig tartó cellákat foglalja magában.
A diagramnál pedig ezt a nevet - egyenlőségjel nélkül! - add meg adatforrásként. Sajnos azonnal át fogja alakítani konkrét címmé, tehát ezt a műveletet - mármint a név ismételt beírását - nem tudod megspórolni. Valami miatt nem érzékeli a név tartományának megváltozását :(.
Ez utóbbin még vizsgálódok egy kicsit, hogyan lehetne megoldani.
Igen, a forrásadatok 1 munkalapon vannak, egymás utáni oszlopokban a havi adatok. A diagram forrásának bővítését jelenleg úgy oldom meg, hogy az "Adatok kijelölése" menüpontban kézzel írom át. Ezt szeretném egyszerűbben megoldani.
"...biztosan az a forrásadat ahhoz a diagramhoz?"
Igen, hisz kijelöltem. Előzőleg csak kategóriaszámok voltak, ezt módosítottam kijelöléssel. Az "Adatok kijelölése" menüben meg is jelenik a módosítás, csak a diagramon nem.
Sziasztok! A következőkben van szükségem segítségre:
Adott egy Excel táblázat havi adatokkal, amelyek diagramokon vannak ábrázolva. Kombinált oszlop és vonaldiagramok 2 függőleges tengellyel. Ez a táblázat minden évben elkészül az aktuális adatokkal. A diagramok a diagram varázslóval készültek. A feladat, hogy egy-egy diagram ne csak az aktuális év adatait, hanem több év adatait mutassa, azaz lényegében "egymás mögé kell tenni" több év diagramjait. Hogyan lehet módosítani a diagramon ábrázolt adattartományt viszonylag egyszerűen és gyorsan?
Eddig hasonló esetben az "Adatok kijelölése" menüpontban módosítottam a hivatkozott trartomány oszlop vagy sorszámát, de most 20 db diagramról van szó és a későbbiekben rendszeresen el kell végezni a módosítást.
Másik problámám, hogy a diagramok vízszintes (kategória) tengely feliratainak forrás-sorát módosítottam kategóriaszámról (1,2,3...) egy kijelölt tartományra az "Adatok kijelölése" ablakban, azonban a módosítás nem megy át a diagramra. Mi lehet az oka, ill. a megoldás?
Sziasztok. Adott egx excel táblázat amely cellájában nem magyar nyelvű a szöveg. Láttam olyan táblázatot ahol az excel a táblázat mellett egy ablakban a google translatort használva lefordítja a kijelölt cella szövegét amelyet nekem má csak Ctrl c Ctrl v-nem kell. Tud ebbe valaki segíteni hogyan állíthatom be?
Köszönöm a hozzászólasokat,itt vagyok csak nem nézem minden nap...😉
A Darabteli függvény segített a leginkább.
Azt a cellát láthatatlanná tettem.Egy masikba meg kiíratom a külöbséget.
Amit fényképeztem az csak egy kis része az egésznek.
Nagyon összetett, de működik!
Csak mindig kitalálok hozzá valamit...😊
Ha a két dátum A1, illetve B1 ="Hónap: "&(B1-A1-MARADÉK(B1-A1;30))/30&"; hét: "&(B1-A1-13*30-MARADÉK(B1-A1-13*30;7))/7&"; nap: "&B1-A1-(B1-A1-MARADÉK(B1-A1;30))-((B1-A1)-13*30-MARADÉK((B1-A1)-13*30;7))
másodsorban szerintem egy ilyen feladatra a makró ágyúval verébre - megvannak a beépített eszközök.
A gond az, hogy sok esetben az excel szemléletű gondolkodás, vagy rendszerszintű gondolkodás hiányzik. Elképzelnek valamit, de tök máshogy kéne megcsinálni alapból az egészet.
(Mint pl casyke által telefonnal befotózgatott táblákat is)
van egy munkalap (ez az egy van), ezen vannak különböző dolgok, és az F37-ben az éves szabadság. Ebből kell csinálni 12 lapot, minden hónapnak egy, és ezek a lapok az előző hónap F37-ből veszik az értéküket. Makróval:
For a = 1 To 12 Sheets(Alap_nev).Copy After:=Sheets(a) ActiveSheet.Name = Mid(Str(a), 2) + "_" + ho_nev(a) Range("F37").Select If a = 1 Then elozo = Alap_nev Else elozo = Mid(Str(a - 1), 2) + "_" + ho_nev(a - 1) End If
ActiveCell.FormulaR1C1 = "='" + elozo + "'!RC[0]-COUNTIF(C[-3],""sz"")" Next a
Tényleg valamiféle nem látható karakter lehetett az azonosítókban. Töröltem az "ugráló" sorok azonosító celláinak tartalmát, majd újra beírtam. Rendezgettem próbaképpen fel és alá és szépen a helyükön maradtak.
Nagyon szépen köszönöm mindenkinek a jó szándékot és segítséget!
Én ennek ellenére vagy azt csinálnám, hogy az azonosító csak szám legyen, és a cellaformázása legyen 0"/S", vagy egy keskenyített A oszlopban csak szám, és mellette a B-ben a "hivatalos" szám =a2&"/S" képlettel. Így ez semmiképpen nem tiszta, ha sorszámnak is használni akarjátok.
Ez a "vándorlás" a fizetési határidő szerinti rendezésnél van vagy az ismételt azonosító szerintinél?
Mert ha az utóbbi, akkor lehetséges, hogy az azonosító mezőben nem látható karakterek is vannak, pl előtte vagy utána szóköz, illetve "emelt szóköz", vagy aposztróf, ami nem látszik.
Szerintem érdemes megnézni, hogy pontos-e az azonosító.
Ha nem automatikusan képződik, akkor lehet benne elgépelés (még akkor is, ha épp nem úgy látszik :( ).
Félő, hogy nem ez a gond. Abban az oszlopban minden szám után van egy "/S". Azt jól rendezi, nem kerül előrébb a 10/S a 9/S-hez képest.
Konkrétan pl. az excel 3253-as sorából az adott tartalom (3086/S azonosító számú számla sora) elvándorol a táblázat végére és a 3253-as sorba a 3087/S számla sora kerül...
Ezek az oszlopaink ( saját azonosító | tipus | telj. dátum | fiz. határidő | cégnév | számlaszám... ) amik rögzítettek és azzal rendezünk. Nem jelölünk ki semmit
Az alábbi gondomra kérek szépen megoldási javaslatot:
Számláinkat Excelben ( is ) rögzítjük ( kb így néz ki : saját azonosító | tipus | telj. dátum | fiz. határidő | cégnév | számlaszám... )
Az alapértelmezett rendezési sorrend a saját azonosító ami egyesével növekvő "szám/S". Szépen töltögetjük ketten-hárman sorról sorra folyamatosan jelezve egymásnak a megnyitott bezárt állapotokat.
Az utóbbi napokban ha a fiz. határidő-re rendezünk ( hogy lássuk az aktuális kifizetendőeket ) majd vissza saját azonosítóra, akkor adott sorok egyre újabbakkal kiegészülve elmozognak a helyükről a tábla utolsó soraiba. Teljes sorok változatlan tartalommal és formázással. Visszapakolászom őket ( jelenleg 11 sor, megy pikk-pakk ) elmentem, jó. Megnyitom ( vagy valamelyikünk ) később, fiz. határidőre rendezzük elutalgatjuk amit el kell majd visszarendezzük saját azonosítóra és máris elugrálnak az említett sorok a tábla végére.
3000 feletti sorunk van és több fülünk.
Mi a szösz okozhatja?
Magyar Win7 Excel 2010
Magyar Win10 Excel 2017
Angol Win10 Excel 2019
Nincs 2 MB az Excel. Nincs benne kép, hivatkozás, makró... Faék egyszerű színes táblázat.
Szerintem nem úgy vezette be, bár ebben tévedhetek. Viszont - ha belegondolsz - a szabadságnapok száma életkortól meg egyéb speciális tényezőktől függ, tehát nem is lehet mindig állandó. Ha esetleg a jelenléti lap használatát ki akarják terjeszteni más dolgozókra is, akkor a 24 konstans érték már csak nagyon korlátozottan lesz érvényes. Amit Nyuszi mond, az is logikus, ugyanis a 24 nap egy teljes évre vonatkozó keret, amiből nyilván fogy-fogyogat, tehát a későbbi hónapok már nem 24-ről indulnak.
Illetve a kérdőhöz még annyit intéznék az előttem szólókon kívül, hogy - amennyiben ez a szabadságkeret és minden hónap másik munkalapon van - érdemes egy "áthozott szabadságok száma" cellát felvenni, és azzal dolgozni. Így minden munkalapon látszik, hogy honnan indultunk (hány szabadsága volt hónap elején) és mennyi maradt a hónap végére, így az esetleges gépelési hibák is felderíthetőek.
(Nálunk ugyanígy működik, csak fordítva, és a túlórákkal. :) )
Ha és amennyiben a 24 annyira konstans, hogy minden lehetséges esetet figyelembe véve, minden hónapban, mindig 24, sosem 25 vagy 23, akkor igen, lehet így is.
Ha jó értem, úgy képzelted el, hogy az F37-be beírsz egy konstans értéket, pl. 24-et, és az F37-ben lévő konstansnak kellene csökkennie minden egyes alkalommal, amikor a C oszlopba új Sz érték kerül.
Na ez nem fog menni képletekkel, mivel egy adott callában nem lehet egyszerre képlet is meg konstans is. Csak makróval lenne megoldható, és az elég komplikált lenne.
Ha viszont a kiindulási konstans (24) egy másik cellában van, akkor lehetséges az F37-be olyan képletet írni, amely a 24-ből és az Sz betűk számából kiszámítja a maradvány napokat. Itt valóban a DARABTELI függvény lesz a legjobb.
Van egy "Jelenléti ív" nevű táblázatom amiben megoldottam hogy a dátumok és a műszak betűjele kivételével minden automatizált legyen amit szerettem volna.Minden hónapra rendben is van csak át kell másolni másik lapra az előzőt és átdátumozni.
A lényeg az hogy a 3. azaz a C oszlopban található MÚSZAK betűjele ha SZ ami Szabadság és én ezt beírom akkor F37-en vonjon le egyet az adott 24-ből azaz január elsején 24 lesz beírva és automatice 23 legyen ha beírok egy Sz-t a C oszlopba. Ha megint beírok egy Sz-t akkor már csak 22-t mutasson stb. Pl. 3 hónap múlva ugyanígy... ha nincs változás átmásolja az adott értéket F37-en a következő lapra is ez nem gond.
Csak az hogy a beírás és az automatikus levonás milyen függvényt vagy trükköt rejt...2 hete agyalok rajta...Van kép is hogy el lehessen képzelni.Most ugye 0-n van az F37 mert már elfogyott a szabadságom idénre.de jövő évtől így szeretném hogy működjön!
Tehát...
F37 Alap 24 beírva.
minden egyes SZ betűnél egyet automatikusan levon,anélkül hogy én belenyúlnék.Aztán újra és újra minden Sz betűnél egyel kevesebbet mutasson.
Ha nem Sz betűt írok be a C oszlopba akkor természetesen nem csinál semmit F37-tel.
Ha kézzel csinálod, akkor sem a copy/paste az ideális ehhez, hanem a munkalap másolása: A lap neve felett jobb gomb, Áthelyezés, vagy másolásra kattintasz, majd a megjelenő ablakban alul pipa a "Legyen másolat" mellett, hogy ne törölje az eredetit, aztán fenn a melyik munkafüzetbe kérdés alatt kiválasztod a saját cél munkafüzetet (vagy ha még nincs, akkor egy új munkafüzetbe kéred).
Ez annyival jobb a Copy/Paste-nél, hogy a munkalapot az összes formázásával együtt másolja.
Ha igen, akkor csinálj egy ingyenes MySQL adatbázist, phpMyAdminban importáld a résztáblázatokat, és csinálj olyan lekérdezést, amilyet akarsz.. A következő lépés az importálás automatizálása szoftverrel.
Viszont ha szeretsz jó sokat dolgozni és minden buktatót megkeresni, hogy leküzdhesd őket, akkor folytasd Excelben. A feladat ordít az adatbázisért.
Egy makró az adott/tallózható ktárban található xlseket egyesével képes háttérben nyitni/zárniQ, majd azok munkalapjain végigmenni és megtalálni a megfelelőt. Majd ezeket egyetlen mf-be másolni. Ehhez kötött szabályok kellenek. Mint munkalapnév, ami pl a hónapot azonosítja,, táblázat felépítése, fájlnév esetleg....
Pl. képzeljük el hogy városonként sportklubok 1-1 excel fájlban, havonta külön munkalapon vagy táblán vezetik a foci eredményeket. Én meg olyat akarok, hogy mondjuk ezekből a fájlokból csak a júniusi eredmények tábláit akarom városonként beimportálni a saját xlsx fájlomba...
De. Ha a táblázat első sora kell, akkor azt formázni "tabla_elso_sor" stílussal. Az élőfejbe ezt felvenni. Ha bármelyik sor, amelyik az adott oldalon az első, akkor a táblázatnak (amúgy is célszerű stílussal formázni!) a stílusa kerüljön a fejlécbe.
Lehet, hogy én értettem félre a kérdést, de a bemásolt példából nekem ez jött le:
...
2. Megfigyelessel kapcsolatos informaciok (2. Föcim) <-- Megvaltozik a felsö resz tehat nem statikus hanem dinamikusak a sor szövegei
1.1 alcim
1.2 alcim
1.3 alcim
1.4 alcim <-- (Itt a problema, mert az 1. föcimet fogom latni holott en mar a masodikat szeretnem a lap tetejen latni
"tehat nem statikus hanem dinamikusak a sor szövegei" És ezt úgy értelmeztem (különösen, mert Excel nyomtatásról volt szó), hogy a kérdező nem a Word Címsor1 értelmében használta a "Főcím" kifejezést, mert az csak a megjelenítési stílust jelentené), hanem úgy, hogy az új lapon azt szeretné az első sorban (vagy a lap tetején) látni, hogy "2. Megfigyelessel kapcsolatos informaciok", aztán ha a következő fejezethez elér, akkor az ott lévő "3.xxxx") szöveg kerüljön a lap tetejére és így tovább.
És erre mondtam, hogy ismereteim szerint erre nincs megoldás.
Ez világos, de én úgy olvastam a kérdező 33623 számú hozzászólásában a feladatot, hogy a Excel táblázat laponkénti első sorában olyan valami szerepeljen, amit a táblázatnak az adott lapra került (kerülő) sora tartalmaz.
És ha azt javasoljuk, hogy tegye át Wordbe, és élőfejbe tegye, a szükséges információt, akkor sem tudja megoldani, hogy az épp nyomtatott táblázatnak az adott lapra került (kerülő) sorából kerüljön az információ az élőfejbe.
Szerintem ezt automatikusan nem tudod megcsinálni sem Excelben, sem Wordben. Arra mindkettőnél van lehetőség, hogy a táblázat legfelső sorát (fejléc) minden lapon ismételje meg. De olyan technika tudtommal nincs, hogy ez dinamikus legyen. Azaz, hogy egy képlet adja meg a fejlécsort, vagy Word esetén akár az élőfejbe írhass automatizáltan laponként mást. Utóbbi esetben a lapszám változhat laponként, de azt nem magából a táblázatból szedi.
Azt nem tudom, hogy valami makró ezt meg tudná-e ezt oldani. Én nem mernék vállalkozni a megírására.
Persze, érthető. Én csak azt nem értem, hogy miért kell ezt Excelben csinálni. Mert az Excel sok mindenre jó, de erre szerintem van jobb alkalmazás is.
Sziasztok, megoldható egy grafikonnál, hogy az összes adatpontot bejelölje? (Office 2010) Akárhogy kattintok rá, csak azok egy részét jelöli be. Ráadásul szeretném, ha a pontok megjelölését nem egy ilyen viszonylag nagy négyzettel oldaná meg, hanem valami diszkrétebb méretű formával. És ha mondjuk valamilyen színt is rendelhetnék hozzájuk.
Ezt írtam: hozzátartozó sor számának x-ed részét, nem a sorszámának (azaz a helyezésének a számát), hanem annak a sornak a számát, amiben az érték van - azaz amit a SOR() függvény ad vissza.
Ez pedig minden tétel esetében más, hiszen más-más sorban vannak.
Így nem kell a duplikációt sem ellenőrzni, hiszen nem lesz.
Az értékek nagyságrendjén múlik, hogy mivel lehet elkerülni az azonos értékeket. Én úgy szoktam, hogy a tételekhoz hozzáadom/vagy levonom a hozzátartozó sor számának x-ed részét, ami már elég nagy ahhoz, hogy eltérő legyen az érték, de elég kicsi, hogy a sorrendet ne zavarja.
Persze ezt egy segédoszlopban lehet megtenni és a Rank függvényt erre kell ráereszteni.
Ezeket a problémákat teljesen átérzem, a halványszürke betűkre való késztetés kivételével, amitől csak olvasni lesz nehezebb.
Ilyen helyzetben én is voltam, csináltam makrót és nyomógombot, hogy azzal végezzék a beszúrást. A munkafüzet jelszóval le volt védve a kézi beszúrás ellen, amit a makró fel tudott oldani, még valami primitív jelszótitkosítást is tettem bele. Onnantól a gomb azt csinálja, amit kell. Teljesen kizárni a felhasználói hülyeséget csak adatbázis-kezelőre való áttéréssel lehet, az Excel korlátaiba valahol bele fogunk ütközni.
Igazad van, de van olyan oszlopom ahol nincs az első sorban semmi. Nyilván, ha minden oszlop első sora (amit figyeltetek) ki lenne töltve, akkor a te megoldásod lenne az egyszerűbb és ésszerűbb.
Hülye biztosra kellett csinálni, mert a kollégák között nem mindenki keni-vágja az Excelt és nem akartam, hogy ha beszúrnak egy plusz oszlopot és nem töltik ki rendesen az első sorát, akkor levágja a végét a program.
Sajnos én is belefutottam pár hete a problémába....
Magyar nyelven használom az Excelt, ez van a cégnél ahol dolgozom. Dinamikusan frissülő listát hoztam létre a partnereinkből, ahol az utolsó cellát HOL.VAN függvénnyel kerestem meg, ahol a keresési érték "zzzzzzzz" volt. Ez szépen működött is, de pár hete dolgoztam a táblázatban és látom, hogy az utolsó partner nincs a listában, az ő neve ugyanis "Zs"-vel kezdődött. A problémát úgy oldottam fel, hogy most már két hol van függvényt használok, az egyik "zzzzzzzz"-re keres rá a másik pedig "zszszszszs"-re, majd a kettő értéke közül veszem a nagyobbikat. Nem tudom, hogy ez neked segít-e problémádban vagy sem.
Szerintem a fenti megoldás kiküszöböli a magyar és az angol nyelvű Excelek közötti átmenet problémáját.
Úgy mondanám, hogy valószínűleg. Ezt teszteléssel lehet eldönteni.
Mivel az angolban nincs CS betű, ezért értelemszerűen a cr után kell lennie a cs-nek, a magyar szabályok szerint viszont a cz után. A gép persze nem fogja felismerni a pácsót.
Ilyen esetekben én azzal kezdem, hogy végigmegyek az összes munkalapon és mindegyken nyomok egy Ctrl+End-et. Ha valamelyik munkalaponláthatóan az érvényes adatokon túli oszlopokra vagy sorokra ugrik a cella, akkor azokat ki kell jelölni majd törölni. A végén menteni a fájlt. Eddig ez még mindig segített. Néha használt tartománynak állítja be az üres cellákat is és ez jelentősen növeli a mentett méretet.
Ha az eddigiek nem nyernek, akkor azt is ki lehet próbálni, hogy LibreOffice Calc-ban megnyitod, aztán elmented más néven, de ugyanúgy MS Excel formátumban.
Viszont ezt csak akkor javaslom, ha adatokon és egyszerűbb képleteken kívül nincs semmi a munkafüzetben. A LibreOffice nem 100%-ban kompatibilis az Excellel, szóval itt felléphet adatvesztés, különösen ha olyan függvények vannak a képletekben, ami az Office újabb verzióiban jeletek meg.
Ezt még akár lehetne is ojvosolni. Ha csv-mentésen/visszaolvasáson keresztül készítesz egy másolatot a munkafüzetről, amely felépítésében teljesen azonos az eredetivel, csak a képletek hiányoznak, ezeknek a képleteknek az átmásolása az új munkafüzetbe makróval fél perc. Vagy akár kézzel, másolás -> irányított beillesztés -> képletek módszerrel is meg lehet próbálni.
Bár lehet, hogy olyan sok a képletes cella, hogy ez nem is megoldás számodra, a következőt próbálhatod még meg esetleg. Mivel a szűz fájlba másolást már írtad, hogy próbáltad, én ezt próbálnám meg még egyszer úgy, hogy a munkafüzet adatait nem közvetlenül egy másik excel munkafüzetbe másolnám, hanem közbeiktatnék egy txt fájlt a másolás sorába. Vagyis excelből másol, txt-be beilleszt. ott mindent kijelöl, másol, új excel munkafüzetbe beilleszt. Ha ezzel megvagy, akkor a képleteket kellene újra megcsinálni az új fájlban. Ezt (ha megoldható) úgy tenném, hogy csak 1 sorba másolnám be a képleteket a korábbi excel fájlból, majd másolnám az új fájlban auto kitöltéssel.
Nyilván nem magukban a GDPR-ral érintett adatokban van a hiba, szóval ha azokat kitörlöd, vagy xxxx-ekkel helyettesíted, szerintem a célnak úgy is megfelelne. De nem akarom erőltetni.
További ötletek:
1)
A lapokat egyenként átmásolod egy szűz munkafüzetbe, minden egyes lap átmásolása után csinálsz egy mentést, majd ellenőrzöd a mentés után a fájlméretet. Ha konkrétan valamelyik munkalap a hibás, akkor így esetleg be lehet lőni, hogy melyik az.
2)
Lefuttatod az alábbi makrót:
Sub teszt() With ThisWorkbook Debug.Print "BuiltinDocumentProperties", .BuiltinDocumentProperties.Count Debug.Print "Charts", .Charts.Count Debug.Print "Connections", .Connections.Count Debug.Print "CustomDocumentProperties", .CustomDocumentProperties.Count Debug.Print "CustomViews", .CustomViews.Count Debug.Print "CustomXMLParts", .CustomXMLParts.Count Debug.Print "DocumentInspectors", .DocumentInspectors.Count Debug.Print "Names", .Names.Count Debug.Print "PivotCaches", .PivotCaches.Count Debug.Print "PivotTables", .PivotTables.Count Debug.Print "Queries", .Queries.Count Debug.Print "Sheets", .Sheets.Count Debug.Print "TableStyles", .TableStyles.Count Debug.Print "XmlNamespaces", .XmlNamespaces.Count End With End Sub
Ez kilistáz bizonyos dokumentum-elemeket, és azok számát. Ha valahol extrém nagy számot látsz, az jelenthet valamit.
Különösen, ha pl. azt látod, hogy PivotCaches = 321, miközben tudod, hogy nincs pivot tábla a munkafüzetben.
Történt egy kis baleset és segítség kéne. Van egy Excel 2016 mf, ami több másikból importál adatokat. Mára az egyik forrás sérült "lett". Elmolyolt a javításon kb. 1 percig. Csak a formázás egy része tűnt el. A mf. csupa képlet, szöveg meg szám, nincs benne semmi kép vagy hasonló. Még grafikon sincs.
A gond az, hogy az addig 7-8MB-os fájl 105MB-osra nőtt a javítástól. Bármit teszek vele, ennyi marad. Próbáltam másolatot menteni róla, átmásolni egyesével a munkalapokat egy szűz fájlba (terület kijelöléssel, nem munkalapmásolással), illetve teljesen statikussá tenni, de csak akkor változott vissza 8MB-osra, amikor Excel Binary-ként mentettem. Ha ezután bezárom, megint megnyitom a binary-t és újra xlsx-ként mentem, megint 105 megás fájlt kapok. A lapok másolásával 109 megát, szóval az még ront is a dolgon. Régebbi verzióba nem menthetem.
Tudtok erre valami megoldást? Mármint azon kívül, hogy vegyem elő a backup-ot, mert azt felülírtam a 105 megás fájlal, mielőtt észrevettem volna a hibát :((
Pl. több HA függvény egybeágyazásával megoldható a feladat. A következő megoldásban feltételeztem, hogy ha BI vagy BK oszlop adott cellája üres, akkor üres a párban mellette lévő is (nincs vezetéknév, nincs keresztnév sem - ha ez nem lenne minden esetben igaz, akkor a képletet még ki kellene egészíteni.
=HA(ÉS(ÜRES(BI2);ÜRES(BK2));"";HA(ÜRES(BI2);BK2&" "&BL2;HA(ÜRES(BK2);BI2&" "&BJ2;BI2&" "&BJ2&" és "&BK2&" "&BL2)))
Sziasztok! Nekem is egy függvényes kérdésem volna.
BH2 cellába ez van írva: =ÖSSZEFŰZ(BI2;" ";BJ2;" és ";BK2;" ";BL2). Két vezeték és keresztnév összefűzését tartalmazza a képlet.
Ezt szeretném úgy alkalmazni, hogy ha a BI2 és BJ2 cellában nincs érték, akkor csak a BK2 és BL2 legyen összefűzve az és szó nélkül. Ha BK2 és BL2 cellák üresek, akkor csak a BI2 és BJ2 legyen összefűzve az és szó nélkül. Ha mind a négy cella üres, akkor a képletből az és szó se látszódjon, ahogy kitöltöm az oszlop celláit a függvénnyel.
Sziasztok! Segítséget szeretnék kérni. Milyen függvényt kell beírni pl. F2 cellába, ha azt szeretném, hogy H2 cella tartalmát másolja át, de ha H2 cella tartalma üres, vagy "nincs" szó szerepel benne, akkor helyette J2 cella tartalmát másolja be? Előre is köszönöm. (Természetesen nem kizárólag egy celláról van szó, ezt a függvényt az F oszlopban végig kell majd húzni.)
De a középső szakasz végső határa pontosan meghatározható, mert mindig egy W-vel kezdődik az utolsó szakasz. Akkor a középsőbe ezt pontosan be lehet építeni, hogy ha a W pl. a 48. karakter, akkor a középső 47-ig tartson, nem? Ezt le tudod írni?
A C oszlopban az A1, B2, B3 és B4 cellák tartalmának a hossza szerepel, a HOSSZ függvény segítségével. Mivel változó a szövegek szavainak hossza, nem lehet biztonságosan beállítani a 30 karakter hosszúságot, de megközelítő értékként megfelel.
Megoldást keresek a következőre: A1 cellába 60 karakter írható, de általában 40-50 van benne. Ezt szeretném képlettel vagy makróval valahogy 2 részre tagolni úgy, hogy B1-ben és B2-ben is csak max 30 karakter legyen (B1 az A1 első fele, B2 az A1 második fele). Egy sima BAL/KÖZÉP függvény azért nem megoldás, mert a változó helyre első szavakat nem szabad szétszedni, csak szóköznél lehet megbontani.
Tehát hogy tudom megtalálni a 30. karakter előtti első szóközt, és az az előtti részt tenni B1-be, a többit pedig B2-be?
Természetesen nagy mennyiségről van szó, csak leegyszerűsítettem.
Ezzel a felhasználói függvénnyel tedd át a hiperlink címeket a kívánt oszlopba:
Public Function HippiLink(Source As Range) As String HippiLink = Source.Hyperlinks(1).Address End Function
(A felhasználói függvényeket lehet a munkalapokon használni, pont úgy, mint a beépített függvényeket, csak ezek a függvényvarázslóban a felhasználói kategória alatt jelennek meg.)
Ha kész, akkor jelöld ki az így elkészített hiperlinkes cellákat, aztán futtasd le az alábbi makrót:
Public Sub HippiLinking() Dim Rng As Range, c As Range Set Rng = Selection For Each c In Rng.Cells c.Copy c.PasteSpecial xlPasteValues c.Parent.Hyperlinks.Add anchor:=c, Address:=c.Value Next End Sub
Az lenne a kérdésem, hogy lehetséges-e egyszerűbben, hogy excelen belül egymás alatt szereplő 750 szóról leszedni a rajtuk lévő linket egy másik oszlopba? Vagy kezdhetem a Ctrl + C Ctrl + V folyamatot egyesével?
Ez a probléma a Windows 10-el jött elő nálunk. A számlázó programunk a Windows alapértelmezett dátum formátumát használja és a Windows 10-ben minden pont után került egy szóköz is. Emiatt két sorba fért csak el a számlán a dátum.... Volt is egy kis fejvakarás az elején, de viszonylag hamar rájöttem a problémára....
A feladat kicsit hasonlít a jelenléti ív táblázatomra.
Ehhez van egy segédtábla, amiben le vannak tárolva az adott év extra pihenőnapjai és munkanapjai.
Gyakorlatilag én is úgy voltam mint te, meguntam a kézzel való vonalkázást a jelenléti íven, így digitalizáltam azt. De ezt még mindig lassúnak találtam, mert minden hónapban kézzel kellett módosítani a fix pihenőnapokat, hogy azok legyenek gyárilag is kihúzva.
Így makrósítottam az egészet. Ha tudok, akkor segítek a problémád megoldásában is.
Konkrét feladatleírás alapján esetleg lesz vállalkozó rá. De eddig még nem derült ki, hogy mit és hogyan kellene csinálni. Azaz milyen bemenő adatokból milyen kimenő állapotot kellene előállítani. Milyen kritériumok alapján kell pl. vonalazni....és mi a fenének(bocs)?
A címeket és távolságokat eleve fix segédtáblából vesszük, nem napi szintű km óra leolvasásból. Ez okozza a legkevesebb gondot.
A legtöbbet viszont az, hogy hónapról hónapra át kell alakítani a táblázat struktúráját és a dátumokhoz kapcsolódó keretezéseket.
Erre kérték a kollégák, hogy ezt nem tudná a gép magától csinálni?
(Ezzel az általam is sokszor tapasztalt területre tévedve, miszerint a szgép eleve dolgok automatizálására lett kitalálva, mégis sokszor csak manuális félmegoldásokat nyújt az IT ilyen vagy hasonló esetekre nézve...)
Útnyilvántartáshoz modernizálnám meglévő sémámat excelben, nem tudom hogyan volna ez lehetséges.
A cél: csak a piros kerettel jelölt mezőbe megadni a kezdő dátumot, s a többit a rekordokkal, keretezésekkel valamiképpen (persze helyesen) oldja meg a program.
Amint látszik, a hétvégék kihagyandóak és a pénteknél csak 2 sor szerepel mindig.
Habként a tortára, ha mondjuk ünnepnap van, vagy mondjuk bedolgozandó, hétvégére eső munkanap, azt valahogy még összehozni a legproblémamentesebben.
A sok manuális átszabást, toldozgatást és így a tévedés + újra javítgatás gyakori lehetőségét már eléggé unom, nem beszélve a kollégákról, akik épphogy értik mit hogy kéne a táblázatban kisakkozni.
1. Az alma nevű munkalapot helyezd át egy új munkafüzetbe és mentsd el valamilyen néven. Nem kell bezárni.
2. Az eredeti munkafüzetben az Adatok - Kapcsolatok - Hivatkozások menüpontban ott fogod találni a listában az előbb elmentett munkafüzetet. Válaszd a megszakítást és a megjelenő kérdésre erősítsd meg a megszakítást.
3. Az áthelyezett munkalapot a mentett munkafüzetből másold vissza az eredeti helyére. (Azért másolás, mert egy munkalapos füzetből nem lehet áthelyezni az egyetlen munkalapot.) Ezután törölheted a "segéd" munkafüzetet.
Táblázaton belül nem összefüggő tartományban elhelyezkedő, adott kifejezést tartalmazó képletek értékké alakításához szeretnék segítséget kérni. Pontosabban csak azon munkalapokra hivatkozott képleteket szeretném egy gombnyomással értékké alakítani, amelyek neve tartalmazza az „alma” kifejezést (=alma!E1).
Nálam például A:A tartományra van megadva a formázás, és ennek ellenére összeszemeteli a beszúrások hatására (ebben a táblázatban nem a végén van a bővítés, hanem a megfelelő helyre szúrok be sorokat).
Attól, hogy abszolút értékű címet mutat az érvényességi területre, még bővíti az Excel a formázást. Nézd meg a szabályok kezelés menüpontban, hogy milyen szabályt mutat a táblázat területére. Ha bővíted a táblázatot, automatikusan változik az érvényességi terület.
Egyébként szerintem pont elég lehet a táblázat neve is a terület megadására, a Munkalap!Táblázat kicsit érthetetlen számomra.
Először is, ebben az esetben elvesztem a táblázat könnyű bővíthetőségének az előnyét.
Másodszor ami nagyobb baj: minden beszúrásnál egy új formázási szabályt hoz lérte az exel így elveszek a sok feltételes formázási szabályban. Előbb kipróbáltam és pikk pakk 10 szabályom lett 1 helyett.
És mi van, ha nem alá írsz új sorokat, hanem beleveszed a táblázat alatti első üres sort a formázásba, és azelé szúrsz be új sorokat a bővítéskor? Én ha ilyet csinálok, egy szegélyvonallal is meg szoktam jelölni az üres sort, hogy lássam, meddig ér.
Feltételesen szeretnék formázni egy táblázatot (nem tartományt!!) úgy hogy a táblázat bővítésekor a feltételes formázás érvényességi területe is bővüljön. Mert most ha új sort veszek fel arra nem lesz érvényes a feltételes formázás.
Próbálkoztam az érvényességi területet beállítani így: " Munkalap!Táblázat " amit el is fogad elsőre de aztán rögtön átírja tartományra : " Munkalap!$A$3:$A$306 " és így már ha változik a táblázat területe a formázás nem változik vele.
És igazad van.... Pedig esküdni mertem volna rá, hogy amikor legutoljára néztem a képletkiértékelőt (aminek tegnap este nem jutott eszembe a neve), akkor mindkét oldalt kiszámolta.
Most a nem aktív oldalra tesz egy #HIÁNYZIK értéket és ezzel letudja. Az is lehet, hogy volt egy félresikerült frissítése a Microsoftnak, ami azt okozta, hogy mindent kiértékelt majd választott a feltételnek megfelelően. Rendszeresen frissítem az Officet és a Windowst is, így simán előfordulhat, hogy egyszer elrontották, majd utána javították.
Persze, ha a függvény varázslóval nézed a képletet, akkor természetes, hogy mindkét ágat mutatja neked. De alul az eredmény csak az ágnak megfelelően jelenik meg. "Élesben" ez nem így történik, nézd meg a Képletkiértékelőt, ahogyan az előbb írtam.
A HA függvény először a feltételt nézi meg és eldönti, hogy a feltétel hamis vagy igaz. Ezután pedig csak az egyik ágat hajtja végre - vagy a hamis vagy az igaz ágon levő utasításokat. Pont úgy, mind a VBA-ban az IF feltétel Then utasítások Else utasítások.
Tehát felesleges emiatt VBA-ban megírnod azt a függvényt, ami már működik az Excelben.
Nézd meg a végrehajtást a Képletek - Képletvizsgálat - Képletkiértékelő menüpontban, hogyan viselkedik a munkalap függvény.
Az alábbi táblázattal kapcsolatban kérnék tanácsot.
Hogyan oldható az meg, hogy a Bázis oszloptól indulva kizárólag az „X” jelöléssel kiválasztott oszlopok adatai kerüljenek csak bele a sorvégi összeadásba.
A R-es oszlopok száma a későbbiekben nőhet/csökkenhet.
Igen, de munkalapi cellából van meghívva a függvény, mert mint modul írtam meg.
Tehát B1 cella tartalma: =zacskok(A1; C:C....)
Gyakorlatilag egy sima szumhatöbb függvényt írtam, ami csak akkor fut le ha A1 szám és nagyobb mint 0.
És azért nem ha(A1>0;szumhatöbb(...);""), mert a függvény kiértékelésekor minden esetben kiszámolta az igaz és a hamis értéket is, majd választott a feltétel szerint egyet.
Azt viszont nem tudom, hogy ezt csak a lépésről-lépésre esetben csinálja így az Excel vagy "élesben" is.
Optimalizálni akarok excelben, ugyanis hiába van ha() függvénybe téve, mind az igaz, mind a hamis oldalt kiszámolja mielőtt kiadná az értéket, ami nekem annyira nem jó, mert sok adatot kell feldolgozni
Ezért írtam egy makrót, ami a következő:
A kellE egy stringkét átvett érték, ami lehet "" vagy szám, ha "", akkor kilép a függvény. Ezzel van optimalizálva, hogy a szumhatöbb ne fusson le feleslegesen.
A probléma pedig a következő, ha a datum1, datum2 nem string, hanem sima szám (mondjuk 2018), akkor szépen lefut a program, de ha beleteszem a nagyobb-kisebb jelet és a számot a feltételbe, akkor mindig 0 jön ki eredményként....
A "CDate" függvény tesztként van benn, de így sem működik.
Amit amúgy meg akarok valósítani: adott partner, adott időszak (adott év), adott termékből mennyit vett.
Bocsánatot kérek, vaksi voltam. Rögtön az első képernyőn ott van a kérdés a fájl eredetére. Csak amíg ez első fájlnál alapértelmezett a 65001 Unicode (UTF 8), addig a másodiknál valamiért a Windows (ANSI) az alapértelmezett (hangsúlyozom, ugyanabból a programból ugyanannak az állománynak a letöltéséből). És sajnos az Unicode keresését csak egy egész pici ablakban engedi az Excel, és semmilyen billentyűvel nem lehet a közelébe ugratni. De azért megoldható.
Előzetesen mentem, aztán az Adatok->Szövegből paranccsal olvasom be. Nem is tudnám másképp, mert a Google Groups csak így teszi lehetővé az exportálást.
Ezeket a csv-ket mindig lemented fájlba, mielőtt megnyitod Excellel? Vagy előfordul, hogy közvetlenül a böngészőből veszed át Excellel? Szerintem a böngésző átadhat olyan járulékos információt, ami miatt esetleg más kódolás szerint értelmezi az Excel a fájlt. Ezért ajánlott az előzetes mentés, és a merevlemezről történő, off-line megnyitás.
Esetleg próbáld meg fc-vel összehasonlítani a kettőt! Hátha mégis különböznek valahol (szerintem valami különbségnek kell lenni, ha ugyanúgy nyitod meg őket, de más eredménnyel). Ha talál különbséget, de túl sokat ír ki, és nem látod, hogy miben különbözik, akkor próbáld meg mindkét állományt rövidebb sorokra osztani!
Sziasztok, nem igazán Exceles problémám van, de az eredmény ott jelentkezik.
Van néhány Googlegroups csoportom, amit én kezelek. Eddig sosem volt gondom a csoportok tagjainak kilistázásával, egész a mostani pillanatig.
Az egyik csoportom taglistáját másfél órával ezelőtt exportáltam, és a CSV fájl Excelbe történt átvétele rendben megtörtént. Most pár perce akármelyiket exportálom, a kínai ABC az eredmény Excelben. A másfél órája exportált fájl beolvasása továbbra is jó.
CSV formátumban nem látok különbséget a jó és a hibás változat forrása között:
Van valakinek ötlete, hogy lehetne megoldani a dolgot? Sem az exportáláskor, sem a CSV átvételekor nem látok lehetőséget a karakter konverzióra.
Elbeszélünk egymás mellett. Megírtam, hogy azon a képen csak az oszlopokat raktam sorba (látod is fent a 9 5 3 7 13 12 2 8 1 10 11 4 6 sorrendből) bizonyítékként arra, hogy nem kell váltogatni a sorok és oszlopok rendezgetését. Hanem lehet egy lépésben az össze oszlopot végleges helyére rakni, aztán majd második lépésben a sorokat (ezt ott nem csináltam meg, szándékosan, hogy látszódjék a félutas eredmény, amit ha ezután soronként rendeznél, megkapnád ugyanazt, amit kicsit bonyolultabban kihoztál).
Egyébként én az oszlopk szerinti rendezéssel kezdtem. De lehetne fordítva. Előbb a sorokat, aztán az oszlopokat, ugyanaz lenne az eredmény.
"A makro nem megy, excel 2007-en se.:-(". Már hogyne menne. Még libre office-on is megy. Mi a jelenség, mi a hibaüzenet?
Én ugyan 2010-es office-t használok, de semmi olyat nem használok, ami ott nem volt meg.
Rendezés során az üres celláknak a legvégére kell kerülniük, és balról jobbra jön az összes "A", majd összes "B", stb.
A 8 lépésben szinte egyesével irtam le, mikor mit kell tenni, mintha kihagytad volna az elejét.
Kérdezted azt is, hogy a táblázatnak miért csak egy részét kell rendezni. Azért, mert a soronkénti hossz a csoportositasi szempont, és amint készen van egy csoport, akkor néhány sor es oszlop már a végleges helyén van, azokhoz nem lehet nyúlni. Szinessel jeleztem a képeken.
Pimre, a SoftMaker Office válaszolt az emailedre a maradék függvénnyel kapcsolatban azóta?
Dehogy válaszoltak. Másfél hónapja (szeptember eleje) küldtem nekik (nem SoftMaker, hanem PlanMaker) levelet, és semmi válasz. Komolytalan társaságnak tűnik.
"...és amíg nincs meg a nagyon bonyolult bal oldali táblazat megoldása..." Ez melyiket jelenti? Szintén a 33503-ban a 8. kép bal oldala? Mert azt nem kell megoldani, az lenne a jobb oldalinak a megoldása, ha nem lenne benne egy ellentmondás, amiért nem teljesen jó az sem. És nem is oldható meg hibátlanul. Ezt írtam meg a 33511-ben.
A programot ha letöltöd, és megnyitod Libre Office-ban, remélhetőleg működik nálad is. Nálam legalábbis működött. A makrók két lépéses engedélyezése után.
Persze egyelőre csak az oszlopokat rendezi sorba.
Addig nem akarom egyesíteni az azóta megírt sorokat rendező résszel, amíg nem tudom, hogy valóban erre van szükséged. Ha több különböző állománnyal lefuttatod, akkor tudod meg, hogy jó-e így az oszlopok sorrendbe rakása, vagy valamit másképp akarsz. Ha a program azt írja majd valamelyik mintádnál, hogy nem tudja befejezni a rendezést, akkor ellenőrizd, hogy igaza van-e (szerintem igen, de az ördög nem alszik). Ha úgy gondolod, hogy nincs, akkor küldd el a táblázatot (goggle drive-on, vagy data.hu stb. segítségével, és ne képen), mert nagyon utálatos és időrabló dolog egy ilyen táblázatot a kép alapján bepötyögni. És persze az indoklást, hogy a maradék oszlopok közül szerinted melyiket lehet még előrébb helyezni.
Ha kialakult a végleges elképzelés, akkor egyesítem majd a sor és oszlop szerinti rendezést.
"...szerintem a jobb oldali (második) táblázatot lehet csak egyszerűen automatizálni..." Szerintem pedig automatizálni bármit lehet, ami egyébként automatizálás nélkül megoldható.
Sajnos az most nem biztos, hogy világos nekem, hogy melyik a jobb oldali (második) táblázat. Ha a 33503-as hsz utolsó táblázatának jobb feléről írod ezt, akkor igen, nekem sikerült automatizálni. De nem csak onnan, hanem az eredeti - teljesen rendezetlen - állapotából is. Azzal persze, hogy az oszlopokat tökéletesen lehetett sorrendbe rakni (ugyanazzal az eredménnyel, mint neked), a soroknál viszont a 9. sor áthelyezése után azt jelezte a program, hogy a hátralévő sorokat nem tudja a feltételek betartásával sorba rakni. Természetesen "kézzel" sem lehet. Én sem tudtam, és nálad is látszik a hiba a 10. oszlopban.
A most (33509) beírt rendezetlen táblázatodban az oszlopok rendezése során csak a 9. oszlop hozható előre, a 33487-ben leírt balról jobbra növekvő előírás szerint, és semmi más. A sorok közül pedig csak a 15. sor vihető előre a fentről lefelé csökkenő előírás szerint. Akár automatizálva csinálom, akár kézzel. Az automatizálás és a kézi munka közt csak annyi a különbség, hogy 13 x 15-ös táblázat esetén 1 mp, kézzel pedig legalább negyed, vagy fél óra esetleg annál is több. 600 x 150-es táblázatnál kézzel lényegében megoldhatatlan, automatizálva is eltarthat akár néhány percig is. Feltéve, hogy van megoldás, ami kielégíti a feltételeket.
De azt hiszem itt a vége számomra. Azt hittem, értem a megoldandó feladatot, de egyre inkább azt hiszem, hogy nem:-(
A "lapulást" úgy értettem, hogy közben észrevettem, hogy van egy pythonos fórum is, de az nem nagyon aktív.
A pythonosokkal az a bajom, hogy szeretnek a levegőbe beszélni, hogy "azzal gyorsan és minden megoldható", de amikor felmerül egy határidős eset, gyorsan kiderül, hogy a python csak egy alap, és az adott feladathoz mindig kell valami más is a több százfele egyéb modul, vagy program közül. Persze sosincs olyan, aki mindegyikhez értene, így mindig megy a gyűrű vándorútra, hogy "na most akkor mi van?". :-((
Lassan ott tartok, hogy nekiállok megtanulni, de a dokumentaciója pocsék, a könyvekben pedig mindig csak szemellenzős példák vannak, és persze soha sincs olyan példa, amire rögtön szükségem lenne. ;)
Visszaolvastam az első beírásom óta a fórumot, látom, mindenkinek próbálsz segíteni, talán ezért lett egy kis kavarodás.
Két kérdésem volt, az első volt a háromféle elem összes előfordulása, és gyorsan választ is kaptam, hogy van rá webes megoldás.
A második volt ez a nagyon bonyolult feladat: "2. Hatalmas (kb. 600 sor es 150 oszlop) táblázatot hogyan lehet automatikusan sorba rendezni, majd egy külön táblázatba kigyűjteni az egyforma sorokat?
Minden cellában egyetlen betű van, vagy üres a cella, utóbbiaknak kell jobbra illetve alulra kerülnie."
Ezért sok A,B,C,D,E lehet minden sorban, oszlopban, és rengeteg az üres cella is, és az is lehet, hogy csak egy vagy kétféle betű fordul elő a sorban/oszlopban.
Csináltam gyorsan egy nagyon egyszerű, rendezetlen példát a kedvedért, hogy mik lehetnek:
Ahogy irtam, szerintem a jobb oldali (második) táblázatot lehet csak egyszerűen automatizálni, és talán az E.Istvan által beírt lekérdezés is jó hozzá, de sajnos nincsen "legújabb Excel" a közelben, és amíg nincs meg a nagyon bonyolult bal oldali táblazat megoldása, addig nem tudok vele foglalkozni. :-((
Időközben megcsináltam a függőleges rendező programot is. Egyelőre nem küldöm el, mert egyből kiderült, hogy már az alapadatokban is van egy hiba. A 7.-es sorszámú sor 10-es sorszámú oszlopában van egy felesleges E. Ezt nem csak a program nem tudta kezelni, hanem magad sem. Az utolsó képeden látszik, hogy a 10-es oszlop felső 3 karaktere a rendezésed után E D E, márpedig függőlegesen ez nem megengedett a leírt szabályaid szerint.
Kipróbáltam. Töröltem ezt a felesleges E karaktert, és a rendezés minden további nélkül lefutott.
Egy jó hír. letöltöttem a Libre Office programot. Az elküldött oszloponkénti rendezést elvégző program minden további nélkül lefutott. Tehát remélhetőleg fogod tudni használni.
Igaz. Csak az volt a baj, hogy elkezdtem érdeklődni a leírásból és a például kihámozható feladat iránt. Aztán este hazajöttem, és egyszerűen nem bírtam megállni, hogy ne essek neki. Aztán, ha kiderül, hogy feleslegesen dolgoztam, egye fene.
Ráadásul fogalmam sincs, hogy egy Libre Office mit kezd vele. Van nálam egy Open Office, abba megpróbáltam átvenni a fájlt, de hiába engedélyeztem a makrókat, egyszerűen nem találtam a programot.
Na végül csak elkezdtem. Megcsináltam az oszlopok rendezését. Körülbelül azon a módon, ahogy egyébként kézzel is tettem. Megnézegeti a program az egyes oszlopokat, és ha talál benne olyat, amit az adott feltétel szerint el tud helyezni, azt előre teszi. Aztán elölről kezdi a megmaradt oszlopok átnézését, és ha újabbat talál, akkor azt a következő helyre teszi. És így tovább. Ha elakad, mert megoldhatatlan problémát talál, akkor félbehagyja a rendezést, és hibaüzenettel leáll.
Aztán a rendezendő adatokat másold be a munkalapra. Csak az adatokat, semmi mást. A lehető legrendezetlenebbül, tehát az eredeti 1-15 sort és az eredeti 1-13 oszlopot úgy, ahogy az első képeden mutattad. A sorszámokat és az oszlopszámokat majd a program fogja kitölteni, mégpedig a sorszámokat a sorok mögé, az oszlopszámokat az utolsó sor alá. Az, hogy a munkalapon hova másolod, az mindegy. akár a munkalap elejére, akár a közepére, ahogy tetszik.
Majd Jelöld ki az adatokat tartalmazó területet (tehát a 15 sornyi és 13 oszlopnyi téglalapot), majd indítsd el a programot (Alt + F8 után kattints a Rendezget nevű makróra)
A program besorszámozza a táblázatot, és az oszlopok rendezése után a szükséges méretűre igazítja az egyes oszlopokat. Ha hiba miatt nem sikerült befejezni a munkát, akkor csak a már átrendezett oszlopok lesznek méretre igazítva.
A függőleges rendezés majd egy későbbi téma lesz. Ha egyáltalán megfelelő ez a program. Javítani lehet rajta, de remélem alapvető módosításra nem lesz szükség.
Egyébként a program flexibilis. A mintapélda a 15 x 13 elemű táblázat A-E betűkkel. De tudja kezelni a nagyobb táblázatot is, és azt is ha több betű szerepel. Ugyanis ezeket a kijelölt terület értékelésével végzi.
Mindig kiderül valami újdonság. A legelső kérdés az volt, hogy lehet 3 elemet sorba rendezni. Aztán jött az ábra, hogy miként lehet az R-AD oszlopokban lévő elemeket az adott módon sorba rendezni. Most kiderült, hogy nem az R-AD a forrás, hanem az A-N, és az R-Ad csak ennek valami közbülső állapota, ami egyszercsak megjelenik az utolsó képen.
Most kiderül, hogy nem csak egy ilyen táblázatról van szó, hanem esetenként nagyobbról is, aminek csak egy részét lehet rendezni. Miért is? Ezek szerint van olyan eset, amikor a rendezés az adott tartományban nem végezhető el?
Na mindegy, ezeket nem kötekedésnek szántam, csak jelezni akartam, hogy jó lenne tudni a tényleges feladatot, mert erre a konkrét példára lehet algoritmust találni, ha nem is könnyű.
Az persze nem igaz, hogy váltogatni kellene a sorok és oszlopok rendezgetését. A példa kedvéért az alábbi táblázatot oszloponként rendeztem az eredetiből, anélkül, hogy egyetlen sorhoz hozzányúltam volna:
Nyilván innen már könnyű lenne a feltételek szerint sorba rendezni.
Egy kicsit foglalkoztam azzal, hogy lehetne egy kis makrót írni erre. Hozzávetőleges folyamatábrám már van, de a konkrét megvalósításhoz kellene néhány nap.
De csak akkor szeretnék tovább foglalkozni vele, ha biztosan tudom a tényleges feladatot. A mintához képest várható eltérésekkel, meg a korábbi kérdésemre adott válasszal, hogy előfordulhat-e az, hogy egy sorban nem az E, hanem más betű fordul elő kétszer?
Aztán attól tartok, hogy nem csak A-E betűk szerepelhetnek a tényleges feladatban, hanem F, G, H stb. Ezzel mi a helyzet?
Ha pedig valaki megoldja a feladatot akár Pythonban, akár másképp, akkor szívesen háttérbe húzódok
Csakazértis beteszem harmadszorra is, hiába pocsék ez a fórum! :-((
Megcsináltam lépésenként képekkel, hogy én hogyan oldottam meg eddig, mert a probléma az, hogy mindig a tábla (jelen esetben csak 13 oszlop és 15 sor) egyes részeit lehet csak rendezni.:-(
(LibreOffice Calc-ot használok, nem Excelt, remélem, ez nem gond)
Az első kép az induló séma, ahogy megkapom, a tábla méretőtől függően az első szabad oszlopba megcsinálom az összesítést, soronként hányelemet tartalmaz, és alá a végösszeget is, majd az öszesítést másolás-beillesztéssel értékké változtatom, ettől kezdve a sorokkal együtt mozog és nem kell a sorokat újraszámolni.
A következő lépésben a - jelen esetben O oszlop - alapján sorbarendezem a táblát - jelen esetben csak a 2-16 sorokat - csökkenő sorrendben, majd megcsinálom - jelen esetben 18-23 sorokba - az összesítéseket, majd ezt a fenti másolás-beillesztés módszerrel alájuk, - jelen esetbn 24-29 sorokba - csak értékként beillesztem.
Ez adja a kontroll lehetőséget, bármilyen véletlen örlés vagy felülírás esetén a 18-23 sorok újraszámolódnak és a lejjebbi sorokkal való eltérés azonnal jelzi a hibát.
Ez van a második képen, látható, hogy a sorokkal szerencsém van, csak kétféle sorösszeg van, ráadásul a felső kettő sor azonos, nem kell majd rendezni.
Ettől kezdve jön a tortúra.:-(
Látszik az O oszlopban, hogy első lépésben csak a 6 elem hosszú felső két sorra kell koncentrálni, és mivel azonosak és kevés elemet tartalmaznak, azonnal látszik, hogy az A-B-C-D-E sorrendhez a 9-5-3-7-12-13 oszlopsorrendre van szükség, ezért ezeket kell kézzel megcsinálnom.
(Ezért utálom a Libreoffice-t, mert itt nem szúrja be automatikusan a kivágott sorokat, kézzel kell megcsinálnom azt is, sőt utána az üres sorok törlését is.)
Ez az állapot van a harmadik képen, látszik, hogy az első két sor tökéletesen a helyén van, és az is, hogy a többi sorban csak öt elem van, így a következő fokozatban egyben lehet azokat is kezelni, és a 18-29 sorokban a megfelelő adatok azonosa, nem volt hiba eddig.
Itt jön be az első korlátozó feltétel, mivel az első két sor 6 elemet tartalmaz, amik teljesen a helyükön vannak az első hat oszlopban, ezért a következőkben az első hat oszlopot - A-G - már nem lehet mozgatni!
Most jön a - szerencsémre csak egy blokként - a következő, 5 elemű sorok helyrerakása, azaz kizárólag a 4-16 sorokkal szabad csak foglalkoznom.Ismét szerencsém van, az első oszlopban csak A-k vannak és csak két sorban, közülük a 3-as lesz az első, mert a második oszlopában B van, míg a 6-os számúnál a második oszlop üres, így ez is gyorsan eldőlt.
Sőt ezt követően a következő, "C" oszlopban egyetlen A betű van, így a 13-as sorszám lesz a következő sor.
Ez van a negyedik képen, alsó sorokban továbbra sincs hiba.
Ezt követően jön a "D" és "E" oszlopokban lévő A betűk helyretétele, és jön a felismerés, hogy ismét szerencsém van.
Az "F" oszlopban csak egy B betű van, míg a "G"-ben két A betű, de a korlátozó feltétel miatt az F és G oszlopokat nem lehet mozgatni.
Jelen esetben azonban mégis lehet, mivel a B-G oszlopok és 2-6 sorok által adott területen látható, hogy az első két (jelen esetben 11 és 8 számú) sorban lévő elemek azonosak, ráadásul a F és G oszlopban lévő első két sor elemei teljesen azonosak, ezért számukra mindegy a sorrend. Mivel alattuk a 3-as számú sorban az F és G oszlopban E illetve D betű van, így a G és F oszlop felcserélhető, és nagy szerencsémre ezzel több lejjebb lévő sornál is segítséget jelent. Ezzel kialakul a befutó sorrend, a B-G oszlopokban a 9,5,3,7,13,12 lesz a végső sorrend, és ettől kezdve ezek valóban nem módosíthatóak többet, míg az ezek által meghatározott soroknál a 11,8,3,6,13,2,4,5,9,1,7,15 már szintén véglegesnek tekinthető.
Ez van az ötödik képen, a területet szinessel jelöltem, ez a terület már végleges.
Ettől kezdve a táblázatnak már csak a maradék részével szabad foglalkozni, az alsó három sor sorrendje jó, azzal nem kell foglalkozni, viszont az oszlopok még szabadon mozgathatóak. Az első meglátás szerint a 8-as számú oszlopban lévő A betűknek kellene a lehető legbalra tolódniuk, csakhogy akkor a 2-es számú sorban a D és E sorrendje megvltozna, ami nem lehetséges. Ezért a 2-es számú oszlopban lévő A betű oszlopa követi a 12-es számú oszlopot és a 2-es sor miatt a 8-as számú oszlop lesz a következő. Majd a 4-es és 5-ös számú sorokban lévő betűk balra ütköztetése következik, majd automatikusan jön 9-15 oszlopoknál is a megoldás.
A hatodik képen szinessel látható az újabb fix és végleges terület, immár a egy kivételével minden oszlop és 3 kivételével minden sor a helyén van.
Ekkor azonnal látszik, hogy már csak a legalsó sor tud feljebb kerülni, a másik kettő szerencsére ismét teljesen azonos és már oszlopot se lehet mozgatni.
Ez van a hetedik képen, megvan a végleges állapot, egy nagyon kis, kényszerű ellentmondás maradt csak bent, szerencsére csak a 10-1 oszlopok és 7-12 sorok területén, mert a felette lévő sorok és előttük lévő oszlopok determinálják ezt.
Ekkor jön a második tábla elkészítése, ami indulásként a hetedik képen látható táblázat átmásolását jelenti, majd a 23-as sorban lévő "Mind"+ a 18-22 sorokban lévő A-E számok szerinti csökkenő rendezés következik, és a 24-29 ellenőrző sorok máris törölhetőek.
(A többi ellenőrző sort meghagyom, mert ez bizonyítja, hogy mi alapján rendeztem a végén a második táblát.)
A nyolcadik képen látható a kialakult a végeredmény, a két táblában színesekkel jelöltem az azonos sorokat és oszlopokat, amiket még ki kell gyűjteni egy külön listába, de erről már nem csinálok külön képet.;)
Szóval az a gond, hogy menet közben a táblák elkészült részeihez már nem szabad nyúlni, ami teljes oszlopokat és sorokat lemerevít, és folyamatosan felváltva kell a soronkénti és oszloponkénti rendezést elvégezni, ráadásul a rendezést a bal felső sarokból kezdve kell lefelé és jobbra végezni felváltva.
(Ha lenne 4 vagy kevesebb sorszámú elem, azok rendezése még csak most jönne.)
Ezt nem értem. Ez azt jelenti, hogy van egy minta Q-AE oszlopokban, aztán egy másik az AF-AR között, és így tovább? És ezek egymástól függetlenek? És van olyan, ahol az A betű fordul elő kétszer egy 15 oszlopos csoportban, meg olyan, ahol a B betű stb?
Agyilag nem fogom a feladatot, de az azonos sorok kiszűrése egyszerű. A p2-es cellába beleteszed az alábbi képletet és lefelé lemásolod, akkor kapsz egy egyedi azonosítót. A darabteli képlettel ezt a p oszlopot megszámolva látható, hogy melyik azonosítókból van egynél több.
=FŰZ("adat";INDEX(($B2:$N2&OSZLOP($B2:$N2));))
Csak a FŰZ képlet jó az ÖSZEFŰZ nem. A Microsoft a FŰZ képletben javította azt a "hibát", hogy nem tudja kezelni a tömbképleteket. Csak az újabb Excel verziókban található meg, de ott már nem is választható ki az ÖSZEFŰZ képlet.
Én már sok mindent láttam a számítástechnikában, főleg Microsoft környezetben, így aztán kevés dologra szoktam azt mondani, hogy biztos. Például a rendőrre. :-)
Egyben válaszolok mindenkinek, csináltam egy egyszerű példát, hogy nagyjából miről lenne szó, 13 oszlop és 15 sor van. Nagyon leegyszerűsített, a gyakorlatban soronként is több A,B,C,D vagy E elem lehet, de a cellák töbsége üres.
A bal oldalon látható a soronként és oszloponként sorbarendezett lista, és látható, hogy a 8 és 11, illetve a 12 és 14 sorszámú eredeti sorok azonosak. A végén van egy összegzés, hogy hány elemet tartalmaz, és ténylegesen ez az első rendezési szempont, (ahogy a jobboldalinál is látható), majd balról és fentről kezdve a-b-c-d-e sorrendet kell követni.
Alulra írtam, (de a gyakorlatban nyilván felülre kell majd tenni) az összesítő táblázatot, hogy A-B-C-D-E közül hány elem fordul elő és ezek összesítése értelemszerűen azonosnak kell lennie a sorok összegével.
Ezt követően a táblázatot át kell másolni egy másik munkalapra, és ott oszloponként kell sorba rendezni, de az alsó táblázat szerint, először a "Mind", az elemek száma, majd A-B-C-D-E elemek száma szerinti csökkenö sorrendben. Majd jön az újabb tortúra, a "Mind" sor és "Mind" oszlop szerinti sorrend az alap, utána ezeken a sor és oszlop kategóriákon belül jön a bal oldali rendezéshez hasonló A-B-C-D-E előfordulás.
Látható, hogy a 4-es és 6-os eredeti sorok azonosak (értelemszerűen nem teljesen, hiszen más sorokban, de lényegében azonos számú elemek szerepelnek.
Sajnos fogalmam sincs, hogy ezeket a rendezéseket hogyan lehet excelben megcsinálni, csak a "Mind"-ek szerinti rendezés megy, a többit kézzel kell megtennem.:-(
Azt a tippet kaptam, hogy keressek egy pythonos programozót, állítólag azzal pillanatok alatt lehet az ilyen rendezéseket megcsináltatni és az eredményt excelbe visszatöltve már könnyű lesz a jobb oldalit megcsinálni, így most egy pythonos programozót is kell találnom valahol, ha excelben ezt túl bonyolult lenne megoldani.:-(
Igen, pontosan ugyanaz. Nem is az újdonság-értéke miatt tettem be, hanem megerősítésként, mivel némi bizonytalanságot érzékeltem, mintha nem lennél biztos benne, hogy a módszered tényleg működni fog.
Hát igen, ezeket a technikákat nem ismertem annakidején. Igaz, néhány évet írtam, de most alaposabban végiggondolva, volt az több mint 2 évtizeddel ezelőtt. Még az XP megjelenése előtt.
Köszi, de ez pont ugyanaz, mint amit én írtam, csak megvan parancssori parancsokkal is, ami nyilván szintén használható, csak többet kell hozzá gépelni.
Valóban előfordul, hogy nem akarja elsőre kitörölni a nyomtatási sorból a feladatot. Sőt, néha még másodikra sem. Ilyenkor először szidni szoktam a Windowst (mert megérdemli), aztán például újraindítani a nyomtatásisor-kezelő szolgáltatást. De ezután lehet, hogy megpróbálkozom majd én is a spool\PRINTERS-ből való törléssel. Hátha a leállított szolgáltatás mellett jobban megy a törlés.
Na ezek azok az eljárások, amik nekem néhány évvel ezelőtt a HP tintasugaras nyomtatókon nem működtek. A nyomtatási sorban ott volt a korábbi félbehagyott nyomtatás eltávolíthatatlanul (sem a nyomtatás megszakítása, sem a törlés funkció nem reagált), ettől pedig nem lehetett új feladatot sem kezdeni. A Windows\system32\spool\PRINTERS-ben való törlést nem ismertem, így nem is próbálkoztam vele. Viszont felnőtt férfi létemre sírógörcs kerülgetett (pedig nem szokásom), mert sürgős feladatot nem voltam képes kinyomtatni, miközben már rég másik munkával kellett volna foglalkoznom. Ismered ezt a tehetetlenség érzést?
És mivel a jelenség nem csak egy nyomtatón jelentkezett, arra gyanakodtam, hogy ez nem egyedi hiba.
Amikor megvettem az első Canont, hamar kiderült, hogy a nyomtatás megszakítása parancs minden további nélkül elsőre működik. Ráadásul a szkennelés és az OCR is (MODI programmal kombinálva) tökéletesen működött.
Amúgy bocsánat az OFF-ért, ezzel részemről ezen a fórumon le is zárom.
Mármint a Windows\system32\spool\PRINTERS alatt, nem? Amúgy nem biztos, hogy onnan könnyen ki tudja őket törölni. Nálam például ez nem nagyon megy (Unlocker-rel talán menne, de azt most nem próbálom ki). Ezért inkább azt javasolnám, hogy először is ki kell venni a nyomtatóból a papírt. Utána megnyitni az adott nyomtató nyomtatási sorát (Eszközök és nyomtatók, vagy Nyomtatók és faxok alatt), és kitörölni belőle azt a feladatot, amit nem akarunk már nyomtatni, és végül, ha ez is megvolt, akkor kikapcsolni a nyomtatót, hogy törlődjön a memóriájából is, ami benne maradt.
Az A5-ös problémával meg nem tudok mit kezdeni. Talán ha küldesz arról is egy mintát, de még akkor sem biztos, hogy tudni fogom az okot. De hátha más igen. Kérdés, hogy a nyomtatás elindítása előtt mit látsz a képernyőn? Ott is hiányzik a lap egyharmada?
A jelenség, amit tapasztalsz nem a nyomtató hibája, nem is az Excelé. Az Excelben beállítottad a vízszintes és függőleges középre pozicionálást, valamint sortöréssel több sorba kérted a megjelenítést. A két sorba tördelést pedig úgy érted el (ha jól látom), hogy egy csomó szóközt tettél a név és a "2 fő " közé. Ráadásul hol kicsivel többet, hol kevesebbet. Na ezt nem szabad. Felesleges munka neked, és valóban nem garantált, hogy bármely nyomtatón jól kezelje ezt minden cellában.
A cellán belüli tördelés kikényszerítéséhez használd a töréspontnál az Alt + Enter kombinációt, ami ott fogja új sorban folytatni a szöveget a cellán belül, ahol te szeretnéd.
Off: A képekről egyébként látszik, hogy Canon TS5100-as a nyomtatód. Ami engem illet csak Canont használok néhány éve, és nagyon jók. A HP tintasugarasaira azért rágtam be néhány éve, mert valami szoftverhiba miatt időnként lehetetlen volt leállítani egy problémás nyomtatást. Ráadásul "kitűnően" működött a memóriája, ami miatt a számítógép két-három újraindítása után is ott akarta folytatni a nyomtatást, ahol le szerettem volna állítani.
Például ilyet csinál. De az is gyakori, hogy direkt A5 oldalbeállítással megszerkesztek egy táblázatot, amit ha A5 papírra nyomtatok, lehagyja jobb oldalról az egyharmadát, és ott üres a papír. Olyan, mintha a standard lapméretek pontos adatai nem ugyanazok lennének az Excelben és a nyomtatóban.
Talán ha felteszel egy mintát a táblázatodról, amit nyomtatni akarsz, meg egy fényképet a nyomtatási eredményről, akkor több eséllyel kapsz javaslatot. Az Excel verziót is jó lenne tudni. És azt is megírhatnád, hogy milyen típusú a nyomtatód (gyártó, és típusszám). Mert amint látom a guruk fórumán, más esetekben is meggyűlt a bajod a nyomtatással.
A 2. problémára nekem az az ötletem, hogy az első üres oszlopban lehetne képezni valamiféle ellenőrző összeget, hasht, akármit, amit az értékek determinálnak, és különböző sorok esetén különböző lesz. Konkrét ötlete csak annak lehet, aki tudja, milyen sorok fordulhatnak elő. Eszerint már rendezhető.
Ez ugyan nem permutáció, hanem ismétléses variáció (tipikus példája a totószelvény kitöltése), de ahogy elnézem, a cikk szerzője is ugyanilyen rosszul tudja, és így a két hiba kioltja egymást.
A permutációnál minden elemet fel kell használni.
Nekem is ez volt az első gondolatom, hogy ez makróköteles, de akkor van rá publikált megoldás.
Sziasztok! Annak mi lehet az oka, ha az Excel nyomtatáskor szétbarmolja, amit szerkesztettem? Próbáltam azt is, hogy PDF-ként elmentem, de akkor sem úgy jeleníti meg, ahogyan az Excelben volt a monitoron. Direkt lapelrendezési nézetet használok, mégsem maradnak nyomtatáskor úgy a cellák, ahogyan voltak.
Feltételes formázásnál van olyan, hogy "ismétlődő értékek kijelölése"
Ez kiterjeszthető teljes sorra is. Ha ez megvan, akkor autoszűrő bekapcsolása után lehet színre szűrni, kijelölés után átmásolni a szükséges helyre. Sorba rendezés ehhez felesleges - ha csak emiatt kell.
Automatikussá teheted, ha makrórögzítövel kapott kódot ráteszed egy makrógombra (pl...)
Bocsánat, hogy csak úgy betörök ide, de már két napja gyötröm magam ezekkel, és nincs senki a közelben, aki tudna segíteni.:-((
1. Hogyan tudom megoldani, hogy megadom az elemeket, pl. A,B,C, vagy 1,2,3 és az Excel kiadja az összes változatot?
Azaz A,A,A A,A,B, stb. C,C,C
2. Hatalmas (kb. 600 sor es 150 oszlop) táblázatot hogyan lehet automatikusan sorba rendezni, majd egy külön táblázatba kigyűjteni az egyforma sorokat?
Minden cellában egyetlen betű van, vagy üres a cella, utóbbiaknak kell jobbra illetve alulra kerülnie.
Ezexerint a bérpiv lap listája a bővebb, és ezáltal mérvadó. Ha így van, akkor a következőt javaslom.
1) A bérpiv lapon jelöld ki a nevek listáját, ami a belinkelt dokumentumban D2:IS2, és adj neki egy nevet a Képletek/Névkezelő segítségével. Én így neveztem el: bérpiv_nevek.
Itt a szorzatösszeg két tömbjét az ELTOLÁS (ang. OFFSET) függvénnyel állítjuk elő.
Az első tömb referenciája a H8, innen 1 oszlop jobbra (most tartunk az I8-nál) és a tartományt beállítjuk 1 sor * n oszlop méretre, ahol n a bérpiv_nevek tartomány oszlopainak száma.
A második tömb referenciája maga a bérpiv_nevek, és ezt annyi sorral toljuk el lefelé, ahol az év-hónap számkombináció megtalálható a C oszlopban.
Megjegyzések:
1) a bérpiv_nevek tartomány elnevezése nem szükségszerű, de jelentősen leegyszerűsíti a képletet
2) Elegánsabb lenne a szorzatösszeg második tömbjét így definiálni:
és ez önmagában jó hivatkozást ad (SZUM függvénnyel ellenőriztem), de valamiért a szorzatösszeg függvényben mégsem működik.
Ha bedrótozom a C3:C100 tartományt, úgy viszont igen. 100 helyett akármi is lehet pl. C3:C100000 is, csak arra kell figyelni, hogy elég nagy legyen.
3) Ezzel a képlettel a szorzatösszeg mindkét tömbje olyan széles lesz, mint a bérpiv_nevek tartomány, függetlenül a Felosztás lapon esetleg történő utólagos beszúrásoktól.
Ha viszont a bérpiv lapon változik az oszlopok száma, figyelni kell rá, hogy a bérpiv_nevek is naprakész maradjon.
Ha jól értem, a Felosztás lap H oszlopában mindegyik szorzatösszeges képlet az adott cellától jobbra lévő N darab cellára hivatkozik. Ehhez miért kell INDIREKT?
H14 cellában már próbáltam kicserélni a "8"-at sor() függvényre, hogy az aktuális sorhoz tartozó tartományt adja eredményül, de #ÉRTÉK hibát ad eredményül :-(
Egy érdekes tapasztalat, hátha valaki hasznosítani tudja:
Userformról adatokat viszek be egy viszonylag nagy táblázatba.
A sokadik sor bevitele után nem nőtt automatikusan a táblázat mérete (nem az utolsó cella jobb alsó sarkában jelent meg, hanem a fölötte lévőben a táblázat végét jelző kék jel).
Ez a sor nem örökölte a fölötte lévők tulajdonságait, pl. a formátumot, sőt! minden cella kapott egy-egy legördülő nyilat, mint az az érvényesítésben szokás.
Próbálkoztam a tábla átméretezésével. ActiveSheet.ListObjects("Táblázat1").Resize Range("$A$1:$T$" & usor), ahol az usor változó az első üres sor. Nem fogadta el, bár egy rögzített makró végét írtam át, ahol az usor fix érték volt.
Végül úgy sikerült megoldani, hogy a Cells(usor, 1)=valami után betettem egy Calculate utasítást.
Egyszerre is beszúrhatod a sok lapon az oszlopokat, ha pedig a képletek azonos helyen vannak az egyes lapokon, azt is.
Kijelölöd az összes lapot (ahol még nem hajtottad végre a feladatot): első lapra állsz, Shiftet nyomva tartva kijelölöd az utolsót. Végrehajtod az oszlop beszúrását. Beírod a képletet. Elrejted az elrejtendő oszlopot.
FONTOS! Szüntesd meg a lapok csoportos kijelölését, másképp minden egyéb változtatást az összes kijelölt lapra beviszel.
Nos ebéd után visszajöttem az irodába, mondom csinálok valami minta file-t. Elkezdetem kiszedni a valós adatokat, fölösleges dolgokat, átírni az árakat, és annyira beleemlegettem, hogy találtam megoldást. Igaz segédcellás megoldás, de ha duplázom minden oszlopot amiben ár van, akkor abba mehet függvény, az eredetit pedig elrejtem, így nem hullik szét a struktúra. A munkalaponként legalább 4 oszlop miatt kicsit időigényes lesz, de még agyalok egy kicsit és lesz megoldás. Azért ragaszkodom ehhez az excel táblázathoz, mert ez a gyári munkalap kinyomtatva, nagyon szép, és átlátható struktúrában van, ami nagy előny. Csak amikor össze vannak vonva a cellák mindig bekavarnak az automatikus kitöltésnek... Most is van olyan oszlop, hogy 1 cellában van érték, alatta már két cella van összevonva, aztán van ahol 3 cella... Itt ha automatikus kitöltés húzok le, akkor ugye az nem szereti.. :-( Itt még ki fogom próbálni, hogy kikapcsolom az egyesítéseket, úgy automatikus kitöltés, és újra egyesítés. Hátha nem esik szét.. De ez már csak hétfőn..
Nem kötekedésből, de az "azzal kell főzni, amink van" mondásnak van egy ellentéte: a "think out of the box". És ez hosszú távon gyakran hasznosabb, mint a folyamatos buherálás, amely a végén teljesen átláthatatlan rendszert eredményez. Néha persze rákényszerül az ember, de ne ez legyen az első gondolat.
Izgalmas kérdés. Persze jobb lenne, ha másképpen lenne, de ugye azzal kell főzni, amink van.
Szerintem ezt makróval tudod megoldani. Ahhoz viszont, hogy működő makrót kaphass, fel kellene tenned egy minta fájlt nem éles adatokkal, továbbá meg kellene mondanod, hogyan és mi íródik felül. Továbbá fontos lenne, hogy a "szorzó" (azaz a valutaárfolyam) honnan jön.
"minden ár cellában be van állítva a külföldi valuta pénzneme."
Pontosan ez az - persze többek között - , ami miatt kellene a minta. Nem mindegy ugyanis, hogy milyen módon van ott a pénznem...
Biztos, hogy ennek az egésznek Excelben kell lennie, ha két lépést hátralépve figyeljük? Pont az ilyen nehézségek utalnak arra, hogy esetleg nem rendeltetésszerű használat zajlik. Ez az én meglátásom.
Adott egy nagyon sok munkalapból álló munkafüzet. Minden munkalapon egy termékcsalád található. Ezeken a munkalapokon a termékcsalád elemeinek képe, mérete, és egyéb hasznos információk találhatóak, szépen elrendezve. Viszont nagyon sok az összevont cella. Az árak celláiban külföldi valutában vannak feltüntetve az árak. A feladat az lenne, hogy egy szorzóval az árak forintban jelenjenek meg ugyanabban a cellában, felülírva a külföldi valutában feltüntetett árat. A szorzó nem muszáj, hogy változtatható legyen, mivel eleve felülírja a forrást. Mivel segédcella beszúrására nem nagyon van lehetőség, vagy elég macerás a sok formázás miatt, a kérdésem az lenne, hogy lehetséges e ezt valahogy kivitelezni úgy hogy ne kézzel kelljen egyenként átszorozni..? Amire gondoltam, hogy felhasználható lehet a cella keresésére, az az, hogy minden ár cellában be van állítva a külföldi valuta pénzneme. Egyéb egyszerű, könnyen kivitelezhető megoldás nem jutott eszembe. Hátha valakinek van valami jó meglátása... :-)
Adott egy többezres adatsorra épülő vonaldiagram. A kérdés az, hogy Excel 2010-ben, vagy akár 2016-ban hogy oldható meg az, hogy a vonaldiagram egy adott pontját megfogva, majd le, vagy felhúzva, megváltozzon a diagram a módosításnak megfelelően, és ezzel együtt az adatsor forrásában is automatikusan korrigálódjon az érték. A régebbi Excel-ekben ez csont nélkül működött. Guglizva több helyen találtam erre a problémára megoldásként egy kiegészítőt, az Excel Add-In for Manipulating Points on Charts MPOC) –t, de a letöltési link nem elérhető. Van erre a feladatra valami megoldás?
Tegyél a táblázatodra egy automatikus szűrőt, mellyel (nekem 2013-as Excelem van) már le tudod szűrni a táblázatod az általad beszínezett soraid színére. Ha tehát kiszínezted - a megadott példád szerint - az ing és a kabát sorát, akkor a szűrés után megmaradó két db sor összegét kapod akkor, ha a teljes táblatartományra felírsz egy RÉSZÖSSZEG függvényt.
A kérdésed nem Excel-technikai kérdés. Nem kizárt, hogy valaki itt tud majd tippet adni, de szerintem jobban jársz, ha gugli bevonásával a QR kód olvasó appok között tájékozódsz. Excel formátumba exportálni ma már nem egy nagy kuriózum.
Létezik olyan alkalmazás vagy megoldás, hogy qr olvasóval kiolvasom egy cd adatait és azokat exportálni tudom egy excell adatbázisba vagy esetleg valami spec. adatkezelőbe?
Válaszoltam a másik topikban is. Itt is írom: Használd az Excel Rank (Sorszám) függvényét. Az automatikusan módosítja ilyen esetben a helyezési számokat.
Sziasztok! Excelben (2016-os verzió) írok egy Excel VBA makrót versenyeredmények pontszámai alapján való rangsorolásához. A nagy részét már megírtam a makrónak, hozzárendeli az eredményekhez a helyezés számot és azt is figyelembe veszi (if eset megkülönböztetéssel), hogy esetleg többen ugyanazt az eredményt érték el, ők ugyanazt a helyezésszámot kapják. Viszont jelenleg akkor is csak eggyel lépteti a helyezésszámot, ha előtte többen ugyanazt az eredményt érték el, de én azt szeretném, ha ilyenkor ugorna a helyezésszám. Konkrét példán, ha a 3. helyen 3-an vannak azonos pontszámmal: Jelenleg így rangsorol: 1, 2, 3, 3, 3, 4, 5 Viszont én azt szeretném, ha így rangsorolna: 1, 2, 3, 3, 3, 6, 7 Hogyan lehet azt megoldani, hogy megszámolja, hogy hányszor ismételt és utána ne eggyel, hanem az ismétlődésnek megfelelően léptesse a sorszámot? Köszi szépen a segítséget!
Rosszul fogalmaztam az eredeti posztban, nem a magyarítás a bajom, ahogy a képen látható, a G oszlop működik is. Ennél kicsit bonyásabban csináltam, de az jó lett. Abban ennek az aaaabbbbcccc-nek kell lenni. A H oszlop a problémás, de megpróbálom így, ahogy írtad, hátha.
Az eredeti képletben lévő összes idézőjelet (pirossal kiemeltem) duplázni kell ahhoz, hogy a parancs szintaktikailag helyes legyen, tehát végső soron így fog kinézni:
4) Nyomsz neki egy Entert, és ezzel a képlet bekerült a G3-ba.
5) A fenti módszer normál képletek esetében jól működik. Itt azonban tudjuk (hiszen a szerző jelezte), hogy a G3-ba tömbképlet kerül. Tömbképletek esetében nem Formula, hanem FormulaArray kell a parancsba:
Ha jól nézem, akkor annak kellene történni, hogy az INDEX($1:$1,MATCH(1E+99,$1:$1) előbb a B1-re, aztán a lefele másolással a C1-re, D1-re és E1-re kellene mutatni, azért, hogy az INDEX($B$1: kettőspont utáni részét úgy lehessen dinamikusan megadni, hogy a külső index tömbje jó legyen.
Az a kérdés, hogy az 1E99 a keresendő értékek között számként vagy szövegként szerepel. Mert csak azonos értékeket talál meg a függvény - azaz számok között számot, szövegek között szöveget.
Valószínűleg nem számként van vagy a képletedben vagy az értékek között.
Ellenőrizheted, ha a cellaformátumot megpróbálod megváltoztatni. Ha szám, akkor látni fogod hosszú számsorozatot, amikor általános formátumról számra változtatod. Ha változatlanul marad, akkor szöveg.
Köszi! A függvények nevei megvannak, azzal nincs bajom, az 1E+99 kifejezést nem nagyon akarja megenni. Ha jól tudom, akkor ez a végtelent jelentené, de nem nagyon akarja értelmezni.
Segítséget kérnék, mert már a hajam tépem. Kínlódok egy olyan feladvánnyal, hogy kétdimenziós táblát kellene úgy listává alakítanom, hogy csak képletet tudok használni (automatizáltnak kellene maradnia az újraszámolásnak, makrót meg biztonsági beállítások miatt nem használhatok).
Nagyjából jónak is tűnik a dolog, de van vele bajom még. Az első egy tömbfüggyvény, azzal remekül el is boldogultam, a harmadik is működik, ha... Ezzel a ha-val van a bajom. A második függvénykombinációt nem sikerül értelemesre magyarítanom egyelőre. Ezeket próbálom:
A második sor HOL.VAN(1E+99;$1:$1) részét #HIÁNYZIK-ra értékeli ki az excel. Ahogy nézem ebben van valahol a hiba, de mi az vajon? Nem jövök rá. Angol excel sajna nincs kéznél, hogy az eredetileg írt képletet ki tudjam próbálni, lehet az se jó. Tud valaki segíteni ebben?
De felismeri dátumként, jobbra rendezve? Ha nem, akkor egyedi dátumformátummal rávehető a felismerésre? Mert akkor ugyanúgy működnie kellene a kivonásnak.
Oké, ez rendben van. Probléma: beírtam a cellába a függvényt > Enter. A 33401 Hsz-be csatolt kép fogad nem a felkerekített szám érték. mit írtam rosszul?
A 33394 volt a kérdésem és a beillesztett képernyő mentésekkel próbáltam illusztrálni. A 3. lépés mentését ebben a hsz-ben nem jól ilesztettem be, ezt javítottam 33395-ben.
Egyébként egy költség kalkuláció lesz. A vízszintes sor: mennyiség x egység ár = összesen. Ezek a cellák lesznek függőlegesen Auto Sum-mal összesítve, de szempont: ne legyen pl. 11541 Ft, > 11600
Itt lenne jó, ha a két lépést: AutoSum és Kerekítést össze lehetne vonni.
Egyébkként a KEREK.FEL (és minden kerekítés függvény) lényege, hogy a további műveleteket már a kerekített értékkel végzi az Excel.
Ellentétben azzal, amikor cella formázással állítjuk be a számformátumot. Ilyenkor hiába csak 2 tizedesjegyet látsz pl., akkor is a teljes számmal számolja az eredményt.
Vagyis nem mindegy, hol kerekítesz mikor számolsz (ha egyáltalán kerekíteni kell).
VBA macro segítségével szeretnék file-t feltölteni egy hálózati nyomtató könyvtárába.
Manuálisan ez úgy működik, hogy totalcommanderrel megnyitom az ftp kapcsolatot IP, név, jelszó megadásával, majd átmásolom a file-t egyik könyvtárból a másikba.
Azt szeretném VBA macroval megoldani hogy ugyanez történjen egy commandbutton megnyomására.
Aki konkrét segítséget tud adni, nagyon megköszönném. Angol nyelvű google linkeket nem kérnék.
Private Sub Sorsolás() Dim StCount As Long, arrStations, rngStations As Range Dim i As Long, j As Long, sTemp As String, lTemp As Long, ListedOnes As String, Attempts As Long, Continue As Boolean Dim rngCol As Range, rngRow As Range Set rngStations = ThisWorkbook.Worksheets("Munka1").Range("F1").CurrentRegion.Resize(1) StCount = rngStations.Cells.Count ReDim arrStations(1 To StCount, 1 To 2) For i = 1 To StCount arrStations(i, 1) = rngStations.Cells(i) arrStations(i, 2) = Application.WorksheetFunction.CountA(rngStations.Cells(i).EntireColumn) - 1 Next Continue = True While Continue = True Continue = False For i = 1 To StCount - 1 If arrStations(i, 2) > arrStations(i + 1, 2) Then sTemp = arrStations(i, 1) lTemp = arrStations(i, 2) arrStations(i, 1) = arrStations(i + 1, 1) arrStations(i, 2) = arrStations(i + 1, 2) arrStations(i + 1, 1) = sTemp arrStations(i + 1, 2) = lTemp Continue = True End If Next Wend For j = 1 To 3 Randomize ListedOnes = "|" For i = 1 To StCount Attempts = 0 Set rngCol = rngStations.Find(what:=arrStations(i, 1), lookat:=xlWhole) Set rngRow = ThisWorkbook.Worksheets("Munka1").Range("A:A").Find(what:=arrStations(i, 1), lookat:=xlWhole) Do lTemp = Int(Rnd * arrStations(i, 2)) + 1 sTemp = rngCol.Offset(lTemp) Attempts = Attempts + 1 Loop Until ((InStr(ListedOnes, sTemp) = 0) And (Application.WorksheetFunction.CountIf(rngRow.Resize(, 4), sTemp) = 0)) Or (Attempts = 5000) If Attempts = 5000 Then MsgBox "Úgy tűnik, ezt a sorsolást nem tudom befejezni a feltételek sérülése nélkül. Lehet, hogy ha elölről kezdjük, akkor menni fog." Stop Else ListedOnes = ListedOnes & "|" & sTemp rngRow.Offset(, j) = sTemp End If Next Next End Sub
Jelzem, hogy ha van két vagy több dolgozó ugyanazzal a névvel (pl. két Kis János), azokat egyedi névvel (pl. Kis János I. és Kis János II.) meg kell különböztetni a listában.
Hát ezt így most nehéz, ennyi év után, de emlékeim szerint az Odalbeállítás ablakban a Lap fülön találod meg a nyomtatáskor fent ismétlődő sorok beállítását.
Ami a láblécet illeti, ott az élőfej/élőláb lapon az egyéni élőlábat kell választani, és ott a különböző építőlockákból összetenni azt a lábléc infót, amit akarsz.
Bocs, hogy beleszólok, de a két verzió kombinációját kérte a kérdező a későbbi hozzászólásában (ld. 33375): "egy sorba es oszlpoba se keruljon ugyanaz az ember"
Elkészült egy nagy táblázatom. Segítségetekkel megoldódott az 1-es sor rögzítése, benne adatokkal az oszlopcellák A1; B1; C1 stb. láthatósága görgetésnél.
1. Most szembesültem: nyomtatásnál az oldalakon viszont nem látszik ez a "fej" sor. Hol tudom beállítani a láthatóságát?
2. megoldható-e: a mentési file név automatikusan megjelenjen pl. lábjegyzetben? és nyomtatásban is látható legyen?
Gyorsan osszedobtam egy kis szemleltetot. (A jobb oldalon egy matrix lathato, h melyik operator melyik allomast tudja.)
Szoval egy olyan formula rengeteget keresek amivel a piros mezok automatikusan kitoltodnek (gombnyomasra) figyelembe veve azt, h melyik operator (vilagoskek) melyik station-t tudja csinalni, pluszba meg aztis figyelje, h egy sorba es oszlpoba se keruljon ugyanaz az ember.
Remelem igy mar elegendo informaciot tudtam szolgaltatni es tudtok erdemleges informacioval segitsegemre lenni :)
Ha csak ennyi a feladat, akkor a válasz igen, és szerintem ebben a körben valaki meg is tudja oldani, igaz, csak a pimre által is hiányolt kiegészítő információk birtokában.
Ha olyan rendszert akarsz, amely a sorsolásnál figyelembe veszi a Munka Törvénykönyve által előírt mindenféle dolgokat, pl. a műszakrendre vonatkozó szabályokat (ki dolgozik reggel/délután/éjszaka, ki a beugró, hány napot dolgozhat az ember egyhuzamban, kinek mikor kell pihenőnapot adni, ki mikor megy szabadságra stb.) az már necces, mert szerintem egyikünk sem munkajogász.
Sziasztok Egy olyan kerdessel fordulok hozzatok, amire eddig sehol sem talaltam megoldast. Egy random muszakbeosztas generatort szeretnek kesziteni, ami figyelembe veszi, hogy az adott operator (egy operator tudhat egy, vagy tobb allomast is) melyik allomast tudja es nem kerul az adott idoszakon belul tobb allomasra (mivel nemtud egyszerre 2 helyen lenni egy ember ugyebar) Letrehozhato-e barminemu formula ami egy gombnyomasra kisorsolja a fent emlitetteket figyelembeveve a muszakbeosztast? Elore is koszonom a valaszt. Udv: Szittyo
Adott egy tábla, ahol a G2 cellában lévő SZUM(A2:F2) függvényben az „F” -et változóként szeretném használni, úgy hogy a függvény lefele másolható legyen. Az H1-be írnám be a mindig változó értéket.
Ezzel próbálkoztam =SZUM(A2:INDIREKT($H$1&2)), az eredmény jó, de lefelé másolva az indirekt függvényben a sor azonosító nem változik.
Egy olyan táblához kellene ez a megoldás, ahol az összesen adatokat tartalmazó G oszlop mindig a H1-ben megadott oszlop betűjeléig adná Össze az adatokat.
Nem vagyok egy power pivot guru, de szerintem a hibaüzenet azt jelenti, hogy az IF kifejezésed kiértékelése IGAZ esetén szöveget ad vissza, HAMIS esetén numerikus értéket, és így az eredmény egységesen csak variant típusként értelmezhető, az meg neki nem teccik valamiért. Javaslom, próbáld meg szöveggé konvertálni a HAMIS feltételre visszaadott [Period Number] értéket, pl. a FORMAT függvénnyel, valahogy így:
van egy eleg szimpla excel formulam ami tok jol mukodik =IF(G8<9.9,CONCATENATE(G3,G8),G8)
nah most ezt szeretnem implementalni a power pivot-ba ahol elvileg igy nezne ki =IF([Period Number]<9.9,CONCATENATE(0,[Period Number]),[Period Number])
viszont powerpivot az alabbi error-t dobja:
Expressions that yield variant data-type cannot be used to define calculated columns.
amit idaig talaltam ott a formatum (jelen esetbe a period number) ra ter ki, hogy az helytelen. nah en a formatumot az adott oszlopra mar atallitottam mindenre, text,genera,decimal,whole, number, viszont nem sikerult megoldanom.
tudnatok segiteni hogy tudnam power pivot dax kompatibilassa tenni?
van 1 oszlopom period number ha erteke 1-9 kozott van akkor adjon hozza nullat eredmeny 01-09, ha 10 v felette akkor maradjon az eredeti.
a vegeredmeny amikor pivotba kiforgatom akkor olyan sorrendet szeretnek hogy 01-02-03-...10-11-12
ha nincs 01 akkor a sorrend alt ez: 1 10 11 12 2 3 45. ezt szeretnem elkerulni. esetleg van a pivot tablaba vmi beallitas?
Kösz a választ, de sajnos a pivot sem követi a változásokat.
Nekem fontos lenne, hogy a megnyitott munkafüzetben a törzstáblában történt változást (törlés, módosítás, új felvitel) lekövesse a második munkafüzet. Ne kelljen egy változtatás után új szűrés vagy pivot. dinamikusan kövesse a változást.
Szeretném azt elérni, hogy csak az azonos keresztnevűek adatai kivéve a lakcím, egy másik munkafüzet meghatározott cellájába legyenek felsorolva egymás alá.
Próbálkoztam speciális szűréssel de az nem jó mert a tartalom nem dinamikus ezért ha az első munkalapon törlök egy adatot a szűrt munkalapon nem követi a változást. Makrómentes megoldásra lenne szükségem.
Köszi, igen a visible-t már ismerem. Eredetileg nem is kellett, de a végén mégis beletettem, mert csan én futtatom a programot így nem zavaróak az ablakok és látom hol tart a folyamat. Meg a tesztelésnél elég sokszor leakadt a program hibával, aztán a gép leállításakor reklamált a windows, hogy még be kell zárnia tizenvalahány mentetlen word ablakot ami nem is volt látható :o)
Azt viszont szeretném megkérdezni, hogy mi a különbség aközött, hogy a Doc.Close, illetve a Wrd.Quit után ottmaradó változó értékénél azt látom, hogy No Variables:
Sziasztok! Segítsèget kèrnèk. Az első kérdésem nagyon alap. Tud-e egy táblázat akár 100-200 munkalapot kezelni? A másik kicsit már komplikáltabb. Adott egy táblázat B:1 cellája, ami “Importrange” függvénnyel, dinamikusan van töltve (több partner adatlap bevételi összesítése). Lehet-e olyat megadni – mondjuk “IF” függvénnyel – hogy a B:2 cellában szept. 30,-án rögzítésre kerüljön a B:1 értéke, október 30,-án A B:3 cellában a (B:1)-(B:2), november 30,-án a B:4 cellában a (B:1)-((B:2)+(B:3)), stb. Tehát a kérdésem igazából az, hogy a dinamikus cellatartalmat tudom-e adott időpontban rögzíteni egy másik cellában. Illetve, ha ez megoldható, akkor be kell-e írnom az adott “IF” függvénybe ágyazott “SUM” függvényt a B oszlop minden cellájába, vagy esetleg ez is megoldható valamilyen húzásos módszerrel. Nos ha van megoldás, kérem tegye meg, hogy mondjuk a B:4 cellába kerülő függvényt leírja nekem. Az egész bonyolításnak az az oka, hogy van pillanatnyilag kb 50-60 partner, aki havi szinten 1, max 2 bevételt generál. Szóval felesleges lenne minden partnernek havi táblát csinálni, viszont mégis szükség lenne egy havi bontásra, lehetőleg automatizálva.
Ja, egy apróság. A kèrdèsem igazából nem az excelre, hanem a Google táblázatokra vonatkozik. De ha egyáltalán van megoldás, remènykedek, hogy ott is működik. Nagyon köszönöm a segítséget! Tisztelettel: Tóth Gábor
Egy apró javaslat. Ha tovább is dolgozol a programmal, akkor javaslom a Set wrd = CreateObject("Word.Application") sor után beszúrni a következő sort:
wrd.Visible = True
Ennek az az előnye, hogy láthatóvá teszi a Word-öt, és a dokumentum létrehozása után debug módban ellenőrizni tudod, hogy az egyes lépések után az történik-e, amit szeretnél.
Aztán még annyi, hogy a doc.Close után nem sok értelmét látom a Set doc = Nothing parancsnak, hiszen a lezárás után úgyis használhatatlan az objektum beállítás.
És ugyanez a wrd.Quit, ami után a Set wrd = Nothing szintén felesleges, hiszen a Quit már lezárta a Word-öt.
Az internetes kutakodásokból több helyről összeraktam az alábbi barkácsmegoldást, ami jó lett. Úgy néz ki, ha simán a word ablakba másolom be akkor már külön kezeli a bekezdéseket.
Set wrd = CreateObject("Word.Application") Set doc = wrd.Documents.Add doc.Activate Range("A1").Copy doc.Characters.Last.Select wrd.Selection.PasteSpecial DataType:=9 Application.CutCopyMode = False doc.Paragraphs.Add Range("B1").Copy doc.Characters.Last.Select wrd.Selection.PasteSpecial DataType:=9 Application.CutCopyMode = False doc.SaveAs2 Filename:="C:teszt", FileFormat:=16 doc.Close Set doc = Nothing wrd.Quit Set wrd = Nothing
Sajna nem. Felülírja. Ha kitörlöm a látható utolsót nem marad semmi. Érdekes módon, ha kitörlöm a "DataType:=9"-ot ami definiálja hogy képként kerüljön be pontosabban "EnhancedMetafile" formátumban, akkor szépen egymás alá teszi, de nem képként. A wordhöz béna vagyok. A leírások alapján a Paragraphs.add új bekezdést hoz létre. De lehet hogy a képeket nem a bekezdésekhez kellene beilleszteni.
Excel-ből Word-be másolás képként. Mit és hogyan kellene módosítanom, hogy a Word-ben megjelenjen mind a két kép és ne csak az utolsó. Jelenleg úgy néz ki, hogy minden beillesztés felülírja az előzőt.
Set wrd = CreateObject("Word.Application") Set doc = wrd.Documents.Add Set para = doc.Paragraphs.Add Range("A1").Copy para.Range.PasteSpecial DataType:=9 Application.CutCopyMode = False Set para = Nothing Set para = doc.Paragraphs.Add Range("B1").Copy para.Range.PasteSpecial DataType:=9 Application.CutCopyMode = False Set para = Nothing doc.SaveAs2 Filename:="C:tesztteszt", FileFormat:=16 doc.Close Set doc = Nothing wrd.Quit Set wrd = Nothing
Egy cellában vagy érték vagy képlet lehet. Ha képlet van benne és felülírod számmal, akkor később már nincs ott a képlet.
Másrészt egy képlet nem tartalmazhat önmagára hivatkozást, tehát az A2 cella képlete nem lehet =A1+A2 - illetve lehet, de az körkörös hivatkozás hibajelzést okoz és 0 eredményt.
Makróval megoldható ez a feladat, háromféle módon is.
1. amikor egy A oszlopbeli cella eredményét módosítod, akkor a B oszlopbeli cellához hozzáadja az értéket és kinullázza az A oszlopbeli cellát - ez a munkafüzet változás eseménykezelésben valósítható meg és minden A oszlopbeli módosításra végrehajtja az Excel.
2. kijelölöd az A oszlopbeli cellákat, amiknek az eredményét hozzá szeretnéd adni és gombnyomással vagy gyorsbillentyűvel vagy menüből meghívod a makrót
3. minden esetben, amikor meghívod a makrót, az A oszlop meghatározott tartományát átmásolja a B oszlopba.
A három makró egy picit különbözik egymástól. A makrókat az adott munkalap kódlapjára kell bemásolni (jobb egérgomb a lapfülön, kód megjelenítése). Ha az eseménykezelést választod, akkor a másik kettőre nincs szükség, hiszen minden egyes változtatás azonnal végrehajtódik. Így az A oszlopod lényegében mindig 0 értéket fog mutatni.
1. Eseménykezelés Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column > 1 Then Exit Sub Application.EnableEvents = False Dim cl As Range For Each cl In Target.Cells cl.Offset(0, 1).Value = cl.Offset(0, 1).Value + cl.Value cl.Value = 0 Next Application.EnableEvents = True End Sub
2. Kijelölés összeadásra
Sub osszeado2() Dim cl As Range If Selection.Columns.Count > 1 Or Selection.Column <> 1 Then MsgBox "Nem lehet összeadni, nem az első oszlopot választottad ki!", vbCritical Exit Sub End If Application.EnableEvents = False For Each cl In Selection.Cells cl.Offset(0, 1).Value = cl.Offset(0, 1).Value + cl.Value cl.Value = 0 Next Application.EnableEvents = True End Sub
3. Konkrét terület összeadása Sub osszeado() Dim cl As Range Application.EnableEvents = False For Each cl In Range("A1:A100").Cells cl.Offset(0, 1).Value = cl.Offset(0, 1).Value + cl.Value cl.Value = 0 Next Application.EnableEvents = True End Sub
Esetleg még az is járható út lenne ha lenne egy gomb ami ezt a folyamatot elindítaná hogy adja össze az A1+B1.....A100+B100 sorokat, írja be az értéket a B1től B100ig és az A1től -A100ig állatsa ismét nullára az értéket
Nekem is nagyon úgy tűnik, hogy az lenne. Makróval talán meg lehetne oldani, ha lehet úgy makrót írni, hogy kérje be a napi számot, mert akkor már meg lehetne tenni, hogy azt beírni az első oszlopba, és hozzáadni a másodikhoz. Azt viszont nem tudom, hogy ilyet lehet-e csinálni. Talán majd a guruk megmondják, vagy esetleg lesz más ötletük.
Egy számotokra tuti egyszerű kérdéssel fordulnék hozzátok.
Hogyan tudnám megoldani azt, hogy pl A1 értéke legyen pl5 és jelenleg A2 értéke 10 de mégis már az jelenlegi összeget írja be oda. Tehát 2 cellás összeadás kellene nekem ahol a 3. érték is a 2. cellában jelenjen meg. Remélem érthető és nem annyira bonyolult mint ahogy leírtam.
Ez amolyan napi és eddig összesen számláló lenne, de nem használnék fel rá 3 cellát ha nem nagyon muszáj, mert ha úgy csinálom akkor mindig először az összes cellámban az összesen értéket át kellene írni, mármint minden nap. Tehát a lényeg két szám összege(A1+A2) de a szum (A2) helyet foglalja majd el (félek hogy ez egy végtelen ciklus lenne :D)