Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.04.2024 20:05:21
28.04.2024 18:33:31
28.04.2024 18:25:12
28.04.2024 14:18:05
Anzeige
Archiv - Navigation
1932to1936
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

Left Funktion mit For each Schleife

Left Funktion mit For each Schleife
08.06.2023 10:16:27
mb92

Hallo,

ich möchte jede Zahl aus einer Spalte in Tabelle A mit einem Bereich aus Tabelle B prüfen, dazu habe ich folgende Abfrage geschrieben:


For Each Zelle_K In wsK.Range(wsK.Cells(2, 2), wsK.Cells(letztezeilekamy, 2))
    For Each Zelle_B In wsB.Range(wsB.Cells(2, 3), wsB.Cells(letztezeilebackbuffer, 12))
        If Zelle_K.Value = Zelle_B.Value Then


In manchen Zellen in der Spalte B stehen zwei Zahlen in einer Zelle, folgendermaßen: 11555666 / 11333555

Ich möchte jetzt mit der Left Funktion und später mit der Right Funktion jeweils die ersten 5 Zahlen abgleichen, allerdings klappt das nicht.


For Each Zelle_K In wsK.Range(wsK.Cells(2, 2), wsK.Cells(letztezeilekamy, 2))
    For Each Zelle_B In wsB.Range(wsB.Cells(2, 3), wsB.Cells(letztezeilebackbuffer, 12))
        If Zelle_K.Value = Left(Zelle_B.Value, 5) Then


So habe ich das ganze versucht, läuft durch ohne Fehler, aber er erkennt die Zahl nicht korrekt, weiß einer woran das liegt und kann mir helfen?

Danke und beste Grüße

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Left Funktion mit For each Schleife
08.06.2023 10:28:56
PeTeR
Hallo,
die Funktion left liefert immer einen Text. Also must du den TEXT in eine ZAHL umwandeln. Z. B.:
Left(Zelle_B.Value, 5) * 1
cint(Left(Zelle_B.Value, 5))
Viel Erfolg
PeTeR


AW: Left Funktion mit For each Schleife
08.06.2023 13:10:23
mb92
Hi, danke für den Tipp.

Wenn ich beide Varianten versuche, kommt die Fehlermeldung "Typen unverträglich"


Left(If Zelle_K.Value, 5) = Left(Zelle_B.Value, 5) Then
Mache ich das so, dann klappt das. Jetzt habe ich allerdings Probleme mit meiner Schleife.

Die Zahlen stehen über mehrere Zeile untereinander. Ich möchte mit einer Do-Schleife so lange eine Zelle runter, bis diese Zahl nicht mehr drin steht.

So sieht mein Code aus:


If Left(Zelle_K.Value, 5) = Left(Zelle_B.Value, 5) Then
            
            wsB.Activate
            Zelle_B.Select
            x_Zeile = ActiveCell.Row                                         'Ermittlung aktive Zelle
            A = ActiveCell.Row
            x_Spalte = ActiveCell.Column
            
            
            
            WP_Start = wsB.Cells(x_Zeile, 1).Value
            WP_Linie = wsB.Cells(1, x_Spalte).Value
            
            y = Left(wsB.Cells(x_Zeile, x_Spalte).Value, 5)
            
            
            Do
                x_Zeile = x_Zeile + 1
            Loop While Left(wsB.Cells(x_Zeile, x_Spalte).Value, 5) = y
Jetzt habe ich das Problem, dass meine Schleife das nicht erkennt und so tut, als wäre die nächste Zelle ungleich der gesuchten Zahl.
Übersehe ich irgendwas?


Anzeige
AW: Left Funktion mit For each Schleife
08.06.2023 13:24:03
PeTeR
Hi,
Du hast einer Variablen einen Typ zugewiesen, z. B. Dim xy as string
Lösche einfach den Typ bei der Variblen raus => Dim xy
Viel Erfolg
PeTeR


AW: Left Funktion mit For each Schleife
08.06.2023 13:54:29
mb92
Hallo,

die Schleife hat alles richtig gemacht, es war eine Dummheit von mir, da ich ein kleines Detail übersehen habe.

Kannst Du mir vielleicht noch folgendes verraten:

In der Zelle steht zB 11333 / 11222 und mein Makro überprüf gearde die 11333. Wie lautet der Code, um vor und nach der Zahl das Wort "new" zu schreiben.

Aktuell sieht es so aus, da schreibt er aber nur an Anfang und Ende der gesamten Zelle, wie kriege ich das new dazwischen quasi, weißt Du das?


Zelle_C.Value = "new" & Zelle_C.Value & "new"
Vielen Dank soweit, eine ganz große Hilfe!


Anzeige
AW: Left Funktion mit For each Schleife
08.06.2023 16:35:11
PeTeR
Hallo,
da du nur bei einer der beiden Zahlen das "new" brauchst, musst du vorher eine Zahl mit der Funktion left bzw. right isolieren:
Zelle_C.Value = "new" & left(Zelle_C.Value,5) & "new"
Viel Erfolg
PeTeR


AW: Left Funktion mit For each Schleife
09.06.2023 15:47:26
Daniel
Hi

Zelle_C.Value = Replace(Zelle_C.Value, x, "new" & x & "new")

Wobei x die Zahl ist, die du gerade prüfst.

Gruß Daniel


AW: Left Funktion mit For each Schleife
08.06.2023 11:39:39
GerdL
Oder "die " Z.ahl in einen Text
Sub Unit()

    Dim ZelleA As Range, ZelleB As Range
    
    Range("a1") = 11555000
    Range("b1") = "11555666 / 11333555"
    Range("b2") = "00000000 / 11555666"
    
    For Each ZelleA In Range("a1:a2").Cells
    For Each ZelleB In Range("b1:b2").Cells
    
        If Left$(ZelleA, 5) = Left$(ZelleB, 5) Then
            MsgBox Left$(ZelleA, 5) & ": " & ZelleA.Address(0, 0) & " u. " & ZelleB.Address(0, 0)
        End If
                
        If UBound(Split(ZelleB, "/")) > 0 Then
        If Left$(ZelleA, 5) = Left$(LTrim(Split(ZelleB, "/")(1)), 5) Then
            MsgBox Left$(ZelleA, 5) & ": " & ZelleA.Address(0, 0) & " u. " & ZelleB.Address(0, 0) & " 2.Teil"
        End If
        End If
    
    Next
    Next

End Sub
Gruß Gerd


Anzeige
AW: Left Funktion mit For each Schleife
08.06.2023 13:11:28
mb92
Danke, gut zu wissen. Mein Problem ist noch nicht ganz gelöst, vielleicht könntest Du noch einmal reinschauen, habe meine Antwort aktualisiert.

Beste Grüße

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige