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
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.