-
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
-
Fferi50
Topikgazda
Szia!
Ehhez nem kell gomb! Az eseménykezelő mindig indítja az újraszámolást, ha változtatsz a táblázatban levő adatokon!
Ha gombot szeretnél, akkor az első makrót (Worksheet_Change) ki kell törölnöd!
Gombot a Fejlesztőeszközök menücsoport - Beszúrás megnyitása után tudsz beszúrni, ha az Űrlap csoportból választasz, azonnal ki tudod hozzá választani a makrót.
Ha ott nem sikerült, akkor a gombon állva jobb egérgomb, makró hozzárendelés.
DE a makróhoz rendelhetsz billentyű kombinációt is:
Fejlesztőeszközök - Makrók - kiválasztod a makrót - egyebekben megtalálod a billentyű hozzárendelést.
Üdv. -
Fferi50
Topikgazda
Szia!
Közben elkészült a makró.
Ezt másold be az adatokat tartalmazó munkalapod kódlapjára, a következők szerint:
A munkalap fülön jobb egérgomb - Kód megjelenítése - a General fülbe másold be.Private Sub Worksheet_Change(ByVal Target As Range)If Intersect(Target, ActiveSheet.ListObjects(1).DataBodyRange) Is Nothing Then Exit SubApplication.EnableEvents = FalseApplication.ScreenUpdating = FalseegyedidbApplication.EnableEvents = TrueApplication.ScreenUpdating = TrueEnd SubSub egyedidb()Dim rrange As Range, frange As Range, i As IntegerSet rrange = ActiveSheet.ListObjects(1).DataBodyRangeSet frange = Cells(1, Munka1.ListObjects(1).Range.Columns.Count + 3)For i = 1 To rrange.Columns.CountIf i = 1 Thenrrange.Columns(i).Copy frangeElserrange.Columns(i).Copy frange.End(xlDown).Offset(1, 0)End IfNextRange(frange, frange.End(xlDown)).RemoveDuplicates 1, xlNofrange.offset(0,-1).Value = frange.End(xlDown).RowRange(frange, frange.Offset(rrange.Cells.Count, 0)).ClearEnd Sub
Az első makró eseménykezelésre szolgál, azt nézi, hogy a táblázatodban van-e a változás. Ha igen, akkor megszámolja az egyedi értékeket, ha nem, akkor nem történik semmi.
A második makró (egyedidb) számol ténylegesen: A táblázattól jobbra a 3. oszlopba kigyűjti az értékeket egymás alá és utána a jobbra 2. cellába beírja az eredményt. A számolásokat nem fogod látni.
FONTOS! Ha a táblázatot lefelé bővíted, azt is beszámolja a makró. Az egyes oszlopokba nem szabad üres cellákat hagyni, akkor tudja beszámolni.
A munkafüzetet makróbarátként kell mentened és a makrókat engedélyezned kell a beállítások - biztonság fülön.
Remélem sikerül, ha gondod lenne, írj bátran.
Üdv. -
Fferi50
Topikgazda
Szia!
Bocsánat, már teljesen összezavarodtam én is...
Természetesen meg is kellene számolni az értékeket. Vagyis a helyes képlet:=DARAB2(EGYEDI(G1:G24))-1
A -1 azért kell, mert a 0-t is beszámolja az EGYEDI függvény.
Ez így már remélem jó lesz nálad is.
A makrón dolgozom. (Nem kell félni, nem fog fájni...)
Üdv. -
Fferi50
Topikgazda
Szia!
Ezt a képletet javasoltam az oszlopok egymásra írása után:=EGYEDI(segédoszlop tartomány)-1
A segédoszlop nálad a G1:G24 tartomány
Ezt a képletet nem a G oszlopba kell írnod, hanem az E oszlop egy cellájába.
Ha nem szeretnél "állandóan" másolni, akkor makrót kell használnod.
Nem tudom, ez lehet-e opció nálad.
Üdv. -
-
Fferi50
Topikgazda
Szia!
Ettől tartottam... Sajnos az EGYEDI függvény ebben az esetben csak egy-egy oszlopra alkalmazható, ezért kell hozzá egy segédoszlop. Ebben egymás alá tesszük az EGYEDI függvénnyel kinyert értékeket:=EGYEDI(Táblázat1[Oszlop1])
az adatok alá:=EGYEDI(Táblázat1[Oszlop2])
majd ez alá
=EGYEDI(Táblázat1[Oszlop3])
Itt azt fogod látni, hogy megjelenik egy 0 érték, ami az üres cellák miatt van.
Ezután a kívánt értéket megkapod:=EGYEDI(segédoszlop tartomány)-1
Másik lehetőség, hogy egyszerűen kimásolod egymás alá egy segédoszlopba a 3 oszlop értékét, erre adod meg az EGYEDI függvényt.
Üdv. -
Fferi50
Topikgazda
Szia!
Nem kell azért kétségbe esned. Az új és még újabb függvények alkalmazása nekünk tapasztaltabbaknak is fejtörést okoz.
Az EGYEDI függvény esetedben csak egy egy oszlop esetén alkalmazható szerintem. De talán segítene, ha pár soros - semleges - adattal, de a szerkezetet megtartva feltennél egy mintát, amire rá lehetne nézni.
Üdv. -
Fferi50
Topikgazda
Szia!
Próbáld először egy üres területre az Egyedi függvényt - úgy, hogy konkrétan kijelölöd azt a két oszlopot. (Persze az Excel majd a saját szájíze szerint átírja táblázatos képletre... )
Ekkor ki kellene írnia az egyedi értékeket 2 oszlopban.
Ha ez megvan, akkor az így felirt függvényt foglald bele a DARAB2 függvénybe.
Üdv. -
Fferi50
Topikgazda
-
Fferi50
Topikgazda
Szia!
1.A feltételes formázás képletében rögzíteni kell a feltételt tartalmazó sor számát, pl.
=H$3="19:00-7:00"
A formázandó területet pedig terjeszd ki a megfelelő sorokra.
2.Ha jól látom ez Adatok - érvényesítés eredménye. Itt sajnos nem lehet a legördülő méretét megváltoztatni. Viszont akinek van szeme, látja a gördítősáv állásából, hogy van még tovább is.
Üdv. -
föccer
nagyúr
Szóval lehetne-e olyant, hogy:
Igen, lehet. Viszont ha dinamikusan változik a listád, akkor kicsit jobban össze kell rakni a makrót, hogy "bolondbiztos legyen".Számon kell tartani, hogy pontsan mennyi név van, szépen sorba másolni, lértehozni a szükséges cuccokat, nyomtatást elvégezni, majd törölni azokat a WS-eket, amik már nem kellenek.
Ez már egy pár órás feladat. Nem túl bonyolult, de neki kell ülni és összerakni kitesztelni.
-
föccer
nagyúr
1x kell megcsinálni, helyesen és utána bármennyiszer jól fogja megcsinálni.

