Kezdőlap › Fórumok › Excel programozás › [Resolved] Keresés táblázatban
- This topic has 5 hozzászólás, 3 résztvevő, and was last updated 5 years, 4 months telt el by
Gabor733.
-
SzerzőBejegyzés
-
2020-09-16-13:28 #7636
Sziasztok!
Segítséget szeretnék kérni táblázatban történő keresésben. A probléma az, hogy a keresendő adat nem tudható, hogy melyik sorban, vagy oszlopban található. A csatolt fájlban a munka 1 A oszlopában található számokat kellene keresni a munka 2-ben, és eredménynek a 2-vel jobbra található cellában lévő szám kellene. A megoldást keresve a For each ciklust találtam, amivel el elvileg megoldható lenne, viszont olyan anyagot nem találtam hozzá, amivel el tudnék rajta igazodni.
Előre is köszönöm: Gábor
2020-09-16-14:21 #7637Szia Gábor!
Feltételezve, hogy mindkét tábla az A1 cellában kezdődik, és legalább az első lapon van címsor, a lenti makrót ajánlom.
Sub kereses() Dim ter As Range, CV As Object, sor As Integer Set ter = Sheets("Munka2").Range("A1").CurrentRegion With Sheets("Munka1") sor = 2 Do While .Cells(sor, 1) > "" For Each CV In ter If CV.Value = .Cells(sor, 1) Then .Cells(sor, 2) = Sheets("Munka2").Range(CV.Address).Offset(, 2) Next sor = sor + 1 Loop End With End SubÜdv,
Delila2020-09-16-16:30 #7638Köszönöm, működik!
2020-09-16-16:58 #7640Hurrá!
2020-09-16-17:13 #7641Sziasztok!
Pár meglátásom lenne:
1. nem csatoltál fájlt 🙂
2. Lényeges, hogy a keresendő érték biztosan csak egyszer szerepel a keresési táblában.
Ha ez nem biztos, akkor Delila kódja minden előfordulásnál megcsinálja a két cellával errébb lévő cella áthozását, és végül a
legutolsó előfordulás marad benne
3. Nagy keresési tábla esetén lassú lesz, mert aa keresési terület minden celláját átnézi a belső ciklusban, és nem áll meg az első találatkor
Ez összefügg az előző ponttal.
4. Nincs definiálva, hogy mi történjen, ha nem taláklja a keresett értéketHa biztosan csak egyszer van, és működik, akkor nem számítanak a meglátásaim.
Ha lehet több előfordulás, de csak az első kell, akkor a fenti kód hibás
Javasolnám legalább annyira módosítani, hogy az első találatnál ugorjon ki a for each ciklusbólHa az első előfordulás kell, akkor a magam részéről a for each ciklus helyett a .find metódust használnám, és nem nézném végig ciklussal az egész tartományt.
Imre
2020-09-18-12:10 #7642Köszönöm!
-
SzerzőBejegyzés
- Be kell jelentkezni a hozzászóláshoz.
