-
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
válasz
Fferi50
#53442
üzenetére
Egybefüggő tartomány, de változhat a mérete.
Felső sarka a B4-ből indul. A felette lévő gomb menti le az aktuális adatokat, fejléccel, sorazonosítókkal együtt, majd törli az egészt és másolja fel az előre legyűjtött listákat mind a fejlécbe, mind az alapanyag kódokat.
Viszont durván 40x200-as a tábla, és az adatok nem minden esetben változnak (csak a fejléc és a sorazonosítók. A mentett adattáblából vissza kellene keresnem, azokat az adatokat, amik megvoltak az előző táblázatban. (ugye az oszlopok, sorok elcsúszhatnak, ha új anyagok vagy üzemek kerülnek be az alaptáblákba.
Tisztán makróval is ki lehetne keresni, nem szórakozni a képlezéssel, de azt csak nem túl hatákonyan tudom megoldani.

-
föccer
nagyúr
No, ez sem segített. Végül úgy oldottam meg, hogy a segéd munkalapora felraktam a képletet és akkor ha onnan másolom át a cél cella formula2 értékébe, akkor más helyesen megjelenik. Viszont végül leesett a tantusz, hogy baromság, mert egy egész tartományba kellene ezt bemásolnlni, és akkor nem viszi magával helyesen a cella hivatkozásokat.
Vagy makróból keresni az összetartozó párokat.
üdv, FG
-
föccer
nagyúr
Sziasztok!
Van egy UI-n, ahol adatbevitel történik. A fejléc és sor adatok változni tudnak az egyes elemzésnél, viszont elég nagy táblázatról van szó. Ezért azt találtam ki, hogy az adatbeviteli táblázatot csak külön kérésre frissítem. A frissítés elején lementem az egész tartomány értékeit, és a frissítés után újra kikerestetem egy index(hol.van(),hol.van()) függvénnyel a korábban bevitt adatokat, vissza illesztve az eredeti sor/oszlophoz, ahová tartoznak, így ha a fej és sor azonosítók változnak, szépen visszatöltődik minden a helyére.
Viszont ez ugye UI, ezért a frissítés után a kereső képletet vissza kell írnom az egész táblázatba és ennek az értékét visszailleszteni az UI-re, hogy a felhazsnálók ne lássák, hogy mi történik.
A formula beillesztésénél viszont hibát dob.
Ha kiveszem az = jelet a let elől, akkor megy, de akkor meg csak szövegként illeszti be a cellába, ami nyilván nem jó. ThisWorkbook.Sheets("alapanyag_arak").Range("K1").Formula = "=LET(a,IFERROR(INDEX(alapanyag_ar_mentes!$C$5:$AX$173,MATCH(alapanyag_arak!$B5,alapanyag_ar_mentes!$B$5:$B$173,0);MATCH(alapanyag_arak!D$4,alapanyag_ar_mentes!$C$4:$AX$4,0)),0);IF(a=0,"",a))"
Mint nem veszek észre?
Köszi!
fg -
föccer
nagyúr
válasz
#77257183
#53409
üzenetére
Rakd össze úgy a munka1 munkalapot, ahogy a képen van. A oszlopban sorszám, Boszlopban a sorozat elemei. F2-be a lépések száma, F3 F4 eredményt ad. Gomb legyen kirakva fejlesztő eszköz menöből. Ha kiraktad, akkor jobb klikk rajta, makró hozzárendelése, ott rányomsz az újra gombra. Nyílik a VBA editor. A megjeleö üres részen megjeleik egy Sub Gomb1_Click() End Sub sorok. E közé kell berakni az általam írt kódot. (vigyázz az én kódomban is benne van a Sub ---- End Sub sorok, ezt nem kell bemásolni.
Ha minden okás, akkor visszalépsz a munkafözetre és ha megnyomod a gombot, akkor már számol is.
Bármekkora lépésszámot beírhat, ami belefér az integerbe. A kód nem számolja ki a fibonachi számot, csak kiveszi a B oszlopból a megfelelő elemet.
üdv, föccer
-
föccer
nagyúr
válasz
föccer
#53402
üzenetére
dehülye vagyok, a vissza lépés nincs benne

Sub Gomb1_Click()Dim Fib_sorszam As IntegerDim Lepes_szam As IntegerDim i As IntegerFib_sorszam = 1Lepes_szam = Sheets("Munka1").Range("F2").ValueFor i = 1 To Lepes_szamIf Application.RandBetween(0, 1) = 0 ThenFib_sorszam = Fib_sorszam + 1ElseFib_sorszam = Fib_sorszam - 2If Fib_sorszam < 1 ThenFib_sorszam = 1End IfEnd IfNextSheets("Munka1").Range("F3").Value = Sheets("Munka1").Cells(Fib_sorszam, 2).ValueSheets("Munka1").Range("F4").Value = Fib_sorszamEnd Sub -
föccer
nagyúr
válasz
#77257183
#53400
üzenetére


Makró beszúrása, ha a munkalapon vagy, akkor alt+F11.
Gombot a fejlesztőeszközök menöből lehet kirakni.Munka1 munkafüzeten, ez a makró:
Sub Gomb1_Click()Dim Fib_sorszam As IntegerDim Lepes_szam As IntegerDim i As IntegerFib_sorszam = 1Lepes_szam = Sheets("Munka1").Range("F2").ValueFor i = 1 To Lepes_szamIf Application.RandBetween(0, 1) = 0 ThenFib_sorszam = Fib_sorszam + 1End IfNextSheets("Munka1").Range("F3").Value = Sheets("Munka1").Cells(Fib_sorszam, 2).ValueSheets("Munka1").Range("F4").Value = Fib_sorszamEnd Sub
ps: egyébként nagyon érzékeny az eredmény arra, hogy az első 1-2-3 lépésben mennyi pozitív lépés van. -
föccer
nagyúr
válasz
modflow
#53396
üzenetére
Makróval végig lehet menni rajta, de csak akkor fog helyes megoldást adni, hogy ha pontosan ugyan az a felépítése a két tábblázatnak, bele értve a munkalap neveket is.
Én szúrópróbaszerűen, a képletek ~10-15%-t ellenőrízném manuálisan és ha ott 0 eltérés van, akkor elfogadnám egyezőnek. Statisztikai minőségellenprzés. Ettől még lehet benne hiba, de annak az esélye, hogy hibás jelentősen lecsökken.
fg
-
föccer
nagyúr
válasz
Fferi50
#53326
üzenetére
Szuperézékeny adatokkat nem lehet ilyen rendszerre bízni. Igazándiból csak a beléptető rendszert gondoltam végig, hogy hogyan lehetne elkerülni, hogy megnézzék mondjuk a regisztrált felhazsnálókat. Oké, hogy very hide-ra rakom a megfelelő munkalapokat, de alt F11 és máris megvan. Oké, hogy MD5-re kódolom a jelszavakat és csak erre ellenőrzök, de ha bárki belép a vba-ba, akkor 1 mozdulat kiütni a belépéskori ellenőrzést. Ebből jött a gondolat, hogy lehet-e tiltani/védeni egy project VBA kódját, pl egy dev pass-al.
Mert ha védhető dev-pass-al a vba project kódja, akkor onnantól kezdve az MD5-tel már lehet védeni a belépés jelszavait. Ha workbook open-re ráépítem a belépés ellenőrzését, és nem férnek hozzá a vba kódhoz sem, akkor egyszer felhasználó (mondjuk az én szintemen) nem fogja tudni megkerülni a beléptetést). Ha valaki meg tudja törni az excel védelmét hogy hozzá férjen a vba kódhoz és azt átírja, akkor meg már mindegy, onnantól fogva mindegy, mert 1 mozdulat kiiktatni a jelszó ellenőrzést. Nyilván a jelszavak md5 hash-elése akkor is kell, függetlenól a vba kód védelmétől.
md5 bőven elég lesz, ha valaki azt megtöri, akkor legyen boldog

Jó lesz ez, köszönöm a segítséget.

föccer
-
föccer
nagyúr
Kedves Uraim, és hölgyem!
Eljött az idő. Indításnál beléptetést fogok használni. Első körben önfejlesztés céljából.
Username, nick, email cím és MD5 hash. Utóbbit azért, mert ezt megtaláltam, másrészt meg aki az md5-öt meg tudja kerülni, az az alt F11-et is meg tudja nyomni.

Jól sejtem, hogy nem nagyon tudom megfogni, hogy valaki illetéktelen hozzáférjen a vba kódhoz.
puszi mindenkinek.
föccer
-
föccer
nagyúr
Ahogy Fferi50 is írja. a címsorok és cím oszlopok "technikai" dolgok, a cella hivatkozási címét mutatják. Egyébként semmi köze a cellák adat tartalmához.
A cella az excel elemi adategysége. Van neki értéke, formátuma és címe. Egy három teljesen különböző dolog, kis túlzással tök függetlenek egymástól. A cella értékét és formátumát szabadon tudod változtatni, a címét nem.
-
föccer
nagyúr
válasz
detroitrw
#53244
üzenetére
A képletedbe mindenképpen a "C T" nevű fülön keresed az adatokat.
Mintha a C T fülön kellene kikeresni az B1 cellához tartozó dátum hetéhez tartozó oszlopból az adatokat. Viszont eddig a pontig (az én logikám szerint) még csak azt találtuk meg, hogy melyik oszlopban kell a keresést végre hajtani. A te képletedben az index fixen az 1 sort adja vissza (ezért javasoltam a vkerest- helyette).
Akkor a C T fülön, a B1-ben megadott dátum hetéhez tartozó oszlopban kell kikeresni azt a legnagyobb értéket, amely 20-nál kisebb?
Itt egy olyan kérdésem van, hogy az adott oszlopban csak az első 20 vagy nagyobb értékig keresünk, vagy a teljes oszlopban meg kell vizsgálni a 20nál kisebb értékeket és abból kiválasztani a legnagyobbat?
-
föccer
nagyúr
válasz
detroitrw
#53229
üzenetére
INDEX('C T'!$A$1:$CQ$775;1;HOL.VAN(20;INDIREKT("'C T'!A414:CQ"&HOL.VAN($B$1;'C T'!A1:A775;0);1))
használd a hivatkozás előállítására az INDIREKT függvényt, amivel ki tudod keresni a dinamikus tartományodnak a végét (ha jól látom, akkor addig kell keresni, amíg a 'C T' munkafüzet első sorában nem szerepel a 20-as szám). Miáltal az első index-ben fixen az első sor van megadva, lehet egyszerűbb lenne a VKERES() függvényt használni.
-
föccer
nagyúr
válasz
Fferi50
#53181
üzenetére
Hálózatról nyitom meg és önmagában fut. Ebben az eljárásban nem nyit meg más fájlokat.
Viszont ha nem dolgozom a gépen, csak hagyom számolni, akkor lecsatlakozik a hálózatról (gondolom valami policy beállítás lehet) és ha mentene, akkor nem találja a hálózati meghajtót és hibával leáll.
~70Mb-os fájlról van szó, nem raknám be a ciklusba a mentést, hogy ne legyen idle a hálózati tár felé. Ciklus ezres nagyságrendben fut, ezért ezt kizárnám.

üdv föccer
-
föccer
nagyúr
Hello!
Hálózati meghajtóról nyitok egy fájlt, amin egy hosszú makró fut (esetenként 1-2 óra). Ha meló végén indítom el, akkor menet közben lecsatlakozik a hálózatról a gép és az Application.Save hibát dob és megáll.
Sejtésem szerint macroban max azt lehet megoldani, hogy hiba esetén menjen tovább, de magát a hálózati újra csatlakozást nem nagyon.
Bármi ötlet? Ha megkérdezem a rendszergazdáékat, kihullik az összes hajuk. Arra is csodálkoznak, ha a total commanderben használom a gyors elérési füleket.

üdv, föccer
-
-
föccer
nagyúr
válasz
Yutani
#53162
üzenetére
Hűűű, ha jól sejtem, akkor vagy adatfrisstés kell neked, vagy makrózni kell.
Függvények csak adatfrissítésen keresztül fognak tudni olyan file-ból frissíteni, ami nincs nyitva.
Vagy makróból mgnyitod a szükséges fájlokat, kiszeded belőle a szükséges adatokat és bezárod ami nem kell.
-
föccer
nagyúr
Van valami korlátja a excel memóra használatának? 1,5 GB memóra foglalás fölé megy, akkor teljesen szétesik, nem rajzolja ki a screent, nem számol, de még sokszor mentésre sem tudom rávenni, vagy hogy a kurzort fogadja és ki lehessen jelölni a cellákat.
Teljesen szétcseszett egy komplett riportoló rendszeremet. Szerencsére 2016-2023.ig megvannak az adatok, csak a 2024-eset kell átelelnőríznem. Lehet egyszerűbb, ha újra legenerálom az alapdatokat

Microsoft® Excel® a Microsoft 365-höz MSO (2402 buildverzió16.0.17328.20346) 64 bites
Köszi

-
föccer
nagyúr
Sziasztok!
MS környezetben van valami hasonló mint a google űrapok? Link birtokában bárki kitöltheti. Fontos lenne az a funkció is, hogy táblázatokba lementi a választ és kiküldi róla az emailt is.
Köszi

üdv, föccer
-
föccer
nagyúr
válasz
Fire/SOUL/CD
#53074
üzenetére
Ehh, milyen elmaradott vagyok

-
föccer
nagyúr
válasz
Fire/SOUL/CD
#53069
üzenetére
Én is ezen kattogtam, de nincs előfizetési díja, legalábbis kártya adatokat nem kért és nem is fizettem. Bár nem 100%-mert a céges fiókra is szoktam bejelentkezni itthonról, ha valamit sürge kell megcsinálni reggel/este.
-
föccer
nagyúr
válasz
Fire/SOUL/CD
#53057
üzenetére
Most megnéztem az itthoni gépen, ezen frissebb van, mint a cégesen
Microsoft® Excel® 2021 MSO (2407 buildverzió16.0.17830.20056) 64 bites-ben sincs benne.

Fferi: O365 felületén simán beszúrás menü, vezérlők-ben ott van.
-
föccer
nagyúr
Helló!
O365-ben elérhető a sima, munkafüzeten tök jól használható jelölőnégyzet. Értéke IGAZ/HAMIS, és mintha "csak" egy speciális formázás lenne. Ha letöltöm és benyitom Office 2021-ben, akkor dobja a jelölőnégyzeteket és simán logikai IGAZ/HAMIS jelenik meg az adott cellában.


Elérhető ez a formázás 2021 alatt is valahogy? Főként 2021-ben dolgozom, ritkán lépek át O365-re.
Köszi

Érdekes.
Összenésztem az MS támogatási oldalát a jelölőnégyzetről az asztali app verziójával
Microsoft® Excel® a Microsoft 365-höz MSO (2402 buildverzió16.0.17328.20346) 64 bites

Az én értelmezésemben, akkor meg kellene lennie az asztaliban is, de egyszeráen nem találok rá.

-
föccer
nagyúr
válasz
anonymus89
#53049
üzenetére
Egy függvény saját magára nem hivatkozhat, így csak segédoszloppal megoldható. Úgy viszont a feltételes formázás egy nagyon frappáns, egyszerű és jó megoldás. Ha bekapcsolod a formázott oszllopra az autoszűrőt, akkor az színre le tudja szűrni a keresett elemeket.

üdv, föccer
-
föccer
nagyúr
válasz
bigdady
#53016
üzenetére
Kijelölöd a cellát, majd kezdőlap -> feltételes formázás -> szabályok kezelése.
Itt csak a feltételes formázás szabályai jelennek meg, ami érvényes feltétel esetén felülirja az "alap beállított" cellaformázást.
A felugróban új szabály... menü, és ott szabály, ott pedig formázandó cellák kijelölése képlettel pontt kell választanod.


-
föccer
nagyúr
válasz
bigdady
#53013
üzenetére
Itt logiakai vizsgálat van, ezért IGAZ és HAMIS. Ez nem választható, de igazándiból nem is találkozol vele.
A feltételes formázásnál lehet több külön vizsgálatot is felvenni, amit sorban értékel ki az excel. Ha a feltétel igaz, akkor végrehajta a formázást és lép a következő sorra. Ha hamis, akkor nem hajtja végre és úgy lép tövább. Illetve állítható a feltétel mellett lévő jelölőnégyzettel, hogy ha az adott sor igaz, akkor leálljon az acott cella feltétel rendszer kiértékelése.
Ha felveszem a cellára egy új sort, amiben az a feltétel, hogy a megadott dátum nagyobb vagy egynelő, mint az aktuális dátum, akkor legyen zöld és akkor működni fog, ahogy szeretnéd.

-
föccer
nagyúr
válasz
Fferi50
#52958
üzenetére
Mivel nulla kizárva, így a pozitív, illetve negatív előjel vizsgálatánál tök mindegy a kerekítés mértéke, tetszőleges kis eltérés a 0-tól már adja az eredményt. előállhat az a faramuci helyzet, hogy kiírva 0,00 van, de mégis pozitív/negatív lesz az eredmény. de én úgy értelmeztem, hogy a kerekített érték sem lehet 0, így a fenti eset nem állhat elő.
üdv, föccer
-
föccer
nagyúr
Pontosan nem értem az adatfelépítést, de Office 2021-ben vagy O365-ben kifejezetten könnyen, tömbfüggvényekkel.
Ha Legördíthető listák vannak, azt is lehet dinamikusan adatokkal feltölteni.
Konkért segítséget akkor tudok adni, ha látom a táblázat felépítését.
Üdv, föccer
-
föccer
nagyúr
Időzíthető, hogy naponta hajtsa végre a makrót. A makró futásakor kell futnia az outlooknak, mert az outlookba beállításait fogja használni az email kiküldésénél (smtp szerver cím, ilyenek)
Az nem jó megoldás, hogy ha kisitázza neked a táblázat az aktuális neveket? Ahhoz makró sem kell. Amikor megnyitod a táblázatot, az aktuális munkalapon ott lesz a lista.
Munka1 A és B oszlopában vannak a nevek és a dátumok
Ez a fv kilistázza azokat a neveket, aminél a dátum a mai dátumnál 30 nappal kirábbi
=SZŰRŐ(Munka1!A1:A1000;Munka1!B1:B1000=MA()-30)üdv, föccer
-
föccer
nagyúr
válasz
SwissAirplan
#52918
üzenetére
Nextcludot nem ismerem.
De simán fájl nevén katt, tulajdonságok, korábbi verziók visszaállítását meg lehet próbálni.
B verzió, hogy ha O365 megnyitja, akkor nyersen kimásolni az adatokat és újra építeni a fájlt.
C verzió, hogy másik fájlformátumot, korábbi excel verzióban menteni. Ha a függvények között nincs kompatibilitársi probléma, akkor ez is jó lehet.
üdv, FG
-
föccer
nagyúr
válasz
bozsozso
#52917
üzenetére
A fájl nevén jobb klikk, tulajdonságok, általános fül. Lent az atributumok mellett van lesz egy olyan, hogy bitonsági tiltások feloldaása, vagy valami ilyesmi. Ezt kell átkattintani, utána indítani a fájlt. Ezt követően az excel felugrójában engedélyezni kell a makrók futtatását és jónak kell lennie.
-
föccer
nagyúr
válasz
Jarod1
#52863
üzenetére
Feltételes formázás, azonosak kiemelése. Sima liba, erre van kitalálva.
B megoldás, hogy az egyik oszlop mellé felveszel egy segéd oszlopot, amibe a HOL.VAN() függvénnyel keresteted a másik oszlopban az első oszlop elemeit. Érdemes HAHIÁNYZIK függványbe becsomagolni, és ott egy "NINCS" vagy valami hasonló szöveget megadni.
Ha A és B oszlopban van a két adat oszlop, akkor a C oszlopba rakd be az alábbit
=HAHIBA(HOL.VAN(B1;A:A;0);"HIÁNYZIK")
ezt huzd ke ameddig kell.
üdv, föccer
-
föccer
nagyúr
Sziasztok, jó reggelt!
Egy kis hangos gondolatébresztésre lenne szükségem. Van egy feladat, amit ugyan függvényekkel szépen meg tudok oldani, de attól félek, hogy nem túl optimális a megoldás. Egyrészt lehetne-e máshogy megközelíteni a dolgokat, hogy hatékonyabb, gyorsabb legyen, másrészt milyen makrós megoldást alakalmaznátok.
Egy nagyobb project részfeladatát készítem éppen.
3 munkalap érintett.
Alapadatok_mintavetelek
Kezelo_Beton
Szurt_mintaveteli_listaA feladat, hogy az Alapadatok_mintavetelek-re beillesztett adatokra egy dinamikusan paraméterezhető szűrést tegyek és a szűrt eredménylistát a Szurt_mintaveteli_lista munkalapra rakjam át. Jelenleg 8 paraméter van megadva, de ez még bővülni fog. A paraméterek között van sima igaz/hamis, van között, és vannak a listából választható tiltások.
A listából való tiltások a betöltött alapadatokból listázza ki SORBA.RENDEZ(EGYEDI(SZŰRŐ( függvény kombóval. Ez a lista minden adat frissíténél változik. A tiltást úgy értelmezem, hogy ha az adott, kilistázott lista elem mellett <>"" érték van, akkor a Szurt_mintaveteli_lista elemei közé nem kerülhet be. A listázott elemek az Alapadatok_mintavételek bizonyos oszlopaiból jönnek.
Az alap datokban várhatóan 5.000-20.000 sor körüli elemszám lesz, a kimeneti tömbben néhány száz, max 1-2 ezer, de nincsenek korlátozva.
Kezelo_Beton:

Alapadatok_mintavetelek adattábla:

A függvényes megoldás kezd összeállni. Ehhez Segéd munkalapon felveszek a paraméterek számának megfelelő oszlopot, és a paramétereket egyesével feltételekbe fogom. Ha a tiltás feltéte igaz, akkor 1, egyébként 0 értékkel érek vissza az adott mintavételnek a sorába. Az ellenőrző oszlopok végén kap egy szum-ot az összes paraméterre. A Szurt_mintaveteli_lista 1 függvényt fog tartalmazni, mégpedig az eredeti alapadatok tömbjére, de a segédmunkafüzet szum oszlopára mutat a befoglalás, méghozzá =0 paraméterrel. Így a tiltások vagy kapcsolatba kerülnek egymással, ergó bármelyik tiltó feltétel igaz, akkor nem kerül be a szűrőbe.

Namost.
Ez 20k sorra, a 2 adattáblára, 10-10 paraméterként 4-500.000 függvény, és rettenetesen lassú lesz úgy érzem.
Mivel, hogyan oldanátok meg a feladatot, hogy kicsit erőforrás hatékonyabb legyen? Hogyan menjek végig a listás feltételeken? Most ugye simán fkeressel belekeresek, és ha nem 0 a visszatérése, akkor tiltottnak tekintem, de ezt makróban csak úgy tudom lekódolni, hogy minden paraméter, minden elemén végig megyek és az is iszonyat lassú lesz.
Köszi szépen

-
föccer
nagyúr
Makróban kell megoldani, ott goyrsabban fog futni. 40k sor már combos dubpla fkeressel, de azért még nem beláthatatlan idő.
Makróból ki lehet kapcsolni a nem szükséges automatikus újrasámolást, a screenupdating-et, szóval lehet némileg gyorsítani.
A makró megírásában is tudunk segíteni, de ahhoz pontosan kell látni a munkalapok elnevezéseit és a szükséges oszlop/sor azonosítókat.
üdv, föccer
-
föccer
nagyúr
válasz
Fferi50
#52837
üzenetére
Jól olvasom, hogy a DIR() a megadott könyvátrból sorba kilistázza a a fájlok neveit, mindig egyet, és mindig amikor meghívod (paraméter nélkül), akkor a következőt fogja megadni, és ha végig ért a listán, akkor egy üres stringet ad vissza? Hogyan lehet "üríteni" a listáját, hogy kezdje újra? Simán újra meghívom paraméteresen?

üdv, FG
-
föccer
nagyúr
válasz
Csabex
#52827
üzenetére
A második az nekem fekete lyuk. Régen néztem ezt és elvileg combobox-al meg lehet csinálni, de azt még nem néztem meg sosem, hogy hogyan kell megcsinálni.
Meg lehet csinálni azt is, hogy egy megadott könyvtárban lévő összes fájlt szépen megnyitja és menti, de azt így fejből nem tudom beírni. Egy fájlrendszer objektumot kell definiálni és azzal megoldható.
-
föccer
nagyúr
válasz
Csabex
#52825
üzenetére
LEgyen egy seged munkalapon A1-től A16-ig felsorola a munkafüzetek nevei, B1-től B16-ig a munkafüzetek nevei. D1-be a D4 cellába bekerülő, D2-be az E4-be bekerülő. D3-ba =darab2(A:A)
Rakj ki egy gombot a fejlesztőeszközök menüből, amire a megírt makrót fogod rakni.
Sub Masolas()Dim i As IntegerFor i = 1 To Sheets("Seged").Range("D3").ValueWorkbooks(Sheets("Seged").Cells(i, 1).Value).Sheets(Sheets("Seged").Cells(i, 2).Value).Range("D4").Value = Sheets("Seged").Range("D1").ValueWorkbooks(Sheets("Seged").Cells(i, 1).Value).Sheets(Sheets("Seged").Cells(i, 2).Value).Range("E4").Value = Sheets("Seged").Range("D2").ValueNextMsgBox "Kész."End SubHa ugyan az a munkalap néven van az összes munkafüzetben, akkor lehet egyszerűsíteni, hogy nem hazsnálod a Seged B oszlopát. Akkor így módosul:
Sub Masolas()Dim i As IntegerDim Cel_Ws As StringCel_Ws = "CélMunkafüzetNeve"For i = 1 To Sheets("Seged").Range("D3").ValueWorkbooks(Sheets("Seged").Cells(i, 1).Value).Sheets(Cel_Ws).Range("D4").Value = Sheets("Seged").Range("D1").ValueWorkbooks(Sheets("Seged").Cells(i, 1).Value).Sheets(Cel_Ws).Range("E4").Value = Sheets("Seged").Range("D2").ValueNextMsgBox "Kész."End Sub -
föccer
nagyúr
válasz
Flowtation
#52786
üzenetére
Használd a szűrő() függvényt. Befoglalásba kell betenni a nevet, mint feltétel.
Ha nem függőlegesen, hanem vizszintesen akarod a listát akkot be kell ágyaszni egy transzponálás függvényt.
üdv, FG
-
föccer
nagyúr
gyerekek, új időszámításba léptem. Felfedeztem, hogy létezik függ.halmozás függvény. Hogy én ezzel eddig mennyit szívtam.
köszönöm, hogy meghallgattatok. Most már könnyebb

-
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
válasz
föccer
#52778
üzenetére
Ezt 1x kell lefuttatni, ez megcsinálja annyiszor a másolást, ahány a For i = WsC to WsC+10 sor végén a szám (jelenleg a 10)
A munkalapon neve az N betűből és egy sorszámból fog állni.
sub Szetmasolas()
Dim i As Integer
Dim WsC As Integer
WsC = ActiveWorkbook.Sheets.Count
For i = WsC To WsC + 10
Sheets("16-32").Copy After:=Sheets(i)
Sheets("16-32 (2)").Name = "N" & i - WsC + 1
Next
End SubEz pedig kijelöli és nyomtatóra küldi az összes (jelenleg 10) munkalapot.
Sub kijelolnyomtat()
Sheets(Array("N0", "N1", "N2", "N3", "N4", "N5", "N6", "N7", "N8", "N9", "N10")).Select
Sheets("N0").Activate
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub -
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
-
föccer
nagyúr
válasz
Fferi50
#52743
üzenetére
Végül sokkal egyszerűbb lett a megoldás. A kód részletedet nézve sejlett fel előttem, hogy a PrintPreview megjeleníti child form-ban az előnézeti képet, majd annak bejárása után folytatja a makró futását a következő sorban. Szóval csak simán kapott egy Sheets(NyWs).Visible = xlSheetHidden utasítást és jóccakát. Tökéletesen működik.

-
föccer
nagyúr
Sziasztok!
A lenti kóddal megjelenítek egy rejtett munkalapot, majd kérem a nyomtatási képet, hogy lehessen direkt nyomtatni.
Milyen néven találom meg azt a metódust, ami akkor fut le, ha a nyomtatási képet bezáródik (tehát ha a nyomatást vagy ha a bezárást választom, ígyis-úgy is szertném elrejteni az NyWs-t.
Köszönöm

Sub Nyomtat()Dim NyWs As StringSheets("Seged").Range("B1:D1").CalculateNyWs = Sheets("Seged").Range("D1").ValueSheets(NyWs).Visible = xlSheetVisibleSheets(NyWs).PrintPreview FalseEnd Sub
-
föccer
nagyúr
válasz
föccer
#52733
üzenetére
Ez alapján meg fogod tudni csinálni.
Sub Szorzas()Dim Sor As LongDim Oszlop As LongDim S As StringDim Szorzo As DoubleS = "Munka2"Szorzo = Sheets("Munka1").Range("A1").ValueFor Sor = 1 To 20For Oszlop = 1 To 20Sheets(S).Cells(Sor, Oszlop).Value = Sheets(S).Cells(Sor, Oszlop).Value * SzorzoNextNextEnd Sub -
föccer
nagyúr
válasz
lanszelot
#52732
üzenetére
Alapvetően egy objektum orientált visual basic-ként kell kezelni.
Makróbarátként kell menteni a munkafüzetet, bekapcsolni a fejlesztő eszközök menüt. A legegyszerűbb, ha kiraksz egy gombot, amihez a megírt makrót rendeled.
alt+F11 bill kombinációval hívod elő a VBA editort. Bal oldalt a modul-ba dupla katt és már lehet is írni a kódot.
Ha visszalapozol ott a fórumba, sok-sok megírt kódot látsz.
Minden makró sub - end sub kód közé kell rakni. 1 modulba mehet több sub is.
egy cella értékét a sheets("munkalap neve").range("cella hivatkozás").value objektumban éred el vagy a sheets("munkalap neve").cells(sor azonosító, oszlop azonosító).value objektumban.
Változó deklaráció a Dim változó név As tipus utasítással. Ciklusok mennek. For - Next fog neked kelleni. feltétel keelés simán If - then - else - end if kulcsokkal mennek.
Operátorok közül a megszokottak.
Érték adás klasszikusan jobbról balra végrhajtás van i = i+1. Ugyan ez megy a cella értékeinek a megadásával is működik.
sheets("munkalap1").range("A1").value =sheets("munkalap1").range("A1").value + 1
Ha programozásba otthon vagy, akkor ezzel nagyjából már menni is fog ennek a feladatnak am egoldása.
Ma készen vagy a makróval, akkor VBA mecsok, jobb klikk a gombon és makró hozzárendelése. Ott lesz a megírt sub neve. Kijelölöd, okézod és már kattinthatod is a gombot.
-
föccer
nagyúr
válasz
lanszelot
#52728
üzenetére
Az excel egy program. Alapvetően egy keretrendszer, amin belül a program adta korlátok között azt csinálsz amit akarsz.
Alapadat - > algoritmus -> eredmény
Ez az excel működési alapelve. Amit te szeretnél, hogy az alapadtba visszatöltse neked az eredményt, ami viszont logikailag hibás és/vagy adatvesztéshet és/vagykörkörös hivatkozáshoz és a futásban stack overfow-ba esne.
Ahogy Fferi írta, amit szeretnél arra nincs felkészítve az excel. Nem véletlen. Ellenben meg lehet oldani sok máshogyan. Megoldásból megírtunk többet is. Néhány kattintás. Ha szeretnéd segítünk a makró felprogramozásában és akkor menni fog az is. Ehhez viszont kellene néhány konkrétum. Elnevezések, munkalap nevek, pontos cella pozíciók.
A leírtak alapján a makró megírása sem nagyon nagy feladat, még én is meg tudom csinálni 1-2 óra alatt

üdv, fg
-
föccer
nagyúr
válasz
lanszelot
#52725
üzenetére
1. munkalap
A1 cellába az ominózus szám2. munkalap
bármilyen tartományba az alap számok, amiket meg kell szoroznod, A1-től. Ide tetszőleges módon beviheted ezeket, bármilyen mennyiségben, csak legyen egy "maximum sor és oszlop"
3. munkalap. Ide jönnek az eredmények. A1 cellába =HA(Munkalap2!A1="";"";Munkalap2!A1*Munkalap1!$A$1)
Ezt a képletet 1x kell kiterjesztened az egész tartományra a 3. munkalapon és mindig a munkalap1 A1 cella értékével fogja kiszorozni a munkalap2-re betett adatokat. A munkalap3 pedig az eredményt fogja tartalmazni, ahonnan tetszőlegesen kimásolhatod.
A számolótáblát megcsinálni gyakorlatilag bárhány cellára kb 20 másodperc, utána bárháynszor használhatod, csak a munkalap1 és munkalap2 alapadatait kell változtatodnod.
Tök felesleges erre programot írni, meg makrózni. Ha minimálisan is rutinban vagy, tényleg 1 perc megcisnálni.
-
föccer
nagyúr
válasz
Delila_1
#52658
üzenetére
Alapadatok megvannak, adatvesztés nincs, erre mindig akkurátusan figyelek. Csak időveszteség.
1 ciklus pár perc alatt fut le, 12*35 ciklus van. Egy range hivatkozást rosszul adtam meg, így minden eredmény 0 lesz (egy olyan makró ami 2 adattáblán futtat keresést, hogy mi változott, az milyen típusú beavatkozás volt, ilyenek. Most saját magához akarja hasonlítani.
Na mindegy, akkor holnap folytatom
-
föccer
nagyúr
Sziasztok!
Egy névkezelőben elnevezett tartománynak hogyan tudok hivatkozni egy adott oszlopára?
Szumhatöbb függvénynél jött elő a kérdés.
Egy elnevezett tartomány 1 és 4 oszlopa lenne a kritérium tartomány 1 és 2. és a 3. oszlopa az összeg tartomány

Ismételten köszönöm a segítséget

fg
SZUMHATÖBB(
-
föccer
nagyúr
válasz
BigBadPlaYeR
#52444
üzenetére
A (sor(B1)-1*5) képlet 0-át ad eredményül, ami nem értelmezhető sor azonosítóként. Azon csodálkozom, hogy nem HIV hibát ad.
-
föccer
nagyúr
O335-ben.
Mivel kötött formátumban vannak az adatok, egyszerűen le kell választani a sorszámot a mérési adattól és külön-külön adatoszlopokat létrehozni.
A szűrő második paraméterében a szám adja meg, hogy melyik mérési pont adatait listázza az adott oszlopba

-
föccer
nagyúr
Sziasztok!
Egy adott cellához tartozó feltételes formázást kódját hogyan lehet szerkeszteni makróból? Hogy érem el?

Amit találtam, az mind simán if feltétel mögé rakott interior.color megadásával csinálta, de én a megadott kódot szereném módosítani, nem magát a színt.
Köszi

föccer
-
föccer
nagyúr
válasz
Jarod1
#52417
üzenetére
3 megoldás:
1: feltételes formázással beállítot, hogy az ismétkődő értékeket színezze majd autoszűrővel színre szűrsz,
2: használod a DARABTELI vagy DARABHA függvényt egy segédoszlopban. A tartomány az egész oszlop, a kritérium pedig az adott sor egy eleme. Autoszűrőt bekapcsolod és szűrt a 0-nál nagyobb számokra.
3: 2 pontban lévő segédoszlopot megcsinálod, majd SZŰRŐ függvényt használod. A tartomány az eredeti adat oszlop, befoglalásra perdig beállítod, hogy a segédoszlop adatai <>0 legyen. Ezt beágyazod az EGYEDI függvénybe és kész is-A 3. dinamikus megoldás, de O365 vagy M2021 kell hozzá, az első kettő manuális gyűjtés.
üdv, föccer
-
föccer
nagyúr
Én az ilyet úgy csinálnám meg, hogy kiválasztható szöveg részleket, cikkeket egy kezelőfelületen beállítnánk, utána egyszerűen összefűzném a megfelelő sorrendben, esetleg makróval, vagy függvénnyel a feladat bonyolultságától függően. Csináltam már ilyen formanyomtatvány kezelőt, nem annyira nagy kunszt. Viszont ezt nem nagyon lehet "látatlanba" megírni, mindenképpen látni kell hozzá a sablon formátumát, hogy mihez igazítom
üdv, föccer
-
föccer
nagyúr
válasz
detroitrw
#52347
üzenetére
a SOR() illetve az OSZLOP() függvény vissza adja a függvényt futtató cella sor, illetve oszlop számát. A hol.van által adott értékhez csak simán add hozzá.
ps:
A sor és az oszlop id működik úgy, hogy paraméterként egy hivatkozás van, akkor a hivatkozott cellának a sorát/oszlopát adja vissza.
-
föccer
nagyúr
válasz
Lajos.P
#52314
üzenetére
DARABHA vagy DARABTELI függvények kell neked, ha az kell, hogy melyik névből mennyi van.
Ha van mellette valami szám, amit össze kell adnod, akkor SZUMHATÖBB függvény kell neked.
Ha elegánsan akarod csinálni, akkor külön kimásolod az összes nevet, majd c sinálsz egy adatok->ismétlődések eltávolítását, és e mellett számoltatod össze.
-
föccer
nagyúr
Elsőként sorba raknám a tárolókat prio sorrendben (mondjuk külön oszlopokba). Lekérném a sorrendbe rakott tárolók kapacitását, amiből csinálok egy görgetett összeget, amiből meghatározható, hogy melyik lesz az első olyan tároló, amely nincs tele. Innentől kezdve pofonegyszerű azt kiszámolni, hogy mennyi szabad hely van még (a negatív szabad hely lesz a túlcsordulás)
Most rettenetesen el vagyok havazva, de egyébként simán függvény kezeléssel megoldható O365-ben.
Nyelv nem gond, az excel "honosítja" magát. Magyar nyelvű függvényekkel megírt táblázatot fordítja ha angol környezetben nyitod meg.
Új hozzászólás Aktív témák
- Linux kezdőknek
- Kínai és egyéb olcsó órák topikja
- Fotók Google Camera Mod-dal (GCAM)
- MWC 2026: Bajnoki címre pályázik a Xiaomi Watch 5
- Formula-1
- PlayStation 5
- Projektor topic
- Mesterséges intelligencia topik
- Renault, Dacia topik
- Samsung Galaxy Watch (Tizen és Wear OS) ingyenes számlapok, kupon kódok
- További aktív témák...
- Játékkulcsok olcsón: Steam, Uplay, GoG, Origin, Xbox, PS stb.
- Windows 10 11 Pro Office 19 21 Pro Plus Retail kulcs 1 PC Mac AKCIÓ! Automatikus 0-24
- Fallout 4 Pip-Boy Edition eladó
- Bitdefender Total Security 3év/3eszköz! - Tökéletes védelem.
- Windows, Office licencek kedvező áron, egyenesen a Microsoft-tól - Automata kézbesítés utalással is!
- Dell Precision 7750,17.3" FHD,i7-10875H,32GB DDR4,256GB SSD,RTX 3000 6GB VGA,WIN11
- Új és régi konzolok Okosítása és Szoftveres szintű javítása - MÁR 13.00-S PS4 IS!
- BESZÁMÍTÁS! ASUS X670E R7 9800X3D 32GB DDR5 1TB SSD RTX 4080 16GB Lian Li O11 Dynamic EVO RGB 850W
- Bomba ár! Lenovo ThinkPad 13 Gen2 - i5-7G I 8GB I 256GB SSD I 13,3" FHD I HDMI I Cam I W11 I Gari!
- Lenovo ThinkPad P15 Gen 2 i7-11850H 32 GB RAM 512 GB SSD NVIDIA T1200 Garancia
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

Ha kiveszem az = jelet a let elől, akkor megy, de akkor meg csak szövegként illeszti be a cellába, ami nyilván nem jó.
































