Hirdetés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- eBay-es kütyük kis pénzért
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- D@reeo: Pi-hole és a Telekom Sagemcom F@st 5670 DNS beállítása
- Brogyi: CTEK akkumulátor töltő és másolatai
- Sub-ZeRo: Euro Truck Simulator 2 & American Truck Simulator 1 (esetleg 2 majd, ha lesz) :)
- bb0t: Ikea PAX gardrób és a pokol logisztikája
- GoodSpeed: A RAM-válság és annak lehetséges hatásai
-
LOGOUT
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
föccer
nagyúr
válasz
GabN73
#51995
üzenetére
Felveszel egy segédoszlpopot és a dátumból kiszeded az évet. Ugyan ezt megcsinálod a hónappal, esetleg a nappal, ha úgy adódik.Hurrá.Nem is kell segédoszlopban ezt kiszedned ha jobban meggondolom.Segédtáblákat csinálsz. 3-at a havi, heti és napi bontásra. Akár külön munkalapra is. ( Meg lehetne csinálni 1-be is az azgészet, de azt macerás elmagyarázni így a fórumon.)
Szóval a segédtábák tök ugyan úgy fognak működni, csak más időszakokokra fognak szűrni, ezért nem magyarázom el 3x, csak 1x, a többi menni fog.
Szóval segédtábla, A1: "Időszak kezdete:" B1: üresen marad, mert ez lesz az adatbeviteli meződ. Itt rövid dátum formátummal lehet megadni a kezdő dátumot. A2: időszak hossza: B2: adatbeviteli mező, C2-be pedig az év, hét, vagy nap felirat, hogy lássa az user, hogy éppen 6 hetet vagy 6 napot adott meg a szűrési időtartalmra.
A3: számított átlag összesen
A4: Számolt darabszám összesenA6: név, B6 folyamat (illetve minden olyan jöhet egymás mellé, ami az eredeti adattáblában van. Ez egy fejléc sor.
A7: SORBA.RENDEZ(EGYEDI(SZŰRŐ()))) függvényeket kell egymásba ágyazva használnod. A trükk a SZŰRŐ függvényben van. A tartománya az eredeti táblázat név oszlopa. A szűrőben a Befoglalás paraméterében kell betenni az eredeti táblázat dátum oszlopát. >=B1 és ezt meg kell szorozni (befoglaláson belül zárójelezz) a <=B1+(B2*[7 ha heti, 30 ha havi, 1 ha a napi táblában vagy]). Az nem gond, hogy a befoglalás a szűrő tartományon kívül van, érteni fogja az excel, hogy mit akarsz.
Szóval ha jól csináltad a szűrést, akkor az A7-től fefelé megjelenik az összes olyan név, ami az adott kezdő időponttól, az adott időtartamban szerepelt a táblázatba, ráadásul betű sorrendben. Ezzel kész van az A oszlop, dinamikusan.
B7:
HA(A7="";"";ÁTLAG(SZŰRŐ()) kezdetű feltétellel kezdesz. A trükk itt is szűrőben van. Az ÁTLAG függvény tömböt vár, amit a szűrő függvény ad meg. A szűrő tartománya ezútal az eredeti táblázat azon oszlopa, amiket átlagolni szeretnél. Befoglalásba az A7-ben is használt befoglalás paraméter kerül, de meg kell szorozni az eredeti táblázat név oszlopa=A7 kitétellel. Ezzel elérjük azt hogy csak az eredeti táblázatból csak és kizárólag azoknak az átlaga kerüljün számításra, akinek a neve szerelep a sor elején.C7: Pepítában ugyan az mint a B7, csak az ÁTLAG függvény helyett a DARAB2 függvényt használd.
A B7 és C7 képletét le kell húzni addig amíg elképzelhető, hogy számítást kell végenzi. Vigyázz, A7 képletét nem szabad lehúzni, mret kibontás hibát fog adni.
Na Wall of text vége. Remélem érthető.
Mondjuk lehet gyorsabb lett volna megcsinálni, mint ezt begépelni 
üdv, föccer
-
föccer
nagyúr
válasz
GabN73
#51989
üzenetére
O365-ben sima liba. Régebbi verzióban sem annyira gondos.
Használd az ÉV() HÓNAP() függvényeket segédoszlopban, majd használni kell a szűrő függvényeket, amivel az adott időszakra korlátozod az adatok listázását. Ezt követően EGYEDI függvénnyel kiemeled a neveket és ezek mellé darabhatöbb, szumhatöbb függvényekkel számolsz.
Diagrammokra is ki lehet rakni az eredményeket és ha nagyon akarod, akkor kimenthető pdf-be.
üdv, FG
-
föccer
nagyúr
válasz
KubanitoS
#51872
üzenetére
Muszáj lesz valami segédoszlop, ha nem akarsz makrót csinálni.
Egy egyszrű megodás, ha az aktuális készletet külön cellába rakjuk, a készletfogyást szummázuk és az első készletből vonjuk. Ez akt készletet ad. Ha kell a fogyás napján léő készlet, akkor a H2 képlete: =HA(G2="";"";C1-G2), és onnantól a H oszlop képlete H3-tól lefelé: =HA(G7="";"";$C$1-SZUM($G$2:G1001))
A fenti képletezésben a SZUM második elemének tetszőlegesen nagy számot lehet adni (kb 1millióig). Most ~1000 tételig kezeli. Ha valamiért nem akarod beégetni a maximális sorok számát, akkor meg lehet mókolni, hogy dinamikus legyen a függvényekben a tömbök kezelése, de azzal már foglalkoznom kell pár pect, de azt csak hétfőn tudom megcsinálni

-
föccer
nagyúr
válasz
KubanitoS
#51869
üzenetére
Ha jól sejtem valami ilyesmi kell. A C oszlopba írja a számított eredményeket. A képletbe a dollár jelek fontosak (ezek rögzítik le, hogy az automatikus kitöltésnél ne "másszon el" a B1 cella hivatkozása). A HA feltételt csak azért raktam be, hogy ha a B oszlopban nincs kitöltve az adott sora, akkor ne legyen csúnya.
C oszlopot tetszőlegesen le lehet húzni.

-
föccer
nagyúr
Sziasztok!
Készítettem néhány user form-ot. Listboxok, adat betöltés, kiválaszt, listázás, minden szipi-szupi.
Listából törlés és elemek módosítása, új elem felvétele is működik.
Van egy kilépés command button. Azt kellene figyelnem, hogy történt-e az adott listában (ezen az userform-on) módosítás, hogy a kilépénél kérjen-e megerősítést-e vagy sem.
Arra gondoltam, hogy UF activate-nél létrehozok egy változót, amit figyelek, illve a módosításnál állítok. Hogyan deklaráljam, hogy minden, az adott UF-hoz tartozó sub elérje, de semmi más ne érje el, ne akadhasson össze máshol deklarát cuccokkal.
Köszi!

Üdv, FG
-
-
föccer
nagyúr
Amikor 2 órát szívsz egy hiábval amire rájössz, hogy a Value helyett Values -t írsz a kódba ...
-
föccer
nagyúr
válasz
p5quser
#51780
üzenetére
Meg lehet fogalmazni az adatérvényesítésnél úgy a listát, hogy dinamikusan töltse be aza datokat egy tartományból. Ehhez használd az "INDIREKT() függvényt a Forrás megadásánál. pl
=INDIREKT("seged!$A$2:$A"&seged!$C$1+1)
Itt a seged munkafüzet C1 cellájában egy darab2 függvénnyel megszámoltatom, hogy mennyi eleme van a segedA2-től induló tömbben. Így ha a tömb elemei bővűlnek, dinamikusan bővíti a lista elemeit is. Az A2 tömbbe meg szűrővel, egyedivel sorba rendezéssel lehet manipulálni a listába betöltendő elemeket.üdv, fg
-
föccer
nagyúr
válasz
xrichiex
#51774
üzenetére
Ez így leírva egy kis segítséggel simán megtudod csinálni te is. 1 gomb ami töröl, az makróban 1 sor. Az egyésgárat simán függvénnyel lehet kerestetni, számolások, kedvezmény sima liba megint. Felsorolást, választható menüt a tételekhez megint könnyen meg lehet csinálni.
-
föccer
nagyúr
válasz
Fferi50
#51757
üzenetére

Erről tudnál még pár szót írni, hogy pontosan hogy és miért működik így? Nem vagyok programozó így nem látom át elsőre. Ezek azért nem akkora számok, hogy problémát kellene okoznia pontos számítársa. Nála is előjött ez az érték, pedig 100 lépéses iteráció van beállítva.
-
föccer
nagyúr
válasz
andreas49
#51730
üzenetére
Az agromentumok listájában nem látom az "N"-et, csak az "M"-et. Nem elírás?
Illetve ha valamiért nincs, akkor simán vond ki a két dátumot egymásból, ekkor egy dátum értéket kapsz, ami gyakorlatilag napokban adja meg a különbséget. Ha precízebben kell csak a hónap, akkor nyerd ki a dátumból az évet és a hónapot. és ebből számítsd ki az eltelt hónapokat. (év(dátum2-év(dátum1))*12+hónap(dátum2)hónap(dátum1)
ha leakadtsz, akkor hétfőn összerakom O365-ben, sima liba.
üdv, föccer
-
föccer
nagyúr
válasz
bomizo
#51726
üzenetére
Akkor =(SZUM(A2:A4)-szum(B2
4))/3Illetve ha bővebb tartomány is lehet, akkor az osztóra lehet kitalálni a darab2 függvényt. A szum mehet nyugodtan lentebbig is, mert az ures cellákat a szum 0-nak veszi, így az nem szól bele az összegbe, viszont az osztónál csak azokkal kell számolni, ahol van érték.
-
föccer
nagyúr
válasz
Delila_1
#48502
üzenetére
Delila_1
Ez nagyin hasznos kis kód, fel is használom!
Egy olyan kédésem lenne vele kapcsolatban, hogy ha bővíteni akarom a kezelt számokat, akkor hogyan kellene bővíteni a kódot? Nem kell megcsinálnom, pusztán a kód megértését és tanulása miatt szeretném kérni, hogy ha 1-2 sorban tudnál róla írni.
Köszönöm,
föccer
-
föccer
nagyúr
válasz
Fire/SOUL/CD
#51713
üzenetére
Igen láttam, csak közben megbeszélésen is vagyok.

Közben megbúboltam a szűrős függvényt.
Ez matematikailag helyes? Halmazelméletben nem vagyok túl penge
Elegendő, ha minden halmazt csak az első halmazban nézi vissza? Implicit működni látszik, szépen kitesztelgettem.=SZŰRŐ(halmaz1;((DARABTELI(halmaz2;halmaz1)>0)*(DARABTELI(halmaz3;halmaz1)>0)*(DARABTELI(halmaz4;halmaz1)>0)*(DARABTELI(halmaz5;halmaz1)>0)*(DARABTELI(halmaz6;halmaz1)>0));"NINCS EGYEZŐ")
-
föccer
nagyúr
Sziasztok!
Két (vagy több) tömb metszetét hogyan tudom a legegyszerűbben megkapni? Természetesen dinamikusan kellene
Makróval megy, úgy triviális, de nincs erre beépített eljárás, vagy függvény?Keresek rá megoldást, de googli most nem a barátom

-
föccer
nagyúr
Én kigyűjtöttem egy külön táblázatba az A oszlop egyedi értékeit G1-be az
=SORBA.RENDEZ(EGYEDI(SZŰRŐ(A:A;A:A<>0)))
függvénnyel. Majd H1 képlete=SZUMHATÖBB(C:C;A:A;G1;B:B;"=0")O365, tömbfüggvényei kellenek hozzá.
A G1-ben a szűrő csak azért kell, hogy az A oszlop üres sorait kivegye, illetve a sorba.rendez csak a felhasználhatóságot javítja.

-
föccer
nagyúr
válasz
föccer
#51621
üzenetére
Jah, még annyit elfelejtettem írni, hogy csak úgy működik helyesen, ha minden adat és a kilistázás is az első sortól indul, mert a függvény a sorazonosítókat használja fel arra, hogy kiszámolja, hogy éppen hányadik embernél jár és melyik szakaszát kell kiszedni a feladatlistának.
-
föccer
nagyúr
Lehet nem a legszebb megoldás, de O365-ben szépen működik.
Feladat lista A:A oszlopban, Emberek listája G:G oszlopban. I1 képlete lentebb.
A függvény érzéketlen a feladatok és emberek darabszámára. Az I1 képletét addig kell lehúzni, amíg elképzelhetőnek tartod a maximális emberek számát.
A függvény nem használ segédoszlopot, és nem kezeli az esetleges többszörös neveket/feladatokat. Az algoritmus úgy dolgozik, hogy az első embertől kezdve osztja ki a feladatokat annak sorrendjében, a neki kijáró számban. A maradékok egyenletesen vannak elosztva, szintén az első embertől kezdődően.
=HA(SOR()>DARAB2(G:G);"";TRANSZPONÁLÁS(INDIREKT("A"&(SOR()-1)*KEREK.LE(DARAB2(A:A)/DARAB2(G:G);0)+HA(SOR()<=MARADÉK(DARAB2(A:A);DARAB2(G:G));SOR();MARADÉK(DARAB2(A:A);DARAB2(G:G))+1)&":A"&((SOR()-1)*KEREK.LE(DARAB2(A:A)/DARAB2(G:G);0)+HA(SOR()<=MARADÉK(DARAB2(A:A);DARAB2(G:G));SOR();MARADÉK(DARAB2(A:A);DARAB2(G:G))+1))+(HA(SOR()<=MARADÉK(DARAB2(A:A);DARAB2(G:G));KEREK.LE(DARAB2(A:A)/DARAB2(G:G);0)+1;KEREK.LE(DARAB2(A:A)/DARAB2(G:G);0)))-1)))
ps abban az esetben ha kevesebb a feladat, mint az ember, akkor kicsit meghülyül a függvény. Ha szükséges, akkor megcsinálom, hogy ezt is szépen lekezelje, de azt már nagyon akarnom kell.

-
föccer
nagyúr
válasz
Bacusuz
#51617
üzenetére
Zsigerből valami ilyesmivel próbálkoznék.
-
föccer
nagyúr
Vagy simán függvényekkel is ki lehet mókolni. 2 megoldás jut az eszembe hirteken.
1: segédoszloppal. A feladatok mellé felveszel egy 1..n-ig történő pozitív egész számokhat (kerekítés vagy kerek.fel vagy plafon függvény), ahol n a személyek száma (darab2 függvény). Ez után transzponál függvénnyel egymás mellé rakod a neveket és szűrő függvénnyel pedig alá felsorolod a feladatokat (szűrőben a segédszámokra szűrsz).
2: a feladat és dolgozó ember számának függvényében kiszámolod, hogy 1 embernek mennyi feladat jut (maradékra figyelni), majd indirekt függvénnyel meg tudod adni a szükséges tól-ig tömbképleteket. A maradék az utolsó embernek jut. Vagy el is lehet osztani a maradékot,, ez már algoritmus kérdése.
üdv, föccer
-
föccer
nagyúr
Sziasztok!
VBA-ban az megoldható, hogy addig fusson, kérdés nélkül egy ciklus, amíg a felhasználó be nem avatkozik? Mondjuk egy escape megnyomása, vagy bármi egyéb? A ctrl+break elvileg működhet?
Valahogy úgy képzelem el, mindha egy folyamatjelző pörögne végig, majd visszaáll a ciklus kezdő értékre, számolja újra és rakja ki az adatokat, amíg az user meg nem akasztja.
Illetve van-e arra mód valahogy hogy a makró futtatása alatt az user egy cellába tudjon értéket megadni?
Köszi

üdv, föccer
-
föccer
nagyúr
válasz
Fire/SOUL/CD
#51435
üzenetére
FÜGG.HALMOZÁS
Hogy én éveken keresztül mit szívtam, hogy megoldjam simán indirekt cella hivatkozásokkal

Egy kérdés.
Ez így működik? Application.Wait(Now + "00:00:0.01")
Egy for ciklust szeretnék lassítani, ciklusonként 1 század másodperccel.
-
föccer
nagyúr
-
föccer
nagyúr
válasz
Darko_addict
#51339
üzenetére
Mintha a cimke tartomány sérült vagy törlésre került volna. Súgóba írd be, hogy névkezelő, és kiadja, hogy hol van a cimke tartomány, azt ellenőrízd.
üdv, föccer
-
föccer
nagyúr
Jó volna PBI-is foglalkozni. Még nem szántam rá magamat, h rászánlam az időmet. Illetve a kritikus rendszerekhez nem is adnak még olvasási jogot sem, hogy direkt felcsatlakozzam az adatbázis szerverre. Mondjok ezt az excel is meg tudná csinálni, de nem eröltetem.
üdv, föccer
-
föccer
nagyúr
Object-definied error-t dob.
Akt_datum_oszlop értéke helyesen érkezik H19-ből. Ebbe az oszlopba kellene bemásolnia az eredményeket.Kezelő fül T2:T35 értékei menjenek az MBO haladás fül 4-37 sorába, a kiválasztott, Akt_datum_oszlop oszlopáába.

Mi a gondja?
Biztos valami extra banális dolog.Köszönettel ismételten a sok-sok segítségért.

Sub Eredmenyek_kimasolasa()
'
' Eredmenyek_kimasolasa Makró
'
'
Dim Akt_datum_oszlop As Integer
Akt_datum_oszlop = Workbooks("Tech_elemzo_recet_mintavetel_v4_3.xlsm").Sheets("KEZELŐ").Range("H19").Value
MsgBox (Akt_datum_oszlop)
Workbooks("Tech_elemzo_recet_mintavetel_v4_3.xlsm").Sheets("MBO_haladás").Range(Cells(4, Akt_datum_oszlop), Cells(37, Akt_datum_oszlop)).Value = Workbooks("Tech_elemzo_recet_mintavetel_v4_3.xlsm").Sheets("KEZELŐ").Range(Cells(2, 20), Cells(35, 20)).Value ' MBO KPI
MsgBox ("KÉSZ")
End Sub -
föccer
nagyúr
válasz
Fferi50
#51275
üzenetére
Egy kis WoT, hátha érthető az egész történet.
Főnökség ad-hoc jelleggel talál ki különböző statisztikai mutatókat és azokon "finomhangolnak" hogy éppen mit akarnak látni. 3 évre visszamenőleg, havi bontásban. Az egyes elemzéseket külön-külön rakom össze a táblákat és makróval pörgetem az időket bennük, betöltött alapadatokat. Alapadatok célszoftver riportáló eszközéből jönnek. Van hogy olyami kell, ami már meg van írva, csak más időintervallumra. Igen ám, de a gyártásfelügyeleti célszoftver nem minden riportban ad dátumot, csak a riport eszközben lehet beállítani, hogy milyen dátumok közötti adatokat adja meg. Így vagy havi bontásban szedegetem le a riporterből, vagy egy másik riporot hazsnálok, amiben van ugyan dátum, de nem arról szól amit nekem fel kell hazsnálnom. Így erre készítettem egy konverziót táblát, ami a dátumos riportból elkészíti a szükséges riport formátumot és azt átrakja az eredeti számoló táblába. Így lehúzom a 3 éves adatsort, bepakolom a konverziós táblába, ami legenerálja a szükséges riport formátumot a megfelelő havi bontásban és szépen megeteti a számoló táblával. Indítaná a számoló táblának a makróit, ami megcsinálja szsükséges elemzéseket, lementi az eredményt, majd jöhet a következő hónap, szűrés, riport generálást, adat átadás, elemzést mentés. És így tovább....
De akkor lehet azt kellene csinálni, hogy minden, már megírt makrót átrakok az riport konverziós excelbe és onnan vezérlek mindent. Igen ám ez jó is lehet, mert a 4 sub-ot bele fogom 1 for ciklusba ami végig megy a hónapokon. De mivel tudom biztosítani, hogy 1 for-on belül a 4 sub úgy fut le, hogy szépen, megvárja az egyik a másik futását, és minden rendben kiszámolódik és lementődik.
föccer
-
föccer
nagyúr
válasz
föccer
#51273
üzenetére
Illetve még annyi a kérdés.
Ha munkafüzet1-ben call-al meghívok egy sub-ot, ami a munkafüzet 2-ben fut és a futó sub-ban csak annyi van, hogy Akt_datum_oszlop = sheets("KEZELŐ").Range("H19").Value, akkor a munkafüzet1-ben keresi az értéket (ahol az első sub indult) vagy a munkafüzet 2-ben (ahová a call mutat)?
Köszi!
üdv, FG
-
föccer
nagyúr
Sziasztok!
Van egy adat feldolgozó munkafüzetem. Ez szépen paraméterezve, leválogat egy nagy adattömbből a szükséges elemeket és egy makróval átrakja egy másik munkafüzetbe a szükséges adatokat.
A másik munkafüzetbe a betöltött adatokon egy makró fut végig és készíti el a szükséges elemzést.
Hogyan tudom azt megoldani, h az első munkafüzet amikor átpakolja az adatokat a másodikba, akkor elinduljon a feldolgozó makró, és annak futása után (elemzés eredményei lementése után) visszavegye az irányítást és lépjen a következő ciklusba?
Ha az első munkafüzetbe simán berakom egy for ciklusba egy call metódussal, akkor megfelelő lesz? A for ciklus meg fogja várni, hogy lefusson a 2. munkafüzet makrója?
Első munkafüzetbe függvények válogatnak egy sima cellába kiválasztott dátum alapján. Ha a válogatás végig ment (kb 20-30 másodperc), akkor a Sub Adatok_atadasa_Tech_elemzonek() végzi el az adatok átadását, majd ott az Sub MBOKPI_szamitas() makró fut, ami megcsinálja a kalkulációt.
Amit még meg kell írni, de nem okoz gondot, hogy a kalkuláció eredményét kimentsem, illetve hogy pörgessem automatán a szűrést.
Köszönettel, Föccer
-
föccer
nagyúr
válasz
13128814
#51235
üzenetére
Csináld azt, hogy egy listába rakod a fájlneveket, akár elérési úttal. For ciklussal végig mész ezen a listán, beolvasod a teljes fájlnevet és megpróbálod megnyitni. Hibakezelést kell felépíteni arra az esetre, ha a fájl nem található, különben kiakad a makró.
Ha sikerül megnyitni, akkor már csinálhatsz vele amit akarsz, akár kimásolod a tartalmát, akár szerkeszted, de simán vissza is zárhatod.
üdv, föccer
-
-
föccer
nagyúr
válasz
Phobion
#51168
üzenetére
Ágyazd egymásba az Uniqe és a Filter függvényeket. A filter megcsinálja a szűrést, az Uniq vissza adja belőle az egyedi példányokat. Arra kell figyelni, hogy van amikor az uniq visszaad egy 0-as sort, mert a filter az üres cellákra 0 értékkel tér vissza.
Sima liba.
üdv, föccer
-
föccer
nagyúr
Szép napot.
Napi hülye vagyok.
Futás közben overflow hibát ad a kód. Releváns részletek
Dim Modositasok_szama As Integer
Modositasok_szama = Modositasok_szama + Sheets("Seged").Range("J4").Value
Az értékek pedig
Modositasok_szama = 32767 + 8Lépésenként nem tudom visszanézni, mert ez a 9300. ciklusban adja be (kb 25 ezer ciklus fut le)
A J4-ben szigorúan csak egészek lehetnek (J4-ben egy ellenőrző check szum van, ami 58 db, =HA(K3=K2;0;1) eredményét összegzi. (az 58 oszlop értékei közül mennyi eltérés van, és módosítások száma az összes elemzett sorra adja meg, hogy mennyi különbség volt.
Integer értéke rettenetesen sok lehetne, mégis overflow-ba fut.
Hogyan lehet ezen átlépni?
Köszi

üdv, FG
-
föccer
nagyúr
válasz
Fferi50
#51124
üzenetére
Össze kell fűzni, hogy melyik hónapnak a munkalapjáról kell kivenni. Nem fogom a függvényeket átírni, hanem csak 1 legördíthető cellából lehet kiválasztani az elemezni kívánt hónapot és indítani a makrót, ami szépen dolgozik és megcsinálja arabszolga munkát

Lehet nem elegáns

üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#51122
üzenetére
Nem az azonosítókat kell összehasonlítani, hanem az azonosítók által meghatározott sorokat, illetve azok adattartalmát. De alakul.
Már megvan az, hogy választható hónapra megvannak az egyedi sor azonostók és azok alapadatok beli pozíciója, sorazonosítója. Innentől kezdve indirektel simán kiszedem egy segédtábláta az aktuális és megelőző hónap adatait (szintén indirekttel összefűzve a képletet) a 2 kikeresett adatsor alá meg nyomok egy sima ha függvényt, ami eltérés esetén 1 eredményt ad, majd az ellenőrző sort szummázom. Ha szum=0, akkor azonos, ha nem akkor adott sor módosult és a mekró visszaírja ennek tényét.
Jó lesz ez, csak végig kellett gondolnom. Imádom az indirekt függvényt is.

üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#51120
üzenetére
Van egy üzem és egy receptszám oszlop. Az adatok országos listák, így minden üzem adata megvan benne. Viszont vannak olyan receptszámok, amik több üzemben is léteznek. Receptszám üzem szinten uniq, de globál szinten nem. Technikailag összefűtöm az üzem nevét és a receptszámot és ez adja a globál uniq azonosítót. hosszú évek óta így használom, kényszerből.
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#51118
üzenetére
Most az idei évet kell megcsinálnom, 1-5 hónap lesz terítéken.
A havi adatokat az A01;A02;A03;A04....A12 nevű munkalapokra rakom.
Minden ilyen munkalapon A
F oszlopokban vannak az adatok. 1 sor fejléc, alatta válozó mennyiségű sorban. Oszlopok adattipusai változó, szöveges, számos.Az egyedi sorazonosítókat egy külön munkalapon (Seged_modositasok) gyűjtöm össze Ez megadja, hogy milyen egyedi azonosító volt, melyik hónapba (milyen sorban). B oszlopba az első hónap azonosítói, C oszlopba írnám ki, hogy volt-e változás. (első hónapra nem lehet ellenőrzést futtatni, nincs előtte lévő adat). D oszlop, 2. hónap egyedi azonosítói, E, változott-e? F oszlop, 3. hónap alapdataim G oszlop változott-e?
Futtatás előtt kiválasztom Seged_modositasok!AC2 cellában lévő hónapot, ami [A02;A03....A12] értéket vehet fel. Ez megegyezik az alapadatok munkalapjainak a nevével és a Seged_modositasok fül első sorában lévő azonosítókkal (itt lesznek az egyedi azonosítók felsorolva.
A metodika valami olyasmi lenne, hogy sorban bepakolom egy szűrővel az adott havi és az előző havi egyedi azonosítókat és vizsgálom, hogy oszloponként volt-e eltérés-e vagy sem.
Nehezítés, hogy nem biztos, hogy lesz olyan azonosító, ami az előző hónapban még nem volt, így ezt kezelni kell, de azért ez még menni fog.

Jah, hogy így végig gondoltam makróval meg némi szűréssel nem is megoldhatatlan a feladat.
Hmm, mielőtt még nekiugranátok adjaotk még pár órát, lehet, hogy meg is csinálom.
fg
-
föccer
nagyúr
Sziasztok!
Van havi mentés egy adattáblából. Azonos oszlop azonosítókkal OFC.
Alatta hónapról-hónapra változhat az adattábla. A feladatom az, hogy kimutatást készítsek, hogy hónapról-hónapra mennyi sorban volt változás az előző hónaphoz képest.
A soroknak készítettem egyedi azonosítót, ami az adott hónapra ad 1-1 azonosítót, de a sorrend változhat.
Havi adatok külön-külön munkalapon vannak.
Brute force-on kívül van valami ötlet? Nincs erre valami beépített metódus? Havi 20-25 ezer adatsor van, soronként 58 oszloppal. Havi táblába is milliós ellenőrzés kellene.
Félek, hogy megint makrót kell írnom

üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#51092
üzenetére
Közben kibogarásztam, nagyjából értem. Csak nem ismerem a szintaktikai lehetőségeket a vba-ban.

Delila_1: O365 van a céges környezetben, így minden adott. Asszonynak csináltam valamelyik héten egy oda-vissza kereső táblát, de náluk valami rettenet régi verzió van, pedig elvileg államilag elérhető lenne nála is az O365, de a rendszergizdáék nem akarják felrakni, mert egyébként a cégnél senki nem használja az outlook-word kombón kívül. Outlookba névjegyeket minek frissíteni, van egy wörd vezetve az új belépökkel....
Totál káosz. Szóval ide próbáltam csinálni egy táblát, de annyira funkciószegény a régi verziója az O365 natív tömbfüggvényeihez képest, hogy inkább rábíztam asszoynyágra h győzze meg a főnökeit, hogy frissítsenek O365-re 
üdv, föccer
-
föccer
nagyúr
válasz
Delila_1
#51079
üzenetére
Sub Gyorsjelentesek_generalasa()
'
' Gyorsjelentesek_generalasa Makró
'
'
Dim Akt_sor As Integer
Dim Most As Date
Dim Kesz_db As Integer
Dim Tomb As String
Dim EE_szama As Integer
Dim Nyomatato As String
Most = Now
Application.StatusBar = "Gyorsjelentések generálásának folyamata: Előkészítés..."
Akt_sor = 0
Kesz_db = 0
EE_szama = 0
Nyomtato = "Microsoft Print to PDF"
Application.StatusBar = "Gyorsjelentések generálásának folyamata: Indítom a generálást..."
For Akt_sor = 3 To 4
Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
EE_szama = Sheets("KEZELŐ").Range("D23").Value
Select Case EE_szama
Case 1
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
Case 2
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
Case 3
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3")).Select
Case 4
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4")).Select
Case 5
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5")).Select
Case 6
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6")).Select
Case 7
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7")).Select
Case 8
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8")).Select
Case 9
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9")).Select
Case 10
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10")).Select
Case 11
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11")).Select
Case 12
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12")).Select
Case 13
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13")).Select
Case 14
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14")).Select
Case 15
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15")).Select
Case 16
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16")).Select
Case 17
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17")).Select
Case 18
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18")).Select
Case 19
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19")).Select
Case 20
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2", "EE_3", "EE_4", "EE_5", "EE_6", "EE_7", "EE_8", "EE_9", "EE_10", "EE_11", "EE_12", "EE_13", "EE_14", "EE_15", "EE_16", "EE_17", "EE_18", "EE_19", "EE_20")).Select
Case Else
Resume Next
End Select
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)
Kesz_db = Kesz_db + 1
Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & "/35 db jelentés elkészült"
Next
Application.StatusBar = ""
MsgBox "Kész vagyok. Köszönöm, hogy ma is dolgozhattam helyetted. Végrehajtási idő: " & Format(Now - Most, "hh:mm:ss;@")
End Sub -
föccer
nagyúr
válasz
Delila_1
#51079
üzenetére
H oszlopban sima szöveg függvényekkel van összerakva a leendő fájlok neve. Technikailag leveszi a dátumot, azt átrakja szövegbe =SZÖVEG(D15;"éééé")&"_"&SZÖVEG(D15;"hh")&"_" formátummal, mögé rakja a telephely azonosítóját, amit az az aktuális sor alapján alapadatokból kikeresi majd elé illeszti a megadott útvonalat és kész is. Ha változtatom az elérési utat, akkor elég 1 cellában, illetve az elemzett időszaknak megfelelően módosítja a fájlok neveit, hogy a kolléágk ki tudják keresni, hogy melyik kell nekik.
-
föccer
nagyúr
válasz
Delila_1
#51077
üzenetére
Csak megtaláltam, hogy mi kell nekem. Így működik a beállított nyomtatóra kiküldi a cuccot ahogy kell és átveszi a fájl nevét is.
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Sheets("Kezelő").Cells(Akt_sor, 8)Köszi ismételten.

üdv, föccer
-
föccer
nagyúr
válasz
föccer
#51073
üzenetére
A select case az szépen működik. Nem túl elegáns, de hibátlan. Szépsége a dolognak, hogy ahogy pörgetem a for-t, az EE_szama ugye lehet több vagy kevesebb, ugyan akkor az új kijelölési array felülírja az előző ciklusban használt kijelölést. Tehát nem hozzáadja az előző kijelölésekhez, hanem új kijelölést állít be, így nem kell azzal foglalkozni, hogy a korábbi kijelölést megszüntessem.
Nyomtatással viszont félsikert értem el. Kipróbáltam ez aze ExportAsFixedFormat-ot. Szépen le is generálja nekem a pdf-et és fel is rakja oda ahová kell, de hiába van beparaméterezve hogy vegye figyelembe az oldaltöréseket, nem úgy jön le a doksi, ahogy az a MS pdf printerével megszoktam és beállítottam.

-
-
föccer
nagyúr
válasz
Delila_1
#51072
üzenetére
Csak azt találtam, hogy Array-be kell fogni őket. Mást nem találtam. Viszont az Array tömbjének az összeállítására vagy dinamikus tömböt lehetne használni, de mivel a 19 esetre minden esetben konstans választ kell adni, így egyszerűbbnek (számomra, mint botcsinálta ember) tűnik megcsinálni.
Este találtam olya függvényt hogy ActiveSheet.ExportAsFixedFormat. Ezt akarom kipróbálni, hogy működik-e
-
föccer
nagyúr
válasz
Delila_1
#51070
üzenetére
Hát, ahogy jöttem-mentem a városban kattogot az agyam rajta. Lehet hogy az egészet beteszem egy select case statementbe. Miáltal fixen 0-20 közötti szám jöhet a feltétel alapjául, és a munkalapok csak ezektől függenek, így lehet hogy ebben az esetben ez lesz az egyszerűbb...
EE_szama = Sheets("KEZELŐ").Range("D23").Value
For Akt_sor = 3 To 35
Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10)
Select Case EE_szama
Case 1
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1")).Select
Case 2
Sheets(Array("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE", "EE_1", "EE_2")).Select
....
......
.....
....
Case Else
Resume Next
End Select' és akkor ide jönne a nyomtatás.
Next -
föccer
nagyúr
Sziasztok!
Next round az automatizálásban

Most automatikus nyomtatásban kérem segítségeteket.
Van egy elemző xlsm, aminek van egy maréknyi füle Ami érdemleges az a "KEZELŐ"; mellette "TOP LISTÁK"; TOPELEMZES"; "VCBE"; valamint ez után 20 db, sorszámozott fül ami "EE_"& sorszám 1-20.ig nevél rendelkezik (EE_1; EE_2; EE_3; ... ; EE_20). Van ezen kívül még fül, de ezek egymás mellett vannak és sorrendjük nem változik.Kezelő fül J3:J35-ben vannak telephely megnevezések. KEZELŐ fül H3:H35-ben vannak a telephelyhez tartozó (leendő) fájl nevek, elérési úttal kialakítva. (soronként összetarozóan természetesen)
A KEZELŐ fülön van egy gomb ami indít egy makrót, ami az alábbiakat kell, h tudja.
- A KEZELŐ fül J3:J35 cellák értékeit sorba átmásolja a D17-be. Minden lépésnél újra kalkulálja a teljes munkafüzetet. (A KEZELŐ D23 cellájában kiszámolódik 1 darab szám, aminek értéke 0-20 között lesz.)
- ha KEZELŐ D23 = 0, akkor lépjen a következő ciklusra és töltse be a következő telepet. HA KEZELŐ D23 > 0, akkor jelölje ki a "KEZELŐ"; "TOP LISTÁK"; TOPELEMZES"; "VCBE" fülek, valamint az EE_ kezdetű fülekből azokat, amelynek sorszáma kisebb mint a D23 cellába kikalkulált szám (pl D23 értéke:5 , akkor az EE_1; EE_2; EE_3; EE_4; EE_5 jön az első 4 mellé. Manuálisan ezt simán shift+katt-al intézem el úgy, hogy a KEZELŐTŐL ki vannak jelölve a fülek).
- "Microsoft Print to PDF" mint alapértelmezett nyomtatóra küldje ki az anyagot csak aktív lapok, normál margók, nem méretezhető beállításokkal. Kimeneti fájl neve a ciklusban felhasznált telepnek megfelelő fájlnév a H oszlopból.Minden munkalapon be vannak állítva a nyomtatási területek és oldaltörések, így elvileg a kijelölt munkalapokra egy 6-44 oldal közötti pdf kerül fel a fájlszerver megfelelő könyvtárába, egymás után a 32 telephely adataival. Voilá

A munkalapok többszörös kijelölésénél már el is akadtam és hirtelen google sem segített nekem, h hogy oldjam meg


For Akt_sor = 3 To 5
Sheets("Kezelő").Range("D17").Value = Sheets("Kezelő").Cells(Akt_sor, 10).Value 'telepek neveit másolja
Sheets("Kezelő", "TOP LISTÁK", "TOPELEMZES", "VCBE").Select
' If Sheets("KEZELŐ").Range("D23").Value > 0 Then
' For Akt_WS = 1 To Sheets("KEZELŐ").Range("D23").Value
' Sheets("EE_" & Akt_WS).Select
' Next
' End If
Köszönöm :R
'
Kesz_db = Kesz_db + 1
Application.StatusBar = "Gyorsjelentések generálásának folyamata: " & Kesz_db & " db jelentés elkészült"
Nextoh, de hülye. Array()
Akkor más csak össze kell tákolnom a listát.üdv, FG
-
föccer
nagyúr
Jó reggelt!
On Error hibakezelés kérdésem következik.

Ha egy for ciklusban nyitom a fájlokat, de a fájl nem található, akkor azt On Error-ral hogy kezeljem le?
Azt már megtaláltam, hogy hogyan lehet megvédeni a kódot, hogy ne álljon le és lépjen a következő ciklusra, de szeretném, ha a makrót futtató táblázatban kapjak erről egy log-ot.
A védendő ciklus:
For i = 2 To Filok_szama + 1
Akt_file = Sheets("Minta_gyujto_alapadatok").Cells(i, 1).Value 'innen jönnek a fájl nevek
Akt_file_cime = Sheets("Minta_gyujto_alapadatok").Cells(i, 3).Value ' itt vannak a teljes elérési úttal a fájlok
Workbooks.Open _ ' ebben történő hibát kellene most kezelnem
Filename:=Akt_file_cime, _
UpdateLinks:=False, _
ReadOnly:=False, _
IgnoreReadOnlyRecommended:=True
Akt_minta_darab = Workbooks(Akt_file).Sheets("Munka1").Range("N1").Value
Keresett_sorazonosito = Akt_minta_darab
Akt_sor = 0
If Akt_minta_darab = 0 Then ' Ha nincs a megnyitott fájlban újonnan kiértékeledő adat, akkor ezt log-ba lerakja a célfájl megfelelő részére. X5 cellában van hogy eddig mennyi log jelzés volt
Cel_ws.Cells(Cel_ws.Range("X5").Value + 6, 24) = Akt_file
Cel_ws.Cells(Cel_ws.Range("X5").Value + 5, 25) = "Új minta darabszáma = 0"
End If
For j = 1 To Akt_minta_darab
Akt_sor = Workbooks(Akt_file).Sheets("Munka1").Cells(Keresett_sorazonosito, 18).Value
Cel_ws.Range(Cel_ws.Cells(Gyujtott_minta_darab + 2, 1), Cel_ws.Cells(Gyujtott_minta_darab + 2, 20)).Value = Workbooks(Akt_file).Sheets("Üzem").Range(Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 1), Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 20)).Value
Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 21).Value = "igen"
Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 22).Value = ("Automatán beolvasva - " & Now)
Gyujtott_minta_darab = Gyujtott_minta_darab + 1
Keresett_sorazonosito = Keresett_sorazonosito - 1
Next
Workbooks(Akt_file).Close _
SaveChanges:=True
NextEnnek a két sornak kellene futnia, On Error-ra.
Cel_ws.Cells(Cel_ws.Range("X5").Value + 6, 24) = Akt_file
Cel_ws.Cells(Cel_ws.Range("X5").Value + 5, 25) = "Forrás fájl nem található"Köszönöm a segítségeteket ismét

-
föccer
nagyúr
válasz
Fferi50
#51011
üzenetére
Bonyolultnak tűnik. Ha már megvannak a sor azonosítók, akkor sokkal egyszerűbb végig menni. Extrém esetben is ~100 sort kell átrakni 1-1 fájlból. Az egész éves "termés" 4500-5000 sor az összes fájlban. Eddig fájlonként, évente 1-2 alkalommal volt frissítve, manuálisan elbabráltam vele. Most havonta 1-2 alkalommal kell végig fésülni az összes fájlt. Eddig alkalmanként 10-50 sort szedtem be egy fájlból, most már 0-10-et. 10xére nőtt a munka, amit kiváltanék

Egyébként megvan a kód, fut is szépen. Hibakezelés lehetne még benne, de majd egyszer.

Most még a forrás fájlokat kell átalakítanom, uniformizálnom, immáron az éles könyvtárban. Elmolyolok vele, oszt ami eddig volt 1-1,5 nap, most lemegy 15 perc alatt. Kár, hogy a felszabadult időt nem tölthetem a családommal

Köszi még egyszer a segítséget.
üdv, föccer
-
föccer
nagyúr
válasz
föccer
#51009
üzenetére
Din tömb kérdését megoldottam. Ahol a forrás fájlban kigyűjtöm a szükséges sorokat, megfordítottam a sorrendet és vissza felé olvasom be az adatokat és előlről töltöm fel. Így a sorrend marad, de nem okoz gondot, hogy a forrás sorok végéről mindig eltünk 1-1 sor azonosító, mert mindig "előtte haladok" 1 sorral. Nem túl elegáns megoldás, de hibátlan

