Hirdetés
-
GAMEPOD.hu
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 Sub
Application.EnableEvents = False
Application.ScreenUpdating = False
egyedidb
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Sub egyedidb()
Dim rrange As Range, frange As Range, i As Integer
Set rrange = ActiveSheet.ListObjects(1).DataBodyRange
Set frange = Cells(1, Munka1.ListObjects(1).Range.Columns.Count + 3)
For i = 1 To rrange.Columns.Count
If i = 1 Then
rrange.Columns(i).Copy frange
Else
rrange.Columns(i).Copy frange.End(xlDown).Offset(1, 0)
End If
Next
Range(frange, frange.End(xlDown)).RemoveDuplicates 1, xlNo
frange.offset(0,-1).Value = frange.End(xlDown).Row
Range(frange, frange.Offset(rrange.Cells.Count, 0)).Clear
End 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. -
Delila_1
veterán
-
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
[ Szerkesztve ]
-
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 Integer
Dim Answer
Dim Fajl_neve As String
Dim Futvonal As String
Dim Nyomtato As String
MsgBox "Kérlek válaszd ki a pdf nyomtatót"
Application.Dialogs(xlDialogPrinterSetup).Show
Nyomtato = Application.ActivePrinter
MsgBox "Nyomtató beállítva: " & Nyomtato
For i = 2 To Sheets("Seged").Range("F2").Value
Sheets("16-32").Range("X2").Value = Sheets("Seged").Cells(i, 1).Value
Sheets("16-32").Range("X2").Calculate
Answer = MsgBox("Mehet a pdf generálása?", vbQuestion + vbYesNo + vbDefaultButton2, "Biztos?")
If Answer = vbYes Then
Fajl_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_neve
Else
MsgBox "Nyomtatás megszakítva..."
Exit Sub
End If
Next
End 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
[ Szerkesztve ]
-
-
Új hozzászólás Aktív témák
- Samsung Galaxy S24 FE - később
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- Milyen billentyűzetet vegyek?
- Apple Watch Sport - ez is csak egy okosóra
- BestBuy topik
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- Villanyszerelés
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- További aktív témák...
- Bontatlan - BATTLEFIELD 1 Collectors Edition - Játékszoftver nélkül
- FIGYELEM - Megjelent az Office 2024 - Bevezető áron
- Game Pass Ultimate előfizetések 4 - 19 hónapig azonnali kézbesítéssel a LEGOLCSÓBBAN! AKCIÓ!
- Microsoft licencek KIVÉTELES ÁRON AZONNAL - UTALÁSSAL IS AUTOMATIKUS KÉZBESÍTÉS - Windows és Office
- X-Plane 12 és kiegészítők
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest