Clever-Excel-Forum

Normale Version: Vergleich von 2 Spalten auf gleichen Inhalt
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallöchen,

Zitat:Hallo, es gibt KEINE Spalte 8 oder 145 das sind Zeilen..

… Z1S1 Smile

Leerzeichen und Zeichen(10) würde ich nicht entfernen, dadurch kann man letztendlich nicht mehr kontrollieren, ob Ziffern getrennt waren oder nicht - ich hab dazu auf dem Bild mal unten die 1241 in 12 und 41 getrennt, diese Trennung wäre, wie gesagt, nicht mehr sichtbar …

[attachment=31885]

Ich hab hier einfach die Zellinhalte mit in der Formel verarbeitetem Zeichen 10 verglichen und zusätzlich ausgegeben, ob das Zeichen 10 enthalten ist. Diese Zeilen müsstest Du dann überprüfen. Falls Leerzeichen enthalten sind, dann auch noch darauf prüfen. Im Beispiel waren anscheinend keine.

Arbeitsblatt mit dem Namen 'Tabelle1'
EFGHI
4Spalte 1Spalte 2Identisch Ja/NeinErgebnis
512441224FALSCH0Ja

ZelleFormel
G5=WECHSELN(E5;ZEICHEN(10);"")=WECHSELN(F5;ZEICHEN(10);"")
H5=ZÄHLENWENN(E5;"*"&ZEICHEN(10)&"*")+ZÄHLENWENN(F5;"*"&ZEICHEN(10)&"*")
Verwendete Systemkomponenten: [Windows (32-bit) NT 10.00] MS Excel 2016
Diese Tabelle wurde mit Tab2Html (v2.6.2) erstellt. ©Gerd alias Bamberg
Hallöchen,

hier wäre mal ein VBA-Code. Die Ergebnisse werden erst mal in Spalte D eingetragen. Der Code deckt noch nicht alle Fälle ab. Im Moment gehe ich davon aus, dass in Spalte F maximal ein Eintrag steht, auch wenn ab und an Zeilenumbrüche enthalten sind. Nicht abgedeckt wäre auch der Fall, dass mehrere Zeilenumbrüche stehen, aber ansonsten kein Inhalt.

Code:
Option Explicit

Sub test()
'Variablendeklaration
Dim iCnt1&, iCnt2%, lRow&, arrtempE, arrTempF
'Endzeile aus letztem Eintrag  der Spalten E und F ermitteln
lRow = WorksheetFunction.Max(Cells(Rows.Count, 5).End(xlUp).Row, Cells(Rows.Count, 6).End(xlUp).Row)
'Schleife bis zur Endzeile
For iCnt1 = 5 To lRow
  'wenn das Gleiche drin steht, dann
  If Cells(iCnt1, 5).Value = Cells(iCnt1, 6).Value Then
    'Wahr eintragen
    Cells(iCnt1, 4).Value = True
  'oder wenn nicht das Gleiche drin steht, dann
  Else
    'Array E bilden
    arrtempE = Split(Cells(iCnt1, 5), Chr(10))
    'Array F bilden
    'arrTempF = Split(Cells(iCnt1, 6), Chr(10))
    arrTempF = Split(Replace(Cells(iCnt1, 6), Chr(10), ""), Chr(10))
    'wenn nur je ein Eintrag dann ...
    If UBound(arrtempE) = 0 And UBound(arrTempF) = 0 Then
      '... muesste es was unterschiedliches sein - Falsch eintragen
      Cells(iCnt1, 4) = False
    'oder wenn ein Eitrag kein Array ist, dann
    ElseIf UBound(arrtempE) < 0 Or UBound(arrTempF) < 0 Then
      '... muesste es was unterschiedliches sein - Falsch eintragen
      Cells(iCnt1, 4) = False
    'oder
    Else
      '... erst mal Wahr eintragen
      Cells(iCnt1, 4) = True
      'Schleife ueber alle array-Eintraege
      For iCnt2 = 0 To UBound(arrtempE)
        'wenn da was steht und es ist was anderes, dann
        If arrtempE(iCnt2) <> "" And arrtempE(iCnt2) <> arrTempF(0) Then
          'Falsch eintragen
          Cells(iCnt1, 4) = False
        End If
      'Ende Schleife ueber alle array-Eintraege
      Next
    'Ende wenn nur je ein Eintrag dann ...
    End If
  'Ende wenn das Gleiche drin steht, dann
  End If
'Ende Schleife bis zur Endzeile
Next
End Sub
Man sollte erst leere Zeiilen löschen.

Und dann reicht:

Code:
Sub M_snb()
   sn = Sheet1.Cells(4, 5).CurrentRegion
  
   For j = 2 To UBound(sn)
     sn(j, 3) = Format(sn(j, 1) <> "" And Replace(Replace(sn(j, 1), vbLf, ""), Replace(sn(j, 2), vbLf, ""), "") = "", "yes/no")
   Next
  
   Sheet1.Cells(4, 5).CurrentRegion = sn
End Sub
Seiten: 1 2