Hirdetés
- eBay-es kütyük kis pénzért
- f(x)=exp(x): A laposföld elmebaj: Vissza a jövőbe!
- Kalandor: Muti, mekkora a havad?!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Luck Dragon: Asszociációs játék. :)
- Magga: PLEX: multimédia az egész lakásban
- Cifu: Űrhajózás 2025 - Összefoglaló írás
- Geri Bátyó: Agglegénykonyha különkiadás – Bors
- Toomy: FOXPOST: régen jó volt, de már jobban jársz, ha elfelejted
- btz: Internet fejlesztés országosan!
-
LOGOUT
A Microsoft Excel topic célja segítséget kérni és nyújtani Excellel kapcsolatos problémákra.
Kérdés felvetése előtt olvasd el, ha még nem tetted.
Új hozzászólás Aktív témák
-
hallgat
csendes tag
Sziasztok!
Makró segítségre lenne szükségem.
Van egy munkalap, amin random cellák piros háttérszínnel vannak ellátva.
(a szín a stílusok menüszalagban a "rossz" alapérték piros)Azt szeretném elérni, hogy a makró a munkalapon található összes piros háttérszínnel ellátott cellát törölje.
Tegye mindezt úgy, hogy a tötölt cellánál a mellette lévő cellákat balra tolja.
Excel 2010-ről beszélünk.
Előre is köszönöm a segítséget!!! -
hallgat
csendes tag
válasz
hallgat
#31205
üzenetére
Sziasztok!
Sikerült nagyban könnyítenem a helyzeten, de a megoldás makróval nekem még így is távoli.
Mát csak 2 oszlopom van.
A oszlopban csoport ID-k, ismétlődésekkel.
B oszlopban jellemző ID-k ismétlődésekkel.
Nagyjából így:
Amit el kéne érnem, hogy egy másik munkalapon legyen egy listám, hogy melyik jellemző melyik csoportban szerepel.
A kezdő képből ez lenne a végeredmény:
A makrónak azt kellene megoldania, hogy a kiinduló állapotban elindul Munka1!B2 cellánál, értékét beteszi Munka2!A2 cellájába és B2-be beírja Munka1!A1 értékét. Továbblép lefelé, ha Munka1!B3 tartalma egyezik Munka1B2-vel, akkor Munka2!A2 változatlan marad, de Munka2!B2 értékéhez hozzáteszi egy vesszővel elválasztva Munka1!A3 értékét.
Továbblép. Ha Munka1!Bn értéke más lesz, mint Munka1!Bn-1, akkor Munka2!A következő üres cellájába beírja Munka1Bn értékét, mellé pedig Munka1!An értékét és így tovább.Ha ebben tudna valaki...
Köszi!

-
hallgat
csendes tag
válasz
#02644736
#31229
üzenetére
Szia!
Ctrl+C, a beillesztendő helyen pedig jobb egérgomb és a menüben a "Beillesztés (B)" lehetőséget választva viszi a formátumot is.
Vagy irányított beillesztés -> "Minden" legyen beállítvaBár nekem sima Ctrl+C - Ctrl+V -re is úgy viszi át, hogy megmarad a formátum is.
-
hallgat
csendes tag
A változó fájlnevek nem akkora gond, ha tartasz egy külön munkalapot a fájlnevek megadására.
Itt mondjuk az "A" oszlopban a fájlok elérési útját megadod szövegesen, egyenként.
Ha van új, azt hozzáteszed.
Így a makró tudja majd, hogy melyik fájlokkal kell foglalkoznia és azoknak mi a pontos elérési útja.Ez persze nem megoldás a makróra, de a fájlnevekre igen.
-
hallgat
csendes tag
Sziasztok!
Segítségeteket szeretném kérni egy konkrét feladat makróval történő megoldására, Excel 2010 alatt.
A kiinduló állapotban van egy táblázat, ami fejlécet tartalmaz.
Az "A" oszlop tartalmazza termékcsoportok ID számát, van benne ismétlődés, az ismétlődések száma random.
A további oszlopok az adott sorban található termékcsoporthoz rendelt jellemzők ID-ját tartalmazza.
A kiinduló tábláról egy kép:Azt szeretném, hogy a makró szedje össze, hogy az egyes termékjellemző ID-k melyik csoport ID alatt szerepelnek. Hasonló végeredményre gondoltam, de az sem baj, ha nem egy cellába kerülnek, hanem külön cellákban, jobbra követő oszlopokba:

Ennél jelentősen több persze mind a csoport, mind a jellemzők mennyisége.
A kiinduló adattartomány A1:BE2070 tartományba esik.Ez a feladat az én szerény VBA tudásomat már messze meghaladja.
Előre is nagyon köszönöm a segítségeteket! -
hallgat
csendes tag
Köszönöm, ez az út járható egyenlőre számomra 
Nem használtam még ilyen irányú összekötést az Excel és az SQL között, ezért bizonytalankodtam, de ez teljesen járható.A tapasztalatokat és a tanácsot is köszönöm, igyekszem megkönnyíteni az életünket és elérni a PQ integrálást.

A "jobb helyekről" csak annyit, hogy az idén térünk át 2003-ról 2010-re. Eddig kiváltság volt a 2010 használata. Azt hiszem ez elég sokat elmond.

Igaz, ezres nagyságrendű a licence, nem játék az átállás, de nagyon itt volt az ideje. Már ennek is örülök.
-
hallgat
csendes tag
Szia!
Köszönöm!
Ez is segít, mert nem töltök vele feleslegesen sok időt.
Vállalati környezetben nem nagyon fog menni kiegészítők telepítése.
A powerpivot nevű kiegészítést már én is kiszemeltem magamnak, most hízelgek, hogy tegyék fel. Nem elég ha nekem, mert a megírt programokat nagyrészt nem én használom.Ez esetben azonban más megoldáson töröm a fejem. Ha Excelből be tudnék makróval tölteni adatot egy már létező SQL táblába...
Ez esetben az adatbázisban készítenék egy táblát a cikkszámoknak. Ez a tábla már behúzható MS Query alatt is, a kapcsolat típusával pedig szabályozható, hogy csak a táblában szereplő cikkszámok kerüljenek bele a lekérdezés eredményei közé.Ez esetben a makrónak azt kellene tudnia, hogy egy munkafüzet adott oszlopának értékeivel feltöltsön ODBC kapcsolaton keresztül egy létező MS SQL táblát úgy, hogy előtte törli annak tartalmát.
Hát akkor most errefelé kutakodok.
Még egyszer köszi!
-
hallgat
csendes tag
Sziasztok!
A következő problémával küzdök és kérek segítséget, ha valaki már találkozott vele:
MS Query használatával adatokat húzok be egy Excel munkafüzet lapra, ODBC kapcsolaton keresztül elért MS SQL szerver adatbázis táblákból.Mivel egy-egy lekérdezés nagyon sok sort tud visszaadni, szűkítenem szükséges.
Erre MS Query-nek van is megoldása, paraméter mezőben megadható fix érték, értékek, vagy kiadhatok cellára mutató hivatkozást, amit WHERE feltételként kezel a lekérdezés során.
Ez idáig OK, rendszeresen használom gond nélkül.Most olyan WHERE feltételt kellene megadnom, ami tetszőleges számú adatot tartalmaz egy cellában, azaz -- WHERE "mező" IN (paraméter1,paraméter2,paraméter_n) --. Jelen esetben termékek adatait kérdezem le, a cikkszámok a szűkítési lehetőség, így a cella egymástól vesszővel, vagy ponttal, vagy akármivel elválasztott cikkszám felsorolást tartalmaz.
Mivel makróval fűzöm össze a cellába a szükséges cikkszámokat, meg tudom szabni előre, hogy mi legyen az elválasztó karakter, ez nem gond.Az MS Query grafikus felületén a paraméter mezőknél választható az a lehetőség, hogy "eleme".
Ebben az esetben a paraméter meghatározás így nézhet ki: --eleme (123456;543210;456789)-- Pontosvesszővel tagolt felsorolás. De ez csak akkor működik, ha fixen begépelem előre a cikkszámokat, vagy kiválasztom a felajánlott listából a query-n belül a saját eszközével.Az "eleme" paraméter tartalmazhat bármennyi értéket, akár ha WHERE lenne ott. Igazából az SQL kódot megnézve az is van, csakhogy az --WHERE "táblanév.mezőnév" IN(?)-- formával, azaz a kérdőjel jelzi, hogy adatot kell bekérnie. A kérdőjelet nem lehet megváltoztatni. Bármi más karakter kerül a kérdőjel helyére, nem fut le a lekérdezés, szintaktikai hibára hivatkozva.
Ha szeretném azt elérni, hogy a paraméter a későbbiekben egy cellaértékre hivatkozzon, vagy dobjon fel párbeszéd ablakot, azt a [ ] jelekkel tehetem. Ez esetben nem kell értéket előre megadnom, a lekérdezés futásakor kéri be, és ekkor alkalmazza a kérdőjeles megoldást is.
Ez esetben ez látszik a grafikus lekérdező felületen --eleme ([szabad_szöveg])--. A szabad szöveg bármivel helyettesíthető, vagy akár üresen is hagyható, csak a párbeszédablakban megjelenő szövegre van hatással, mondhatjuk, hogy a paraméter neve, de csak az emberi szem számára.Innen azonban nem tudok tovább haladni.

Ha az "eleme" paramétert választom, nem tudom elérni, hogy a beadott értékeket elfogadja, bármivel is választom el őket az Excel cellában. Idáig el sem kell menni, kézzel is futtatható, még az MS Query felületén, ahol ilyenkor egy párbeszéd ablakban kéri be a paramétert. Ha több számot próbálok beadni, mindegy mivel elválasztva, érvénytelen értékre hivatkozva nem fut le a lekérdezés.
Esetleg valaki, aki használja az MS Query-t, találkozott már hasonló problémával? Azaz miként tudok több számot paraméterként megadni a futtatandó lekérdezés számára?
Előre is köszönöm!!!!
-
hallgat
csendes tag
válasz
atillaahun
#19602
üzenetére
Nincs mit! 
-
hallgat
csendes tag
válasz
atillaahun
#19596
üzenetére
Va ez így néha