üdv, föcc
-
föccer
nagyúr
válasz
Fferi50
#51008
üzenetére
Ismét köszönöm a segítséget.
Minden nap tanul az ember.A másolandó soron nem egymás alatt vannak. Kigyűjtöm függvénnyel azokat a sorokat, amik kellenek nekem, és ezeket a sor számokat fogom berakni az Akt_sor változóban
Apropó, még egy kérdés. Olvasgattam, hogy a VBA a dinamikus tömböket nem szereti és valami más trükk van a használatára. Próbáltam is a Dim Sorazonositok As New List(Of Integer) kifejezéssel megnyitni a tömböt, amibe bepakolnám az azonosítókat, de nem tetszik neki.

Most csináltam egy statikus tömböt és oda rakom fel a forrás fájl megnyitása után a szükséges azonosítókat (a szükséges sorazonosítókat minden forrás fájl, saját maga kalkulálja egy elrejtett munkalapon. 35 ilyen betöntő fájl van, amit a kollégák töltögetnek az ügyviteli rendben.
Igen, tudom hogy mennyivel jobb lenne célszoftverrel, de az nincs

-
föccer
nagyúr
Sziasztok!
Korábban itt nyújtott segítséget szeretném adaptálni.
Egyik fájlból a másikba akarok másolni.
A cél fájl futtatja a makrót, és a "Gyujtott_mintavetelek" munkalap-ra kell kirakni, soronként. Az aktuális sort a Gyujtott_minta_darab változó tartja számon. Nyilván ez léptetve van. 0-tól indul és a 2- sortül kell kiírtnom.
A forrás fájl neve az Akt_file változó tárolja (egymás után több fájlt nyitok meg) A forrás fájl "Üzem" nevű munkalapjáról 1-20 oszlopok kellenek. Az, hogy a forrás munkalap melyik sora kell éppen, az pedig az Akt_sor változó hozza.
Sheets("Gyujtott_mintavetelek").Range(Sheets("Gyujtott_mintavetelek").Cells(Gyujtott_minta_darab + 2, 1), Sheets("Gyujtott_mintavetelek").Cells(Gyujtott_minta_darab + 2, 20)).Value = Workbooks(Akt_file).Sheets("Üzem").Range(Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 1), Workbooks(Akt_file).Sheets("Üzem").Cells(Akt_sor, 20)).ValueNem találom benne a hibát ellenben nem akar lefutni, out of range hibát dob. Az Akt_sor biztosan felveszi a megfelelő értéket, mielőtt ez a sor furna.
MEg tudnátok mondani hogy hol a hiba?
Köszi