Jelenleg is megcsinálja a 80 pdf-et, amit 3 kattintással nyomtatási sorba tudsz tenni.
Sőt, azt is meg lehet cisnálni, hogy egy makró megcsinálja a 80 munkapalot, lemásolgatva és sorszámozva őket, kijelöli az összes munkalapot és úgy nyomtatja. Akkor is egy doksiként fog kijönni, de ahhoz meg kell lennie az összes adatnak, egyszerre (vagy 1 munkalapon, vagy 80 munkapaon külön, az mindegy. Maga a nyomtatás az 1 eljárás, a kinyomtatott dokumentumokat az excel nem tudja összefűzni, de a különböző munkalapokat egyszerre kijelölve értelmezi, hogy 1 dokumentumba kell kinyomtatni.
üdv, FG
-
föccer
nagyúr
Sheets("16-32").Range("X2").Value = Sheets("Seged").Cells(i, 1).Value
ez a sor csinálja a név másolását,
Sheets("16-32").Range("X28").Value = Sheets("Seged").Cells(i, 1).Value
kell neked berakni alá. Ez az X28-ba is bemásolja a segéd A oszlopából az aktuális sor nevét.A Sheets utáni paraméter a munkafüzet neveve, a Range után a cella hivatokzás van. Az = jeltől balra lévő Cells(i,1) cella tartalmazza a nevet (az aktuális, i-edik sorból veszi az értéket).
Mivel minden oldalt külön "generálsz lesz", így nem nagyon tudod összefűzni, max utólag. Simán filekezelőből viszont az összes fájlt kijelölve, helyi menüből lehet nyomtatni, és akkor sorba kinyomtatja az összeset.
1 pdf legenerálásához, egy munkalapon össze kellene szerkeszteni az összes dokumentumot, szépen tördelve és úgy nyomtatni. Meg lehet csinálni, de az macerás.
üdv, fg
-
föccer
nagyúr
Seged munkalap igy nézzen ki.

Mentst a munkafüzetet xlsm-be, makróbarátként. Fejlesztőeszközök menüből adj hozzá egy sima gombot. Alt+F11-el nyisd meg a VBA editort. Jobb klikk a fájl alatt az object-en, insert modul. A megjelent Module1-en dupla klikk, majd a lenti kódot szúrd be.
A beillesztett gombon jobb klikk, makró hozzá rendelése és válaszd ki a megírt Nevek_kitoltese makrót, majd futtasd.
Ha minden jól megy, akkor a fájl mellé lenyomja pdf-ben az összes formanyomtatványt úgy, hogy a fájl nevébe beteszi a nevet. Nem lehet 2 azonos név.

Sub Nevek_kitoltese()Dim i As IntegerDim AnswerDim Fajl_neve As StringDim Futvonal As StringDim Nyomtato As StringMsgBox "Kérlek válaszd ki a pdf nyomtatót"Application.Dialogs(xlDialogPrinterSetup).ShowNyomtato = Application.ActivePrinterMsgBox "Nyomtató beállítva: " & NyomtatoFor i = 2 To Sheets("Seged").Range("F2").ValueSheets("16-32").Range("X2").Value = Sheets("Seged").Cells(i, 1).ValueSheets("16-32").Range("X2").CalculateAnswer = MsgBox("Mehet a pdf generálása?", vbQuestion + vbYesNo + vbDefaultButton2, "Biztos?")If Answer = vbYes ThenFajl_neve = ActiveWorkbook.Path & "/" & Sheets("Seged").Cells(i, 1).Value & ".pdf"Sheets("16-32").PrintOut Copies:=1, Collate:=True, IgnorePrintAreas:=False, ActivePrinter:=Nyomtato, PrintToFile:=True, PrToFileName:=Fajl_neveElseMsgBox "Nyomtatás megszakítva..."Exit SubEnd IfNextEnd Sub -
föccer
nagyúr
Makróban sima-liba megoldani. Több formanyomtatvány kezelőt is csináltam már.
Összerakod a név listát egy munkalapon, egy másikon egy formanyomtatványt.
A név darabszámhoz kötötten egy sima for ciklussal végig mész a neveken, beilleszted a formanyomtatványba és pdf-be lementet.
Ha mutatsz mintát, akkor segítünk megírni.

Ha van outlook kliens, akkor direktbe ki is tudja küldeni a vba

üdv, FG
-
-
Új hozzászólás Aktív témák
- Xiaomi 15 - kicsi telefon nagy energiával
- Samsung kuponkunyeráló
- One otthoni szolgáltatások (TV, internet, telefon)
- Mibe tegyem a megtakarításaimat?
- Formula-1
- Forza sorozat (Horizon/Motorsport)
- AliExpress tapasztalatok
- MasterDeeJay: Mi ez a pici videókártya? AMD E9173 teszt
- Tőzsde és gazdaság
- sziku69: Fűzzük össze a szavakat :)
- További aktív témák...
- Eredeti Microsoft termékek - MEGA Akciók! Windows, Office Pro Plus, Project Pro, Visio Pro stb.
- MS SQL Server 2016, 2017, 2019
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Játékkulcsok ! : PC Steam, EA App, Ubisoft, Windows és egyéb játékok
- Fallout 4 Pip-Boy Edition eladó
- Xbox One / Xbox Series játékok
- HP ProDesk 400 G3 (SFF), i3-6100T,4GB DDR4,256GB SSD, DVD,WIN11
- Gyári DELL, HP, LENOVO,Asus,Fujitsu laptop töltők, 27% ÁFA
- 245 - Lenovo LOQ (15IRX9) - Intel Core i7-13650HX, RTX 4060 (ELKELT)
- Beszámítás! Asus TUF VG249Q 24 144Hz FHD IPS 1ms monitor garanciával hibátlan működéssel
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Grrr, 3 különböző excel verziót hazsnálok)




Fferi50