-
Fototrend
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
Még egy uccsó kérdés és egy ideig békén hagylak benneteket.
Az megoldható, hogy ha elrejtek egy lapot, akkor az ne jelenjen meg a felfedhetőek között?
Ugyanakkor makróból felfedhetőnek kell maradnia. Tehát lehet, hogy az lenne az ideális, ha ezt az elrejtés/felfedés menüt vagy funkciót tudnám kikapcsolni.

hehe, write only üzemmódban vagyok

xlSheetVeryHidden - the sheet is very hidden
While anyone can toggle between TRUE (visible) and FALSE (hidden) by using Excel's Unhide or Hide commands, the xlVeryHidden value can only be set from within the Visual Basic Editor. -
föccer
nagyúr
válasz
föccer
#52285
üzenetére
Hm, asszem gordiuszi csomóként a hibakezelésben visszaíratom az elérési utat a helyére és a hibakezelésbe beraktam +-ba a napi mentés is. Így mindenképpen jó lesz.
Vagy a hiba nélküli ágon fut végig, vagy a hibakezelés ágán, miután a hibakezelés beerőszakolt valami elérési utat a B7 cellába.
Köszönöm, hogy végig gondolhattam így félhangosan

-
föccer
nagyúr
válasz
föccer
#52285
üzenetére
Private Sub Workbook_Open()Dim oFSO As ObjectDim oFolder As ObjectDim oFile As ObjectDim i As IntegerDim Fileok_szama As IntegerDim Fnev As StringDim Kell_e_menteni As BooleanDim SFnev As Stringi = 0Filok_szama = 0Fnev = ""Kell_e_menteni = TrueSFnev = ""Sheets("Save_log").Range("T:U").ClearContentsSet oFSO = CreateObject("Scripting.FileSystemObject")On Error Resume NextIf Sheets("Save_log").Range("B7").Value <> "" ThenSet oFolder = oFSO.GetFolder(Sheets("Save_log").Range("B7").Value)ElseSet oFolder = oFSO.GetFolder(Sheets("Save_log").Range("B8").Value)End IfIf Err = 0 ThenFor Each oFile In oFolder.FilesIf oFile.Name = Sheets("Save_log").Range("B5").Value ThenKell_e_menteni = FalseEnd IfSheets("Save_log").Cells(i + 1, 20) = oFile.NameSheets("Save_log").Cells(i + 1, 21).Formula = "=IFERROR(MATCH(T" & i + 1 & ",M:M,0),0)"i = i + 1Next oFileFilok_szama = iFor i = 1 To Filok_szamaIf Sheets("Save_log").Cells(i, 21).Value = 0 ThenFnev = oFolder & "\" & Sheets("Save_log").Cells(i, 20).ValueKill FnevEnd IfNextIf Kell_e_menteni = True ThenSFnev = Sheets("Save_log").Range("B7").Value & Sheets("Save_log").Range("B5").ValueActiveWorkbook.SaveAs Filename:=SFnevEnd IfElseIf Sheets("Save_log").Range("B7").Value <> "" ThenMkDir Sheets("Save_log").Range("B7").ValueElseMsgBox "Nem találom a biztonsági mentés helyét. Kérlek add meg a biztonsági mentés helyét."Call XBUP_mentesi_hely_ValasztasMkDir Sheets("Save_log").Range("B7").ValueEnd IfEnd IfOn Error GoTo 0End Sub -
föccer
nagyúr
válasz
Fferi50
#52284
üzenetére
Bele pakoltam egy zsáknyi hibakezelést, illetve bele építettem a napi mentésnek a kódját is.
Az utóbbit viszont úgy kellett beraknom, hogy az on error if err =0 részhez raktam be. Viszont így ha a korábban hibába fut, akkor a napi mentés nem fog lefutni.
róka fogta csuka-fogta róka esete.
Azonosítom a biztonsági mentés helyét és megpróbálok onnan file listát letölteni. Erre épül rá az on error, mert gyakorlatilag itt lehet olyan, hogy elmozgatták/törölték a könyvtárat.
Ha megtalálja a beállított könyvtárat, akkor minden szupi, belistázza a fájlokat, meghatározza és törli a felesleges tételeket. Ez után megvizsgálja, hogy a listában szerepel-e az aktuális napi mentés. Ha nem, akkor menti a kalkulált névvel, és útvonalon.
Ha hibába fut, akkor megpróbálja az alapértelmezett útvonalként saját maga mellé készíteni egy alkönyvtárat és azt beállítja elérési útvonalnak. Ha ez valamiért nem jön össze, mert érvénytelen, akkor msoFileDialogFolderPicker-el megpróbálok beszedni a felhasználótól egy valid útvonalat és onnan dolgozom tovább.
Hogyan tudom megcsinálni azt, hogy ha a hiba kezelésbe sikerült kipréselnem valahogy egy valis útvonalat, akkor újra fusson az egész kód? ha egy call-al meghívom saját magát, annak csúnya vége lehet. Bár ha a hibakezelésbe nyomom be, akkor elvileg 2. nekifutásra már nem szabadna megint behalnia. Viszont call-után visszatér és folytatja. Innen simán exit sub-al kilépek, akkor okés lesz?
Hmm, ezt a zagyvaságot, én magam sem értem

-
föccer
nagyúr
file neve függvény O365-ben
=LET(fnev;CELLA("filename");e;SZÖVEG.KERES("[";fnev);m;SZÖVEG.KERES("]";fnev);fn;KÖZÉP(fnev;e+1;m-e-1);BAL(fn;SZÖVEG.KERES(".";fn)-1))just for fun
-
föccer
nagyúr
Sziasztok!
VBA-ból tudok fájlt törölni?
Egy beépített biztonsági mentés funkción töröm a fejemet. Megnyitáskor ellenőrzi, hogy van-e aznapi mentés és ha nincs, akkor menti magát. Viszont hogy ne legyen tele szeméttel a régi mentéseket törölném.

aFile = "c:\file_to_delete.txt"Kill aFileEz működik?
üdv, föccer -
föccer
nagyúr
Sziasztok!
UserForm-ra kiraktam egy ListBox-ot. Hogy tudom elérni, hogy duplaclick event lefusson? Próbáltam, de nem tudtam rávenni. Az UF-nak a kódjába beraktam így, de futtatta.
Private Sub Listbox1_DblClick()End SubKöszönöm

-
föccer
nagyúr
Használd az INDIREKT függvényt. Pont erre találtak ki.

=INDIREKT("seged!B"&F2)
Itt a seged munkafüzet B oszlopának azon sora van meghivatkozva, ami az F2 cellába van beírva.
ps: tömbökkel is működik és nyilván beépített függvényként is. Sőt, adat érvényesítás lista paraméteréhez és a feltételes formázáshoz is be lehet nyomni
-
föccer
nagyúr
válasz
Fferi50
#52207
üzenetére
Szomorú.

Gombonyogatás non user friendly egységsugarú felhasználónál.

Másik kérdés. Egészen biztos hogy könnyen megoldható, de rettenetesen hulla vagyok
Egy számoló sablonról kell lementenem annak tartalmát, hogy később visszatölthető legyen a nyomtatási sablonra. (bizonylat kezelős)
Cel_WS-re megy szépen sorba egymás mellé. Ha alapadatokra felsorolom azoknak a celláknak a címét, ahonnan ki kell szedni az adatokat, és egy for ciklussal dolgozom fel, akkor a Range meg fogja enni ha a paraméterként nem "L5" kerül, hanem egy cella hivatkozás, valahogy így:
For i = 1 to 270Sheets(Forras_WS).Range(Sheets("alapadatok").Cells(i, 1)).ValueNextEzt kellene kiváltani. Alapadatokban is az első sortól lennének az adatok, nyilván.
Sheets(Cel_WS).Cells(Akt_sor, 1).Value = Sheets(Forras_WS).Range("L5").ValueSheets(Cel_WS).Cells(Akt_sor, 2).Value = Sheets(Forras_WS).Range("S5").ValueSheets(Cel_WS).Cells(Akt_sor, 3).Value = Sheets(Forras_WS).Range("B7").ValueSheets(Cel_WS).Cells(Akt_sor, 4).Value = Sheets(Forras_WS).Range("C7").Value...... -
föccer
nagyúr
Egy O365-ben készült xlsm-et rá lehet valahogy venni, hogy a teljes funkcióval fuson egy régebbi verzión (talán 2013).
Van benne jó néhány tömbfüggvény a 365-ből (SZŰRŐ, EGYEDI), ami alapból nem fog menni régi verzióban. Nincs valami olyan formátum, amivel a régi verzióban megnyitva mégis munkára bírható?
UDF-ként bele menteni valahogy azt a pár függvényt, vagy bármi.
Köszi

üdv, föccer
-
föccer
nagyúr
válasz
szergejj
#52127
üzenetére
Makróból rá lehet venni az excelt, hogy kiküldje mail-be csatolmánnyal együtt.
Egy példa rá,
Sub Send_Email_with_Attachment()
Dim MyOutlook As Object
Set MyOutlook = CreateObject("Outlook.Application")
Dim MyMail As Object
Set MyMail = MyOutlook.CreateItem(olMailItem)
MyMail.To = "Person1@gmail.com"
MyMail.CC = "Person2@gmail.com"
MyMail.BCC = "Person3@gmail.com"
MyMail.Subject = "Sending Email with VBA."
MyMail.Body = "This is a Sample Mail."
Attached_File = "F:\ExcelDemy\Attachment.xlsx"
MyMail.Attachments.Add Attached_File
MyMail.Send
End Subüdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#52076
üzenetére
msoFileDialogFolderPicker
hogy ez nem jutott eszembe
Nagyon pengék vagytok.Delila kódja is működik, ezzek a chdirr-el nem boldogultam. Maradok azzal, hogy megnyitok egy dialógot és szépen a kiválasztott helyre lementem, ez a biztos.
Ismételten köszönöm szépen a segítségeket.

üdv, föccer
-
föccer
nagyúr
válasz
Delila_1
#52072
üzenetére
"/" karakterekkel és nem "\" karakterekkel adja vissza az útvonalat.

hülye onedrive szivat jól látom?
Viszont ezt a fájlt nem én, hanem egy másik szervezet (asszonyság melóhelyén) fogja futtatni, így nem tudom előre definiálni a mentési pontot. Egy ideig simán működött, hogy lerakta maga mellé, de gondolom idővel felszinkroinizálta magát és azóta megy így. Viszont ha jól sejtem, akkor ha átkerül a asszonyság környezetébe, akkor ez akár helyre is jöhet.
Vagy csináljam inkább azt, hogy a mentési hely megadásához megnyissak egy dialogot? milyen dialoggal tudok csak egy könyvtár útvonalat beszedni? Soem csináltam még ilyet.

köszi!
fg

-
föccer
nagyúr
válasz
föccer
#52070
üzenetére
No, ehhez tartozó érdekesség.
Mivel nem adok be a fájl nevénél elérési utat, így mindig a fájl mellé mentette a pdf-eket. Sokszor megcsináltam már, mindig hiba nélkül ment.
2 napja viszont nem rakja oda a fájlokat. INFÓ függvénnyel lekérdeztem, hogy mégis honnan gondolja, hogy meg lett nyitva a fájl és egészen más könyvtárt adott vissza és ott meg is találtam a lementett pdf-eket.
konkrétan 3 könyvtárszinttel fentebb, mint ahol ténylegesen az xlsm megnyitásra került. :-/
Ez hogy lehet? Illetve hogyan tudnám ezt kiküszöbölni? A cél, hogy mindig a fájl megnyitási könyvtárába legyen lementve a pdf, a megadott néven.
A fájl neve egy több darabból történő összefűzés eredménye és csak a tényleges fájl nevet tartalmazó string.
-
föccer
nagyúr
válasz
Fferi50
#43131
üzenetére
Hello!
Az Application.ActivePrinter változó az jól sejtem, hogy az alapértelemzett nyomtató nevét adja vissza?
Ez így ebben a formában be tudom állítani a nyomtató válltozómba az aktív printert?
Dim Nyomatato As String...Nyomtato = Application.ActivePrinter...ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Fajl_neveköszi!
üdv, föccer
-
föccer
nagyúr
válasz
lanszelot
#52006
üzenetére
A lényeeg, hogy az excel a cella értékében egy számot tárol és dátumként formázza azokat az adatokat, amit dátumként, időként látsz. A szám értéke az a 1900. jauár 01. 0:00:00-től eltelt idő. 1 egész az 1 nap. Tehát 1 óra az 1/24, azaz 0,0416666. stb.
Ha egy dátumhoz házzáad 1-et, akkor az +1 nap. Ha két dátumot kivonsz egymásból, és az eredmény kereken 7, akkor a két dátum között pont 7 nap volt.
Ez alapján kell kialakítani, hogy mikor, milyen művletet kell megadni és/vagy mennyivel kell eltolnod a dátumot.
üdv, fg
-
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
Új hozzászólás Aktív témák
- Vírusirtó, Antivirus, VPN kulcsok GARANCIÁVAL!
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- MEGA AKCIÓ! - Jogtiszta Windows - Office & Autodesk & CorelDRAW - Azonnal - Számlával - Garanciával
- Számlás!Steam,EA,Epic és egyébb játékok Pc-re vagy XBox!
- Telefon felvásárlás!! Xiaomi Redmi Note 10, Xiaomi Redmi Note 10s, Xiaomi Redmi Note 10 Pro
- Macbook Air M2 15" 8GB 256GB 100%
- HIBÁTLAN iPhone 14 Pro Max 128GB Deep Purple-1 ÉV GARANCIA - Kártyafüggetlen, MS4682
- Xiaomi Watch S4,Újszerű,Dobozaval,12 hónap garanciával
- Új és régi konzolok Okosítása és Szoftveres szintű javítása - MÁR 13.00-S PS4 IS!
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest









Mondjuk lehet gyorsabb lett volna megcsinálni, mint ezt begépelni








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 