Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1048to1052
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Suche mit Like ???

VBA Suche mit Like ?
16.02.2009 17:08:00
ico
Hallo,
ich möchte gerne folgendes Problem lösen:
Spalte A enthält eine Zuordnung mir + als Wildcard
Spalte B entält einen fix zugeordneten Wert zu jedem Wert aus Spalt A
Spalte C enthält eine 8 stellige Nummer
Nun möchte ich den den ersten Wert aus Spalte C nehmen, diesen in Spalte A suchen und bei einem treffer den Wert aus Spalte B in Spalte D zu dem Suchwert eintragen lassen.
Jedes Plus kann für eine Zahl von 0-9 stehen
Bsp.
A B C D
+++3++++ 77 10039999 77
Ich habe versucht das ganze via VBA und Like zu lösen, aber die Zuordnungen sind nicht 100% richtig.
Ist der Ansatz mit Like richtig ?

Sub test()
For m = 2 To 1400
For n = 2 To 1100
If Cells(m, 3) Like Cells(n, 1) Then
Cells(m, 4 = Cells(n, 2).Value
Exit For
Else
End If
Next
Next
End Sub


Danke für jeden Tip im Voraus !
Gruß
ico

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Suche mit Like ?
16.02.2009 17:19:00
Josef
Hallo ico,
wenn mit LIKE dann so.
Sub test()
    Dim m As Long, n As Long
    
    For m = 2 To 1400
        For n = 2 To 1100
            If Cells(m, 3) Like Replace(Cells(n, 1), "+", "#") Then
                Cells(m, 4) = Cells(n, 2).Value
                Exit For
            End If
        Next
    Next
    
End Sub

Gruß Sepp

Anzeige
AW: VBA Suche mit Like - schneller
16.02.2009 17:37:00
Josef
Hallo ico,
ich würde es allerdings so machen, ist bedeutend schneller.
Sub schneller()
    Dim lngR As Long, lngLast As Long, lngI As Long
    Dim varOne As Variant, varTwo As Variant, varRes() As Variant
    
    lngLast = Application.Max(2, Cells(Rows.Count, 1).End(xlUp).Row)
    varOne = Range("A2:B" & lngLast)
    lngLast = Application.Max(2, Cells(Rows.Count, 3).End(xlUp).Row)
    varTwo = Range("C2:C" & lngLast)
    
    Redim varRes(1 To lngLast)
    
    For lngR = 1 To UBound(varTwo, 1)
        For lngI = 1 To UBound(varOne, 1)
            If varTwo(lngR, 1) Like Replace(varOne(lngI, 1), "+", "#") Then
                varRes(lngR) = varOne(lngI, 2)
                Exit For
            End If
        Next
    Next
    
    Range("D2:D" & lngLast) = Application.Transpose(varRes)
    
End Sub

Gruß Sepp

Anzeige
AW: VBA Suche mit Like ?
16.02.2009 18:01:00
ico
Hi Sepp,
danke für deine schnelle Antwort. Ich glaube ich habe es verstanden mit "#".
Bin gerade dabei es mal auszuprobieren.
Danach werde ich mal deinen zweiten Code ausprobieren, iss natürlich ein wenig komplexer aufgebaut....
ich werde mich mal ranmachen...
Vielen Dank schon mal für deine super schnelle Hilfe !!!
Ich poste wieder....bei neuen Problemen,
danke nochmal !
gruß
ico

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige