Telefonszámunk: 1-472-0679

[Resolved] Keresés táblázatban

Kezdőlap Fórumok Excel programozás [Resolved] Keresés táblázatban

Topic Resolution: Resolved

Ennek a témakörnek tartalma 5 hozzászólás, 3 résztvevő. Utolsó frissítés:  Gabor733 22 órája, 37 perc telt el.

6 bejegyzés megtekintése - 1-6 / 6
  • Szerző
    Bejegyzés
  • #7636

    Gabor733
    Felhasználó

    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

    #7637

    delila
    Felhasználó

    Szia 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,
    Delila

    #7638

    Gabor733
    Felhasználó

    Köszönöm, működik!

    #7640

    delila
    Felhasználó

    Hurrá!

    #7641

    horvimi
    Adminisztrátor

    Sziasztok!

    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éket

    Ha 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ól

    Ha 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

    #7642

    Gabor733
    Felhasználó

    Köszönöm!

6 bejegyzés megtekintése - 1-6 / 6

Be kell jelentkezni a hozzászóláshoz.