-
föccer
nagyúr
Szia!
Köszönöm. Gondolkodtam én is, hogy hogyan lehetne megkerülni ezeket a fv-eket.
A legszebb része az, hogy az egyedi, sorba rendezett tömböt betolom egy legördíthető listába (indirekttel vágom meg a lista tömbjét, mert előre nem tudom, hogy az aktuális lista mennyit eredményt ad. Egymás alatt több lista van, és az első listában kiválasztott érték alapján szűrőm az adatokat, amiből kiszedem az egyedieket és azt rakom be a köv legördíthetőbe, így egyre szűkül a legördíthető lista. Pont mint az autoszűrőnél.

Bármelyik legördíthetőben lehet +ba választani az Összes pontot, amire törli az adott szűrő feltéltet. Ugyan ez van, ha üresen hagyjuk a legördíthetőt.
A legördíthetőkben választottak szerint szűri az adatokat a szűrő()
szóval marad az autoszűrő

üdv, föccer
-
föccer
nagyúr
Szia!
Köszönöm. Nyilván a kompatibiláts ellenőrző visszaadja a hibákat, amiket tapasztaltunk.
Ahogy utána olvasok nem nagyon lehet ezen a gondon átlépni úgy, hogy a fájl magával "vigye" azokat a függvényeket, ami hiányzik.Erre nem nagyon van lehetősége, pedig milyen mókás lenne felokosítani az ő által használt programverziót

üdv, föccer
Kompatibilitási jelentés: SZK_Ktg_hely_kereso_97.xls
Futtatás dátuma: 2023.05.16 11:19
Ha régebbi fájlformátumban menti, vagy az Microsoft Excel egy régebbi verziójában nyitja meg a munkafüzetet, a felsorolt funkciók nem lesznek elérhetők.
Jelentős mértékű funkcióvesztés Előfordulások száma Verzió
A munkafüzet néhány cellája olyan adatérvényesítési szabályokat tartalmaz, amelyek más munkalapokon lévő értékekre mutatnak. A program nem menti a szabályokat. 3
Kereső_Név_szerint'!D4 Excel 97–2003
Kereső_Szervezet_szerint'!D3:D4 Excel 97–2003
A munkafüzet egy vagy több cellája olyan képletet tartalmaz, amely a kibontás után túlfolyt vagy vélhetően túl fog folyni a cellán. Az ilyen képleteket régebbi típusú tömbképletekké alakítjuk, így a régebbi Excel-verziókban nem folynak túl a cellán, és nem is változik a méretük. 10
Excel 97–2003
Excel 2007
Excel 2010
Excel 2013
Excel 2016
Excel 2019
Kereső_Név_szerint'!A9 Excel 97–2003
Excel 2007
Excel 2010
Excel 2013
Excel 2016
Excel 2019
Kereső_Szervezet_szerint'!A9 Excel 97–2003
Excel 2007
Excel 2010
Excel 2013
Excel 2016
Excel 2019
Egy vagy több olyan függvény vagy operátor szerepel a munkafüzetben, amely a régebbi Excel-verziókban nem működik. Újraszámításuk esetén ezek a képletek #NÉV? hibát adnak vissza a kiszámított eredmény helyett a régebbi verziókban. 10
Excel 97–2003
Excel 2007
Excel 2010
Excel 2013
Excel 2016
Excel 2019
Kereső_Név_szerint'!A9 Excel 97–2003
Excel 2007
Excel 2010
Excel 2013
Excel 2016
Excel 2019
Kereső_Szervezet_szerint'!A9 Excel 97–2003
Excel 2007
Excel 2010
Excel 2013
Excel 2016
Excel 2019
Kisebb mértékű funkcióveszteség
A munkafüzet bizonyos cellái vagy stílusai a választott fájlformátumban nem támogatott formázással rendelkeznek. Ezek a formázások a fájlformátum által támogatott leghasonlóbb formázásokkal helyettesítődnek. 2 Excel 97–2003 -
föccer
nagyúr
Sziasztok!
Ismét gondban vagyok. Még jó, hogy mindig más a bajom, így legalább változatos hülyeségekkel fordulok hozzátok

Készítettem asszonyságnak egy egyszerű táblát. Válogat, oda-vissza szűr, keres. Szuper. Cégénél mint kiderült 2010-es excel van. Rá tudom venni a 365-öt, hogy valami olyan formátumba mentsen, amivel használható lenne a régi verzióban is a szűrő(), sorba rendez() és az egyedi() függvények?
Rosszabb esetben használja az autoszűrőt, de az kicsit kényelmetlenebb lenne.
Már jelezte a rendszergizdának, hogy a cégnél egyébként előfizetés van a teljes office legfrissebb verziójára is, és szereté ha meglenne... De mondjuk azt, hogy lassan (leginább sehogy) őrülnek a malmok..
Köszi

üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#50965
üzenetére
A ScreenUpdating kikapcsolása érdemi változást nem hozott, de a range-ben történő érták átadás kb lefelezte a futási időt.

Igaz az átírt kódba valami elcsesztem, így nem adott vissza mindent, helyesen, valahol valami elmehetett, de mindegy. A lényeg, hogy ezt is megtanultam, a többit meg majd javítom.
Köszönöm a segítséget

üdv, Föccer
-
föccer
nagyúr
válasz
Fferi50
#50965
üzenetére
Ránézek, köszönöm.

kiszedem az adatok nagy részét és ilyen 1 perces futással szépen kitesztelem, hogy melyik mennyit hozott a konyhára.
Soronként elvileg átrakható, illetve az egész range. Azt nem ismertem, hogy az egész range-re megy a value = value játék. Látszik, hogy botcsinálta ember vagyok

üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#50962
üzenetére
Az egyik bemeneti fülről leszedem az üzemek listáját sorba.rendez(egyedi()) függvénnyel. Ezen a listán megy végig az első for ciklus. A manuálisan is használható számoltábla úgy van előkészítve, hogy egyetlen egy paraméter cellája van, amin adat érvényesítéssel lehet listából megadni az üzem megnevezéseket. A for ebbe a cellába pakolja be az üzemek azonosítóját. Segédtáblán számoltatom hogy mennyi sor lesz az eredményen, leddig kell pörgetni a for-t, hogy minden adat kimásolásra és bemásolásra kerüljön.
A második for cikus a már kiválasztott üzem azonosítójához tartozó, leszűrt adatokat tartalmazza. Ez az előbb említett kalkulációs rész, ahol max 500 sorban, elemenként megy a kiértékelés. (ez még 2018 körül készült eljárás, de miáltal sem a bemeneti tömbök, sem a kimenet nem változik, hibátlanul működik). Szóval a 2. for az üzem szűrt elemein megy végig, soronként.
A 3. for ciklussal a a 34 oszlop adatait nyomom át a céltömbbe.
A céltömb a MINTA ÖSSZES munkafüzet. Ide rakom egymás alá az összes üzemre szerzett adatot. Erről a széltömbből. másolom ki egy másik, összesítő táblázatba az eredményt, ahol tövábbi feldolgozást csinálok.
Dim Most As Date
Dim Akt_sor As Integer
Dim Akt_oszlop As Integer
Dim Akt_minta_szama As Integer
Dim Uzemek_szama As Integer
Dim Mintak_szama As Integer
Dim Osszes_minta As Integer
Dim Akt_Uzem As String
Dim Akt_Uzem_sorszam As Integer
Most = Now
Application.StatusBar = "Üzemi mintavételek összesítésének állapota: Előkészítés..."
Akt_sor = 0
Akt_oszlop = 0
Akt_minta_szama = 0
Mintak_szama = 0
Uzemek_szama = Sheets("Mintavetelek_segedszamitas").Range("G1").Value
Osszes_minta = Sheets("Mintavetelek_segedszamitas").Range("G4").Value
Akt_Uzem = ""
Akt_Uzem_sorszam = 0
Sheets("MINTA_OSSZES").Range("A1:AH10000").ClearContents
For Akt_Uzem_sorszam = 2 To (Uzemek_szama + 1)
Sheets("Minta").Range("D1").Value = Sheets("Mintavetelek_segedszamitas").Cells(Akt_Uzem_sorszam, 1).Value
Sheets("Minta").Range("A5").Calculate
Sheets("Minta_NY").Range("A5:AH500").Calculate
Sheets("Mintavetelek_segedszamitas").Range("G2:G3").Calculate
Mintak_szama = Sheets("Mintavetelek_segedszamitas").Range("G3").Value
For Akt_sor = 5 To (Mintak_szama + 4)
For Akt_oszlop = 1 To 34
Sheets("MINTA_OSSZES").Cells(Sheets("Mintavetelek_segedszamitas").Range("G2").Value + 1, Akt_oszlop).Value = Sheets("Minta_NY").Cells(Akt_sor, Akt_oszlop).Value
Application.StatusBar = "Üzemi mintavételek összesítésének állapota: Üzemek: " & Akt_Uzem_sorszam - 2 & "/" & Uzemek_szama & " Minták: " & Akt_sor - 5 & "/" & Mintak_szama & " Összes minta: " & Akt_minta_szama & "/" & Osszes_minta & " Oszlopok: " & Akt_oszlop - 1 & "/34 van kész."
Next
Akt_minta_szama = Akt_minta_szama + 1
Next
Next
Application.StatusBar = ""
MsgBox "Kész vagyok. Köszönöm, hogy ma is dolgozhattam helyetted. Végrehajtási idő: " & Format(Now - Most, "hh:mm:ss;@")
End Sub -
föccer
nagyúr
Sziasztok!
Írtam egy makrót. Semmi extrát nem tud a makró, de mögötte elég sok számolgatás van. Egy kényesebb része, hogy 34 oszlopot, változó sorszámmal kell végig másolgatnom az eredmény fülre egymás alá.
Kijelöléssel és adatsor aljára való ugrással nem tudom megcsinálni, mert a forrás adattömb tele van függvénnyel és a ctrl+nyil combó azokat is kijelöli ahol nincs adat, csak képlet (ami ""-t ad vissza)
A sok másolgatás viszonylag lassan fut. 340 soron 28 perc volt a futása. Érzésre az elég sok időt elvisz, hogy kirajzolja a cellákba az új kalkulált értéket.
Hogy tudnám megoldani, hogy a cellák értékének kirajzolását kikapcsoljam, majd a a makró végén be? Mindezt úgy kellene, hogy a statusbar-ban kiírt log adatok fussanak végig?
Köszi!
Üdv, Föccer
-
föccer
nagyúr
Sziasztok!
Egy diagram-os kérdéssel fordulok hozzátok.
Egy összetett diagrammot szeretnék készíteni. X tengely dátum, elsődleges tengely és másodlagos tengely is használva van néhány tízezres és néhány százas nagyságrenddel.
Kellene még egy jelölés, ami 1-5 nagyságrendő jelölés bizonyos dátumokon. Arra gondoltam, hogy az elsődleges tengely folytonos vonalára rápöttyözöm, viszont így elveszik az érték jelölése, hogy az adott naphoz mekkora érték tartozik.
Amire még gondoltam, hogy a másodlagos tengely nagyságrendjét az adatokból egy max-al beszedem, és "hozzá növesztetem" a harmadig adatsor hisztogramját, hogy látszódjon, a különbség, de nem lenne szerencsés.
Esetleg az megoldható, hogy a pont diagram jelölő kitöltő színe dátumonkánt (automatikusan) állítódjon? Bár nagyon zsúfolt lesz
Esetleg bármi ötletet tudnátok adni?köszönet

-
föccer
nagyúr
válasz
Fferi50
#50875
üzenetére
Ez be van állítva, így használom rég óra

Egyébként ki kellene crop-olni az időt és csak az év-hónap-nap-ot tárolni, az megoldás lenne. Időbélyegre ninc szükségem, de így érkezik az adat a célszoftver lekérésében.
Most a megoldás végül az lett, hogy a beépített dámum szűrőket használom. Nem sokkal hosszabb és hiba nélkül megy. Érdekes észrevétel volt
-
föccer
nagyúr
válasz
Fferi50
#50873
üzenetére
Szia!
Autoszűrő ki-bekpcsolása mindig megy, nem szoktam egyessével kiszedni a feltételeket, hanem hotkey-el kilövöm az egész szűrőt és újra bekapcsolom. 2 másodperc, sokkal gyorsabb

egyébként sima tartomány, nem szeretem a táblázatos megjelenítést.
Dátum adatok vannak a sorokba, pl 44250,4646412037. (van egy másik, bianco tábla, amibe berakok 4 különböző adatlekérés táblázatát, ami összerendezi, kiválogatja és egy csomó kalkulációt megcsinál és visszaad 1 táblát, amit átrakok adat beillesztéssel az összefoglalóba, így mindig ugyan úgy érkeznek az oszlopok. Fixen így működik évek óta. Nem túl elegáns, de hibátlan).
közben azért nyomozok. Valószínáűleg mégis ott van a gond, h 10 000-nél több uniq adat van az oszlopban és az autoszűrő nem jeleníti meg. Ezt erősíti az is, hogy ha az autoszűrő dátumszűrők funkciójában két dátum között résznél megadom azokat a dátumokat, ami nem jelenik meg a listában, akkor is beszűri, helyesen.
Egéybként meg micsoda it hibát találtam. Nincs tiltva a regedit parancs egyszerű enduserként bejelentkezve
[link] Bár ez nem oldotta meg a problémát, de próbálkozásnak jó volt. 
-
föccer
nagyúr
Sziasztok!
Ötleteket szeretnék meríteni, mert meg vagyok lőve...

Van egy rég óta használt táblázatom, ahol sok-sok adat van összegyűjtve, többek között egy dátum oszlop is. Erre az adat tömbre van egy autoszűrő rakva.
Adattömb 10549 darab sorból áll. Nincs nyitva semmi egyéb munkafüzet, többi munkalapon minden autószűrő ki van kapcsolva. Van néhány makró írva, de ezek mindegyike gombnyomásra indul és nem futhat semmi.
A dátum oszlopba jelenleg 2021.01.05-2023.03.10 dátum között vannak adatok, rövid dátum formátummal, óra-perc-másodperc felbontással. A terjedelmet min() és a max() függvények meg is találják. A bekapcsolt autoszűrő mégsem gurítja meg csaj a 2021 és 2022-es adatokat. Egyetlen egy 2023-as adat sincs benne.
Adatfolytonosság megvan, ctrl+nyillal le tudok lépni. Minden adatra értelmezhető a dátum formátum. Újraindítás, bezárás, bekapcsolás-kikapcsolás nem segít. 100.000 db-os szűrő korláttól fényévekre vagyok.
Annyi történt még, hogy tegnap kivettem a táblázatból a 2020-as adatokat, mert ahogy töltöm fel az idei adatokkal 15000 fölé megy a sorok száma, ami tapasztalatom szerint nem szerencsés. De ilyen tizenpár ezer sorral már sokszor, vígan elmolyolt a sima autoszűrő is.
Mi lehet a gond?

Köszönettel, föccer
-
föccer
nagyúr
válasz
jackal79
#50837
üzenetére
Simán használhatod az fkeres() -t is, hogy kiszedd a két szükséges értéket.
Lehet trükközni a HONAP.UTOLSO.NAPJA függvénnyel, és akkor egy cellába beírod hog melyik hónnara vagy kíváncsi.
Vagy csak csinálsz két szűrő(), amiben kezdő és végdátumra szűrsz és azt összegzed.
-
föccer
nagyúr
Szia!
Köszönöm, azt gondolom, hogy értem.
(jó cucc)Viszont az index nem akarja kibontani csak az első oszlopot, nem tudom rávenni, hogy az összes, eredeti tömbben lévő összes oszlopot megadja. (sőt, nem tudom az általad mutatott {1,3} trükkel sem rávenni, hogy több oszlopot adjon vissza. Utóbbi esetben egymás alá sorolja a különböző oszlop elemeit, ahogy a sequence kijelölte a cél tömbböt. Ugyanakkor a a sequence-ben megadom az oszlopoknak a számát, akkor vízszintesen kezdi feltölteni a sequence tartományát az eredeti tömb első oszlopának adataival, amíg az a szűrő eredmény vektorában talál adatot, a tömb többi elemére HIV hibád ad.
-
föccer
nagyúr
Imádom a natív tömbfüggvényeket. Eddig az INDEX-et csak 1 bizonyos elem kiszedésére alkalmaztam (tipikusan HOL.VAN-al beágyzva), de asszem értem, hogy hogy működik. A lényege, hogy a SORSZÁMLISTA megnyit egy tömböt (példában 5 sor). Ezzel az INDEX-nek a sorszámára nem 1 bizonyos értéket adok, hanem egy üres tömbböt, ahová ő úgy érzi, hogy mindent bele kell pakolnia, ami csak belefér.
Jelen esetben a sorszámlista az útszéli lotyó, ki szétrakja, míg az index a kuncsaft, aki addig tölti, amíg meg nem telik

-
föccer
nagyúr
Sziasztok!
Rávehető valahogy a sorba.rendez(szűrő()), hogy a találatoknak csak az első valahány elemét adja vissza eredménybe?
Így egymás mellé kell raknom a szűrési tömböket, ami kényelmeten és főként nagyon csűnya, nem férek bele a riportba. Viszont indirektel sem akarom megnyesni az adatokat, feleslegesen kellene létrehoznom neki még egy segédtáblát, ami tartalmazza az összes elemet..
Köszönöm

üdv, föccer
Új hozzászólás Aktív témák
- Bomba ár! Toshiba Dynabook A40-G - Intel 5205U I 4GB I 128SSD I 14" HD I Cam I W11 I Garancia!
- Samsung Galaxy A26 5G 256GB,Újszerű,Dobozával,12 hónap garanciával
- Xbox Series X /// 2 TB Model! // Számla + 1 év garancia
- Bomba ár! HP Elitebook 840 G1 - i5-4GEN I 8GB I 500GB + 32SSD I Radeon I 14" FHD I Cam I W10 I Gari!
- Logitech G29 SE Driving Force PC/PS4/PS5
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Mondjuk lehet gyorsabb lett volna megcsinálni, mint ezt begépelni 






4))/3





Totál káosz. Szóval ide próbáltam csinálni egy táblát, de annyira funkciószegény a régi verziója az O365 natív tömbfüggvényeihez képest, hogy inkább rábíztam asszoynyágra h győzze meg a főnökeit, hogy frissítsenek O365-re

