2017-09-24 1 views
0

Image Angenommen, die Spaltenposition ist nicht festgelegt, zuerst müssen beide Spalten automatisch gesucht werden und dann die folgende Aufgabe ausführen. Fälle: -Vergleichen von Werten zweier verschiedener Spalten mit einer eindeutigen Bedingung

In Spalte 'C' ist ein zweistelliger Wert vorhanden, der zu einem siebenstelligen Wert in Spalte 'F' führt. In Spalte 'C' ist ein dreistelliger Wert vorhanden, der zu einem achtstelligen Wert in Spalte 'F' führt. Ich möchte prüfen, ob 'F2' und 'F3' mit 21 beginnen und ob keine Msgbox 'Fehler in dieser Zeile' ist. und ob 'F6' und 'F7' mit und 228 beginnen und wenn keine Msgbox 'Fehler in dieser Zeile'.

Danke. ++ Code

 Sub CompareColumns() 
    Dim lr As Long, n As Long 
    Dim rng As Range, cell As Range 
    Dim strA As String, strB As String, str As String 
    Dim NotMatched As Boolean 

    lr = Cells(Rows.Count, 1).End(xlUp).Row 

    'Assuming your data starts from Row2 
    Set rng = Range("B2:B" & lr) 
    str = "The following cells don't match." & vbNewLine & vbNewLine 
    For Each cell In rng 
    If cell <> "" Then 
     n = Len(cell.Offset(0, -1)) 
     If n > 0 Then 
      strA = cell.Offset(0, -1).Text 
      strB = Left(cell, n) 
      If strA <> strB Then 
       NotMatched = True 
       str = str & cell.Offset(0, -1).Address(0, 0) & " : " &  
cell.Offset(0, -1).Value & vbTab & cell.Address(0, 0) & " : " & cell.Value & 
    vbNewLine 
      End If 
     Else 
      str = str & cell.Offset(0, -1).Address(0, 0) & " : " & cell.Offset(0, -1).Value & vbTab & cell.Address(0, 0) & " : " & cell.Value & vbNewLine 
     End If 
    End If 
    n = 0 
    strA = "" 
    strB = "" 
    Next cell 
    If NotMatched 
    MsgBox str, vbInformation 
Else 
    MsgBox "Both columns match.", vbInformation 
End If 
End Sub 
+0

Bitte schreiben Sie den Code, den Sie bis jetzt erstellt haben –

+0

Ich habe den Code gepostet, den ich von "sktneer" einem stackoverflow Benutzer bekommen habe. –

Antwort

0

der Code versehen sind, vergleicht die Spalte A und B, nicht C und F. Der Code vergleicht, ob der Wert in jeder Zeile der Spalte A die gleichen wie die Anfang Ziffern des Wertes in der Spalte ist, B und dann drucken Sie alle verschiedenen Zeilen aus.

Der Code hat einige kleinere Fehler und ich regelte es unten mögen:

Sub CompareColumns() 
Dim lr As Long, n As Long 
Dim rng As Range, cell As Range 
Dim strA As String, strB As String, str As String 
Dim NotMatched As Boolean 

lr = Cells(Rows.Count, 1).End(xlUp).Row 

'Assuming your data starts from Row2 
Set rng = Range("B2:B" & lr) 
str = "The following cells don't match." & vbNewLine & vbNewLine 
For Each cell In rng 
If cell <> "" Then 
    n = Len(cell.Offset(0, -1)) 
    If n > 0 Then 
     strA = cell.Offset(0, -1).Text 
     strB = Left(cell, n) 
     If strA <> strB Then 
      NotMatched = True 
      str = str & cell.Offset(0, -1).Address(0, 0) & " : " & cell.Offset(0, -1).Value & vbTab & cell.Address(0, 0) & " : " & cell.Value & vbNewLine 
     End If 
    Else 
     str = str & cell.Offset(0, -1).Address(0, 0) & " : " & cell.Offset(0, -1).Value & vbTab & cell.Address(0, 0) & " : " & cell.Value & vbNewLine 
    End If 
End If 
n = 0 
strA = "" 
strB = "" 
Next cell 
If NotMatched Then 
    MsgBox str, vbInformation 

Else 
    MsgBox "Both columns match.", vbInformation 
End If 
End Sub 

Wenn dies nicht der Fall ist, was Sie suchen, lassen Sie es mich wissen.

+0

Danke! Ich suche nach einem Code, der die Spalten basierend auf den Headern durchsucht, da die Spaltenposition nicht festgelegt ist. Kannst du mir helfen? –

Verwandte Themen