Frage zu "Mehrere Werte suchen"

Bild

Betrifft: Frage zu "Mehrere Werte suchen"
von: Timonski
Geschrieben am: 22.09.2015 17:15:35

Hallo,
ich hab folgende Formel schon gefunden...
da steht drin SUCHE 2 ERSETZE durch 5, er ersetzt aber jeden Wert, in der eine 2 drin steht, also auch 12 wird 5 oder 22 wird 5...
ich will aber nur bei einer 2 den Wert geändert haben...
was muss ich ändern, damit es nur bei dem "Wunschwert" geändert wird ??
With Worksheets(1).Range("a1:a500")
Set c = .Find(2, lookin:=xlValues)
If Not c Is Nothing Then
firstAddress = c.Address
Do
c.Value = 5
Set c = .FindNext(c)
Loop While Not c Is Nothing And c.Address <> firstAddress
End If
End With
vielen Dank

Bild

Betrifft: AW: Frage zu "Mehrere Werte suchen"
von: Michael
Geschrieben am: 22.09.2015 17:39:17
Hi Timonski,
das zeichnet der Makrorekorder sinngemäß auf:

With Worksheets(1).Range("a1:a500")
    .Replace What:="2", Replacement:="5", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
End With
Schöne Grüße,
Michael

Bild

Betrifft: AW: Frage zu "Mehrere Werte suchen"
von: Timonski
Geschrieben am: 23.09.2015 07:39:07
Guten Morgen,
vielen Dank für die Antwort. ich hatte nur dieses Script aus dem Internet und hab es auf meine Bedürfnisse angepasst...
Er sollen den WERT aus Celle(1, 1) in einer Tabelle 1 suchen (Original Script die 2 eben"
Dann soll er mir die Zeile, wo er den WERT findet ausgeben und die Werte danach in eine Weitere reinschreiben...

    With Worksheets("Tabelle1").Range("A22:A5000")
        r = 10
        Set c = .Find(Cells(1, 1), LookIn:=xlValues)
        If Not c Is Nothing Then
            firstAddress = c.Address
            Do
                Dim s As String
                s = c.Address
                With Application
                    VARIABLE1 = .VLookup(Worksheets("Tabelle1").Cells(Worksheets("Tabelle1"). _
Range(s).Row, 2), Worksheets("Tabelle3").Columns("A:Z"), 3, 0)
                    VARIABLE2 = .VLookup(Worksheets("Tabelle1").Cells(Worksheets("Tabelle1"). _
Range(s).Row, 2), Worksheets("Tabelle3").Columns("A:Z"), 21, 0)
                    VARIABLE3 = .VLookup(Worksheets("Tabelle1").Cells(Worksheets("Tabelle1"). _
Range(s).Row, 2), Worksheets("Tabelle3").Columns("A:Z"), 24, 0)
                End With
                
                Cells(r, 1) = VARIABLE1
                Cells(r, 2) = VARIABLE2
                Cells(r, 3) = VARIABLE3
                
                Set c = .FindNext(c)
                r = r + 1
                
            Loop While Not c Is Nothing And c.Address <> firstAddress
        End If
    End With

schlussendlich will ich z.B. in er Tabelle1 Apfel eingeben und er liest mir aus einer Tabelle2 alle Äpfel mit den Spalten Sorte, Geschmack, Herkunft in die Tabelle1 untereinander.
danke
Timonski

Bild

Betrifft: AW: Frage zu "Mehrere Werte suchen"
von: matthias
Geschrieben am: 23.09.2015 11:48:54
Hallo Timonski,
das Problem liegt daran, dass deine Sucheinstellung unvollständig ist. Bei der händigen Suche würdest du in diesem Falle doch auch das Häkchen für "Gesamten Zelleninhalt vergleichen" aktivieren, oder?
In VBA nennt sich der Parameter dazu "LookAt". Dieser ist standardmäßig auf "xlPart" (Teil) gesetzt, du willst jedoch "xlWhole" (komplett) an dieser Stelle benutzen:
Set c = .Find(2, LookIn:=xlValues, LookAt:=xlWhole)
bzw.
Set c = .Find(Cells(1, 1), LookIn:=xlValues, LookAt:=xlWhole)
lg Matthias

Bild

Betrifft: AW: Frage zu "Mehrere Werte suchen"
von: Timonski
Geschrieben am: 23.09.2015 15:52:15
Hallo Matthias,
vielen Dank für die Antwort... ich hatte es mal mit dem Makroaufzeichner versucht... der hat mir auch "LookAt:=xlWhole" angezeigt... hatte aber nur das angeben und nicht mit LookIn:=xlValues.
Das war wohl der Fehler...
Vielen Dank
Timonski

 Bild

Beiträge aus den Excel-Beispielen zum Thema "VBA Excel schützen"