2003-ban:
Jobb egérgomb a parancsikonok felett, majd a Visual Basic eszköztár bepipálása. "Vezérlők eszközkészlete" gomb, feladja a kipakolható elemeket tartalmazó ablakot.Másként: Nézet -> Eszköztárak -> Visual Basic
-
hallgat
csendes tag
válasz
szata.68
#19541
üzenetére
Csak egy minta, nem a legelegánsabb megoldás...
Feltételeztem, hogy adataid (amit szorozni kell) A2-től lefelé vannak.
B1 értéke nálam a képlet, azaz =A1*1,5A makró megnézi, hogy meddig vannak adataid "A" oszlopban, addig a sorig "B" oszlopban bemásolja a képletet B1-ből B2-től az utolsó sorig.
Ezt követően ezzel az értékkel felülírja "A" oszlop értékeit, majd törli "B" oszlopot.
Sub Makró1()
'
' Makró1 Makró
'
Dim usor As Integer
usor = Sheets("Munka1").Range("A1").End(xlDown).Row
Range("B1").Copy
Range("B2:" & "B" & usor).PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Range("B2:" & "B" & usor).Copy
Range("A2:" & "A" & usor).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Columns("B:B").Delete Shift:=xlToLeft
Application.CutCopyMode = False
End Sub -
hallgat
csendes tag
válasz
Simba86
#19530
üzenetére
Szia!
Bocsánat, csak trollkodom.

ÁFA számításnál az osztás ad pontosabb eredményt, nem a közelítő értékkel való szorzás.
A bruttó értékből úgy kapod meg a nettót, hogy elosztod 1 egész + ÁFA értéke tizedesekben megadva, azaz 1,27-tel, ha 27%-os az ÁFA kulcs.Ha megnézed lappy válaszát, ugyan ezt csinálja, csak két lépésben, azaz elosztja 127-tel (megkapja az 1%-ot), majd szorozza 100-zal (megvan a 100%).
Én azért választanám Delila megoldását, mert nincs a képletbe "égetve" az ÁFA értéke. Ha változás van, vagy új érték jön be a képbe, csak a listát kell bővíteni/helyesbíteni. Elgépelni sem lehet, mert érvényesítésnél csak a listában szereplő értékeket veheti fel a cella, kisebb a hiba lehetősége.
Persze ez mindenkinek a saját ízlése ;-)
Még egyszer elnézést a belekotyogásért!
Hogy a kérdésedre is legyen némi segítség:
A két bruttó 1000-es cellád alapjainak összegét kiszámoltathatod lappy képletével úgy is, hogy a két képletet (x áfa és y áfa) összeadásjellel egymás mögé fűzöd. Így a képlet kiszámolja az első cella értékéből a nettó értéket, majd hozzáadja második cella értékéből számolt nettó értéket és ezt jeleníti meg.
Az kérdés, hogy egy pénztárkönyvben miért is írnál 2 tételt egy sorba?
De ez már a Te szakterületed.
Peace, love r'n'r!

-
hallgat
csendes tag
válasz
GrandS
#19017
üzenetére
Külön lapon nyílnak meg, vagy inkább nevezzük külön munkafüzetnek.
Gondolom azt szeretnéd, hogy külön Excelként nyíljanak meg, ne egy Excelben külön ablakként.
Ha a már nyitva lévő Exceled mellé elindítod újra a programot és az újonnan elindított Excelben a megnyitás paranccsal hívod be a másik fájlt, akkor 2 Exceled lesz nyitva, mehet a váltogatás.DE... 2010 és 2003 Excelben is működik az Alt+Tab billentyűvel való váltás a munkafüzetek között. Max. nem tudod őket 2 képernyőre szétrakni...
-
hallgat
csendes tag
Khm...

Nagyon köszönöm!!!!!

Holnap nekifutok, hogy meg is értsem

A feladatot már megoldottad, de itt a remek alkalom számomra, hogy elkezdjem megtanulni a tömböket használni.

Azt hiszem megadtad a kezdő, vagy inkább végső lökést, ezért külön hála.

Össze sem lehet hasonlítani a tempót.
Nem nélkülözhető bizonyos pont után ez az ismeret.Még egyszer köszi!

-
hallgat
csendes tag
válasz
m.zmrzlina
#18985
üzenetére
Szerintem sem úszom meg a tömböket

Mindent el kell egyszer kezdeni
Most néztem épp Mutt válaszát...

Eljött az ideje a tanulásnak

Köszönöm a segítséget!!!!

-
hallgat
csendes tag
válasz
m.zmrzlina
#18981
üzenetére
Köszönet!
Ezt nem most fogom átrágni, de hasznos lesz

A tömböket... No igen, egyszer rá kéne már szánni magam.

Köszönöm!!!
-
hallgat
csendes tag
válasz
hallgat
#18947
üzenetére
Sziasztok!
Sikerült túlesnem a szintaktikai bénázáson
, DE...Tudtok erre gyorsabban lefutó megoldást?
Ez így már tisztességes ideig elszórakozik egyetlen oszloppal is, nem 190-nel
Sub Makró1()
Dim o As Integer
Dim s As Integer
For o = 190 To 2 Step -1
For s = 1422 To 3 Step -3
Sheets("Munka2").Cells(s, o).Select
If IsEmpty(Sheets("Munka2").Cells(s, o)) Or (Sheets("Munka2").Cells(s, o)) = 0 Then
Sheets("Munka2").Range(Cells(s, o), Cells(s - 2, o)).Delete Shift:=xlToLeft
End If
Next s
Next o
End SubKöszi!!!
-
hallgat
csendes tag
Szia!
Ha 2010 Excelt használsz, a következő módon meg tudod oldani:
1., A cellának alap esetben zároltnak kell lennie a cellaformázás -> védelem fülön.2., Ne legyen bekapcsolva a lapvédelem.
3., Menj a Korrektúra eszköztárra, azon belül a változások blokkhoz és válaszd a Tartományok szerkesztésének engedélyezése gombot.
4., Itt megadhatod, hogy ha védett lesz a lap, akkor mely cellák szerkeszthetők mégis, ha tudja a felhasználó a jelszót.
5., Kapcsold be a lapvédelmet
-
hallgat
csendes tag
Sziasztok!
Segítséget szeretnék kérni egy egyszerűbb makróban, ami mégis kifogott rajtam

Van egy 190 oszlopból és 1422 sorból álló Excel 2010 táblám.
Minden harmadik sora tartalmaz, vagy nem tartalmaz adatot.Törölni szeretném az adatot nem tartalmazó cellákat a fölöttük lévő további két cellával egyetemben úgy, hogy a fennmaradó cellákat tolja el balra.
Úgy indultam el, hogy egy ciklusba betettem i= utolsó sornak az ellenőrizendő utolsó sort (1422), végnek a 3. sort (azaz az utoljára ellenőrizendőt), lépésköznek pedig -3-at, mert csak minden 3. sorban kell cellákat ellenőrizni.
Ezt követően ellenőriztetem az értékét 1422.sor, GH cellájának (190. oszlop), ami ha üres, vagy nulla, akkor törölni kellene cellák balra tolásával GH1422:GH1420 3 cellát, majg ugrani a következő ellenőrizendő cellára, azaz GG1422-re.
Ha ezzel a sorral végzett, kéne kezdenie GH1419 ellenőrzésével és szépen végig az egész soron és felfelé a táblázatban.Sajnos a szintaktikán elvéreztem, nagyon béna vagyok...

A segítséget előre is köszönöm!!!!!!!!!!!!!!!!!!!!

-
hallgat
csendes tag
Sziasztok!
Szeretnék egy parancsgomb - már meglévő makrója elé - egy elágazást tenni.
A dolga az lenne, hogy megvizsgál 3 nevesített cellát, tehát pl.: nem A4-et, hanem a jelenleg A4-ben lévő ALPHA_2X2 elnevezésű cellát, aminek helye változhat, de a makrónak akkor is ezt a cellát kellene keresnie.
Szóval megvizsgálja, hogy üres e. Ha igen, megáll a makró, ad egy msgbox üzenetet, amire kattintva nem folytatja a makrót, hanem visszaáll a futtatás előtti állapotra, azaz end sub lenne az ág kimenete.
Ha nem üres ez a 3 cella, akkor tovább futtatja a makrót, a már most is benne lévő parancsok végrehajtásával.Az if-vel még csak csak elboldogulnék, de erről a nevesített cella hivatkozásról lövésem sincs

No nem mintha a többit nagyon érteném
Előre is köszönöm a segítséget!!!

-
hallgat
csendes tag
válasz
m.zmrzlina
#16818
üzenetére
Mármint mit?

A cellát kézzel vettem fel a munkalap egy távol eső sarkában, értéke állandó 1.
Ennek másolását szorzással viszont már a makró csinálja. -
hallgat
csendes tag
válasz
m.zmrzlina
#16812
üzenetére
Szia!
Köszönöm!Közben egy favágó módszerrel megoldottam.
Felvettem egy cellát, aminek az értéke 1, majd ezt másolom az átalakítandó cellákra irányítottbeillesztéssel, a szorzást választva.
Nem túl szép, de működik
-
hallgat
csendes tag
Sziasztok!
Elakadtam egy valószínűleg triviális problémánál.
2010 Excelben makró.
A képleteket kicserélem csak adatokra úgy, hogy a kijelölt részt rámásolom saját magára, érték beillesztéssel.
A bajom az, hogy a számokat szövegként fogja betenni, amit ugyan kézzel könnyű átalakíttatni vele, de ez most nem jó.
A makró lefutása után a cellában már számként tárolt számnak kellene lennie, mert addig a mellette lévő FKERES sem működik stb...Sajnos nem találtam rá utalást, hogy ezt miként lehet makróban megadni.
Próbálkoztam ezzel: Paste:=xlPasteValues*1 ami ugyan lefutott, de eredményt nem hozott, továbbra is szövegként tárolta a számot.Előre is köszi, ha van valakinek megoldása!
-
hallgat
csendes tag
válasz
zz76zz
#14130
üzenetére
Szia!
Ezt biztos nekem szántad?Ha engem kérdezel, állítsd át a cél cellák formátumát dátumra, akkor dátumként fogja megjeleníteni is.
Ha VBA-val másolsz, akkor már a kódban add meg a cella formátumát, mondjuk így:
Range("kezdő cella:Uccsó cella").NumberFormat = "m/d/yyyy"Ha csak sima másolással, akkor előre a cella formátumot, beilleszteni pedig csak az értéket szúrd be irányított beillesztéssel.
Ha szöveg kell, akkor szövegre állítsd, de akkor a képlettől ne várj eredményt.
-
hallgat
csendes tag
válasz
#90999040
#14113
üzenetére
Oops!
No ez az a kód, amit már csak részletekben értek, vagy legalábbis azt hiszem

Ezt félig makróval, félig függvénnyel kipróbáltam úgy, hogy valóban betettem egy plusz oszlopot, állandóra.
Sima HA függvénnyel adtam értéket a celláknak, attól függően, hogy az előtte lévő sorban találhatóval egyezik, avagy nem "A" oszlop értéke. 1 vagy semmi.
Aztán a sorba rendezést már a makró csinálta, majd meghatároztam az utolsó sort az új cella alapján, amiben még adat van és onnan lefelé törlés mindent.Ez már jónak mutatkozott (igaz a függvény kicsit megnövelte a fájl méretet és a cellák újraszámolása is tovább tartott), de messze nem ennyire kifinomult, mint a makród.
Hálám a sírig..., hogy ennyit törődtök a nyavalyámmal!

-
hallgat
csendes tag
válasz
cousin333
#14110
üzenetére
Igen, ez az egyik igen hasznos újítás 2003 óta Excelben.
Gondolom sokaknak és sokszor okozott gondot, ezért tették megoldottá menüből.
Ezt 2003 még nem tudja.A tábla különböző módon történő jelölgetése megy, köszi
ha lehet kerülöm az egeret, sok időt lehet spórolni a billentyűparancsok ismeretével, ezt én is csak javasolni tudom mindenknek, még ha VBA-hoz láma is az ember... -
hallgat
csendes tag
válasz
cousin333
#14109
üzenetére
Igen. Ezt azóta felfedeztem, de sajnos még így is csak cca 2,5x-es a tempó.
Azt nem értem, hogy miért, de kipróbáltam és ennyi.
A soronkénti vizsgálattal mint írtam 4000 sor körül törölt percenként. Ha minden számom 19x ismétlődik, akkor ugye ez 40.000 sornál kb. 2100 tömb, amit az előzőhöz viszonyítva meg kellene csinálnia fél perc alatt. De 1 percnél leállítottam és kb. 10000 sorral volt kevesebbem, mint előtte.
Arra azonban mindenképp jó, hogy látom hogyan kell ismétlődő blokkot keresni, tehát tanulságos.
Megint köszi! -
hallgat
csendes tag
válasz
#90999040
#14096
üzenetére
Szia!
Nagyon köszönöm!

Ez nagyban hasonlít az enyémre, (az egyetlen működőre, a sok próbálkozásom közül
) de a táblán belül végzett egyenkénti vizsgálat és egyenkénti törlés nem a legjobb megoldás, mert rengeteg (tényleg rendszeresen 40.000 sor feletti) adatot kell végigmásznia.Ennek ellenére tanultam ebből is, így nagyon köszönöm!!!

-
hallgat
csendes tag
válasz
cousin333
#14098
üzenetére
Előbb találtam meg a kódot tartalmazó segítséget, mint ezt a bejegyzést, pedig nincsenek messze egymástól

Igen, az eredeti megoldás úgy nézett ki, hogy keresd meg az utolsó sort. Utolsó sor felett vizsgáld meg, hogy mi van, ha egyezik utolsó sorban lévő értékkel töröld, ha nem, lépj egyel feljebb.
Ez volt a drámaian lassú.
Cca. 4000 sort törölt percenként. Sajna ebben a táblában rendszeres, hogy 40.000 feletti a sorok száma. (minden adat 19x szerepel benne)Viszont a kód, ami egyel lejjebb született, tökéletes

Köszönet!
-
hallgat
csendes tag
válasz
cousin333
#14099
üzenetére
Szia!
Nagyon köszönöm!

Az ötlet tetszik, és tényleg lényegesen gyorsabb, mint ha egyenként vizsgálnám és a munkalapon törölném is a sorokat.
Közben egy másik megoldásra kényszerültem (időhiány miatt), ami kissé "barbár", de működik és szintén villám gyors.
Persze ehhez az kell, hogy a célnak az így kapott eredmény is megfeleljen.
Viszont a makród szimpatikusabb, ezért le is cseréltem az én megoldásomat gyorsan.

Leírom, hátha valaki hasznát veszi:
A tömbből kimutatást készítettem egy másik munkalapra, ahol minden oszlopot behúztam a sorok értékéhez, egy tetszőleges oszlopot pedig betettem az adattartomány értékhez, "darab" művelettel. Közben minden oszlop behelyezése után a kimutatáson belüli összegző sorokat rejtetté tettem, beleértve a végösszeget is. (lehet eset, ahol nem árt, ha előtte a forrás táblát sorba rendezi az ember a vizsgálni kívánt oszlop szerint, itt nem kellett)
A kimutatás ugyan eredményez utolsó sorként "ÜRES" jelölésű értéket is a végére, de ezt a fejlécben a szűrőben kivettem, így minden adatom csak egyszer jelenik meg, mellette a többi oszlop adatával. Ezt a tömböt tovább tudtam vinni makróval a kívánt helyre. Annyival lett "hosszabb" az eredeti makró, hogy frissítenem kell a kimutatást is egy sorban, valamint innen kell elvinnem az adatokat, nem az eredeti táblából. És persze született még egy munkalapom, kvázi feleslegesen.A kódot még egyszer köszönöm, megint tanultam valamit!!!

-
hallgat
csendes tag
válasz
saab00
#14079
üzenetére
Szia!
1., SzumHa függvényt nézd meg. Az egy rendszámhoz tartozó értékeket összeadja neked.2., FKeres nem fog menni, az első találatot fogja adni
3., Ha a találat alatti cella értéke kell, azt meg tudod oldani a HOL.VAN fügvénnyel (ezzel megkeresteted az értéket, majd megadod, hogy a következő sor azonos oszlopából vegye az értéket. Viszont itt is baj lesz az ismétlődésekkel...
-
hallgat
csendes tag
Sziasztok!
Küzdök egy ideje az azonos soraim törlésével, de nem akar összejönni, vagy iszonyú hosszú ciklusidővel dolgozik (és még az is hibásan
)A táblázatom "A" oszlopában a 2. sortól a végéig számok vannak.
A számok között van ismétlődés, de azok mindig egymás után következnek, szám szerint 19 alkalommal/szám.Azt szeretném elérni, hogy az utolsó sort meghatározva, ("A" & usor)- tól felfelé haladva végezze el az ismétlődő sorok törlését.
Tehát pl. vizsgálja meg, hogy "A17777" cella értéke azonos e "A17776" értékével és ha igen, akkor törölje ki a 17776. sort, majd ismét vizsgálja meg, hogy "A17777" cella értéke azonos e "A17776" értékével, ha azonos akkor megint sortörlés, ha nem, akkor ugorjon 1 cellát felfelé és vizsgálja meg, hogy "A17776" értéke azonos e "A17775" értékével, ha igen sortörlés, ha nem, akkor ugrás egyel feljebb.
Nem másolok be kódrészletet, mert már nagyon szétfaragtam amiket innen onnan szereztem a célra és nem is működnek, így nem nagyon van értelme

Az egyetlen, ami futott, az egy cella értéket végigvizsgált a teljes tartományon (30-40 ezer sor) majd törölte az azonosakat, aztán kezdte a következő cellával elölről. Egyrészt eszméletlen lassú, másrészt a törlés sem volt tökéletes, mert a sorok törlése miatt felülről haladva lefelé, csak egy részét távolította el az ismétlődéseknek, ha azok egymást követő sorokban voltak (már pedig mind így ismétlődik, 19x egymás alatt)
Előre is köszönöm a segítséget!
-
hallgat
csendes tag
válasz
hallgat
#13954
üzenetére
Közben meg van a megoldás, vagy legalább is egy működő képlet...
Hátha segít valakinek, aki hasonló dolgot keres:
=INDEX(Munka2!A:T;HOL.VAN(A2;Munka2!$A:$A;0);HOL.VAN(B2;Munka2!$A$1:$T$1;0))
A fügvény így a Munk2 lapon A:T tartományban lévő sor és oszlop metszéspont értékét adja eredményül, a Munka1 A2 és B2 celláinak értékeire keresve.
Munka1 A2 cellájában lévő értéket keresi Munka2 A oszlopában és a sor számát adja vissza,
majd Munka1 B2 értékét keresi Munka2 A1:T1 tartományában és az oszlop értéket adja
vissza az INDEX függvénynek.Lehet csak nekem újdonság, de ez nagyjából az FKERS és a VKERES funkcióinak az összefűzése.

-
hallgat
csendes tag
válasz
Delila_1
#7514
üzenetére
Delila_1(#7514)
-------------------------------------------------------------------------------
Ha számok vannak a C4 és F4 cellákban, akkor
=INDEX(Munka2!$A$1:$P$97;Munka1!C4;Munka1!F4),ha viszont az F4-ben betűt adsz meg oszlopazonosítóként, akkor
=INDEX(Munka2!$A$1:$P$97;Munka1!C4;Munka1!F4)Mindkét példában a Munka1 lapon van a C4 és F4, az adatokat pedig a Munka2 lapról veszi a képlet. Figyelj, következetesen kevered a munkafüzetet és a munkalapot!
-------------------------------------------------------------------------------Sziasztok!
Ez a képlet és leírás sem mai darab, de küzdök vele és nem jön össze

Hasonló a feladat, mint az akkori kérdezőnek, Retekegérnek.
Röviden:
Munka1 lapon "A" oszlop cikkszámokat tartalmaz szám formátumban.
"B" oszlop tárhely azonosítókat, számként
"C" oszlopba kéne bekeresnem az "A" cikk készletét, ami "B" tárhelyen fellelhető.Munka2 lapon vannak a készletek, de mátrixban
"A" oszlop a cikkszámokat tartalmazza
Az 1. sor pedig a tárhely azonosítókat,
a metszéspontokban vannak a készletek.Az idézett Delila megoldás engem #HIV! hibára dob és nem tudom miért, pedig olyan szép

Segítségeteket előre is köszönöm!

-
hallgat
csendes tag
válasz
Fire/SOUL/CD
#13930
üzenetére

Ezer hála, még a nullás sorok is megoldva.
Perfect!!!Köszönöm!!!
-
hallgat
csendes tag
válasz
Fire/SOUL/CD
#13928
üzenetére
Kicsit elbíbelődtem, mire regisztráltam egy feltöltő helyre

Ez sajna 2010 Excelben vagyon, a Munka1-et csak teledobáltam valamivel, de a kód szempontjából remélem ez nem okoz gondot.
Előre is köszi!!!

-
hallgat
csendes tag
válasz
Fire/SOUL/CD
#13926
üzenetére

Nem tudom, hogy mit csinálok rosszul, de így most Munka2-n semmit nem törölt, Munka1-en azonban mindent.
Kicsit több a kódból, hátha valahol előrébb csinálok marhaságot...
Sheets("Munka1").Range("B1:T1").Copy
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
usor = Sheets("Munka2").Range("A1").End(xlDown).Row
Sheets("Munka2").Activate
Sheets("Munka2").Range("L2:L20").Copy
Sheets("Munka2").Range("L21:" & "L" & usor).Select
ActiveSheet.Paste
Sheets("Munka2").Select
Sheets("Munka2").Range("L" & usor).Select
Dim i As Integer
For i = usor To 2 Step -1
If IsEmpty(Cells(i, 14)) Then
Rows(i).Delete
End If
Next iMár az usor-ral is megszenvedtem, mire elfogadta L oszlopban, mert hibára futott mindig, míg a munkalap azonosítót elé nem tettem.
Láma is vagyok a témához e igaz, de így már végképp nem értem.

-
hallgat
csendes tag
válasz
Fire/SOUL/CD
#13924
üzenetére
Szia!
Igen, eddig ezzel volt vége a makrónak, hogy az AutoSzűrővel leszűrte a 0 és üres sorokra, aztán leállt, majd kézzel töröltem, ahogyan írtad.
Viszont a maradék adatokat vinném tovább új munkafüzetbe és ha nem muszáj, nem készítenék erre itt még egy makró gombot, hanem folytatnám az eredeti programot.
Most ezzel szenvedek, de vagy mindkét munkafüzet lapon megcsinálja a törlést, vagy leállok hibával, vagy...
Szóval még nem működik
Sheets("Munka2").Range("L" & usor).Select
Dim i As Integer
For i = usor To 2 Step -1
If IsEmpty(Cells(i, 14)) Then
Rows(i).Delete
End If
Next iElőtte már csinál pár dolgot, másolgat, transzportál, mifene, most már "csak" L oszlopban található üres cellák alapján kéne a sorokat törölnie, de csak Munka2 munkalapon, mert most kitörli munka1-en is

-
hallgat
csendes tag
Sziasztok!
AutoSzűrővel leszűrt sorokat hogyan tudom makróval kijelölni és törölni?
Bár lehet nem is így jó a kérdés.
Van egy táblázat, aminek egyik oszlopában adatok. Az oszlop egyes soraiban azonban nincs adat, vagy az érték nulla.
Hogyan tudom azt megcsinálni, hogy mondjuk vizsgálja meg B oszlop celláit fentről lefelé.
Ahol üreset vagy nullát talál, azt az egész sort törölje ki sortörléssel, aztán keresse a következő üres, vagy nullát tartalmazó cellát B oszlopban és ha talál, akkor azt a sort is törölje sortörléssel, mindezt addig, míg el nem ér az előre definiált utolsó sorig?Ez így ciklus szagú leírás, de minden megoldás érdekel

Előre is köszönöm!!

-
hallgat
csendes tag
válasz
Delila_1
#13834
üzenetére
Szia!
A segítséget még egyszer köszönöm!
Végül ez lett a nyerő kód, bár fogalmam sincs, hogy miért nem működött addig, míg Nem a munkalap azonosítókkal együtt jelölgettem ki a területeket

A lényeg, hogy működik:
Sheets("Munka1").Range("B1:T1").Copy
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
usor = Sheets("Munka2").Range("A1").End(xlDown).Row
Sheets("Munka2").Activate
Sheets("Munka2").Range("L2:L20").Copy
Sheets("Munka2").Range("L21:" & "L" & usor).Select
ActiveSheet.Paste
Application.CutCopyMode = False
Selection.AutoFilter Field:=14, Criteria1:="=", Operator:=xlOr, Criteria2:="<1"Hátha valakinek még jól jön...

-
hallgat
csendes tag
válasz
Delila_1
#13834
üzenetére
Köszönöm!
Látszik, hogy láma vagyok, még a kérdést sem tudom rendesen megfogalmazni.

A Munka2 L oszlopának második sorától az utolsó adatot tartalmazó sorig (a táblában, nem L oszlopban vannak adatok más oszlopokban) szeretném bemásolni transzponálva Munka1 B1:T1 értékeit.
Munka2 L oszlopa üres, az A oszlop az, ami üres sor nélkül folyamatosan adatokat tartalmaz az utolsó sorig. Ezért gondoltam, hogy az usort onnan definiálom.
Ha A oszlop az 500. sorig tartalmaz adatot, akkor L oszlopba is az 500. sorig kellenének transzponáltan másolva az adatok Munka1 Bi:T1-ből.Tehát usorként nem L oszlop utolsó sora az érték, hanem A oszlop utolsó sora és L-ben is eddig kellenek az adatok.
Bocsánat, a pontatlanságomért (és csak remélem, hogy most jól írtam le.)
Köszi!!

-
hallgat
csendes tag
válasz
hallgat
#13831
üzenetére
Ami számomra még furcsa, hogy ha makró rögzítővel kézzel megcsinálom a műveletet és ezt illesztem be a kódba, akkor ugyan az marad a szintaktika, csak a
Range("L21:L" & usor).Select
helyett a jelenlegi adatok mennyisége miatt ez lesz:
Range(L21:L286).Selectami szintén nem fut le, ugyan ennél a sornál leáll.
Pedig ezt a sajár makrórögzítője csinálta
-
hallgat
csendes tag
válasz
Delila_1
#13826
üzenetére
Sikerült kipróbálnom, de sajnos nem működik.

Ez a programrész most:usor = Range("A1").End(xlDown).Row
Sheets("Munka1").Activate
Range("B1:T1").Select
Selection.Copy
Worksheets("Munka2").Activate
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Application.CutCopyMode = False
Selection.Copy
Range("L21:L" & usor).Select
ActiveSheet.PasteMunka1-ről áthozza az adatokat Munka2 L2:L20 részébe, be is másolja transzponálással, ki is jelöli, látszik, hogy ki is teszi vágólapra, de itt leakad. A Debug pedig annál a sornál áll, ami kijelölné L21:Lusor területet.
Lehet nem is szintaktikai a hibám, hanem a logikai felépítéssel van a gond.

Elvesztettem a fonalat...

-
hallgat
csendes tag
-
hallgat
csendes tag
válasz
Delila_1
#3014
üzenetére
"Másik módja az utolsó sor, ill. utolsó oszlop megkeresésének, arra az esetre, ha a lapon több, egymástól üres sorokkal, oszlopokkal elválasztott adataink vannak:
Kiválasztjuk egy olyan oszloponak az első celláját, amelyikben biztosan folyamatosan vannak az adatok, pl. A1.
Range("A1").Select
Selection.End(xlDown).Select ' ez azonos azzal, mint amikor Ctrl+le-nyilat nyomunk
usor = Selection.Row"
-------------------------------------------------------------------
Sziasztok!Nem egy mai bejegyzése Delilának de éppen ezen vagyok elakadva.

Ha ilyen módon megkerestem az utolsó használt sort, akkor mi a szintaktikája, hogy az "usor" értékét felhasználjam egy másik oszlopban?
Mondjuk munkalap1 B1:T1 celláit (19 cella) transzponálással másolja be munkalap2 B oszlopába a 2. sorától az utolsó soráig kijelölt területre, ismételgetve (ha 190 sor, akkor 10x. Elvileg mindig kijön egészre a sorok száma / 19)Előre is köszönet!!

-
hallgat
csendes tag
válasz
Daddyhands
#13806
üzenetére
Szia!
Az AutoSzűrő funkciót próbáltad? -
hallgat
csendes tag
Sziasztok!
Láma vagyok a témában, ezért segítségeteket kérném.

/Excel 2003 VBA./Igyekszem megtanulni, de elakadtam.
Az eddigi is innen onnan puskázva... 
Bemásolom az eddigi kódot, a végére kikommenteltem, hogy mit kéne még tudnia.
Előre is köszönöm!!!
Private Sub CommandButton1_Click()
Dim forras_mlap As Worksheet
Dim cel_mlap As Worksheet
Dim forras_sor As Integer
Dim cel_sor As Integer
Dim eltolas As Integer
Set forras_mlap = Worksheets("Munka1")
Set cel_mlap = Worksheets("Munka2")
cel_sor = 2
Sheets("Munka2").Range("A2:BZ65536").ClearContents
For forras_sor = 2 To forras_mlap.UsedRange.Rows.Count
For eltolas = 0 To 18
cel_mlap.Range("M" & cel_sor).Value = forras_mlap.Range("A" & forras_sor).Value
cel_mlap.Range("N" & cel_sor).Value = forras_mlap.Range("B" & forras_sor).Offset(0, 1 * eltolas).Value
cel_mlap.Range("D" & cel_sor).Value = forras_mlap.Range("U" & forras_sor).Value
cel_mlap.Range("A" & cel_sor & ":C" & cel_sor).Value = forras_mlap.Range("V" & forras_sor & ":X" & forras_sor).Value
cel_mlap.Range("G" & cel_sor & ":H" & cel_sor).Value = forras_mlap.Range("Y" & forras_sor & ":Z" & forras_sor).Value
cel_mlap.Range("J" & cel_sor).Value = forras_mlap.Range("AA" & forras_sor).Value
cel_sor = cel_sor + 1
Next
Next
Sheets("Munka1").Range("B1:T1").Copy
Sheets("Munka2").Range("L2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=True
Sheets("Munka2").Activate
Sheets("Munka2").Range("L2:L20").Copy
' ide kellene, hogy a Munka2-n jelölje ki L2 cellától lefelé az összes cellát addig a sorig,
' amig "A" oszlopban adatot talál. Ezt követően illesze be L2:L20-ból már másolt adatokat
' (vagy ha lehet, már előrébb kezdve a Munka1 B1:T1 cella adatait)
' végig a táblázat utolsó használt soráig, "A" oszlopot alapul véve.
' +++ jo lenne, ha ezt kovetoen "N" oszlop (fejléc van az 1. sorban) adatai alapján törölné azokat
' a sorokat, amik értéke "0", vagy üres
End Sub
Új hozzászólás Aktív témák
- Apple asztali gépek
- Okos Otthon / Smart Home
- Azonnali alaplapos kérdések órája
- Máris limitálja egy európai disztribútor a GeForce-ok szállítását
- Kormányok / autós szimulátorok topikja
- Mobilinternet
- Autós topik
- Samsung kuponkunyeráló
- AMD K6-III, és minden ami RETRO - Oldschool tuning
- Audi, Cupra, Seat, Skoda, Volkswagen topik
- További aktív témák...
- magyar billentyűzet - 136 - Lenovo Legion Pro 7 (16IRX9H) - i9-14900HX, RTX 4080 - 4 ÉV GARANCIA!
- 183 - Lenovo Legion Pro 7 (16IAX10H) - Intel Core U9 275HX, RTX 5090 (ELKELT)
- GYÖNYÖRŰ iPhone 14 128GB Midnight -1 ÉV GARANCIA - Kártyafüggetlen, MS3967
- ÁRGARANCIA! Épített KomPhone Ultra 7 265KF 32/64GB RAM RTX 5080 16GB GAMER PC termékbeszámítással
- ÚJ könyv: Rafal Kosik - Cyberpunk 2077 Nem véletlen
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Laptopszaki Kft.
Város: Budapest








Nincs mit!







) de a táblán belül végzett egyenkénti vizsgálat és egyenkénti törlés nem a legjobb megoldás, mert rengeteg (tényleg rendszeresen 40.000 sor feletti) adatot kell végigmásznia.
Fferi50
