Arrays vergleichen

Moin auch,

ich habe 2 unterschiedlich große, jeweils eindimensionale Arrays. Das eine enthält Soll-Werte (ArraySoll), das andere Ist-Werte (ArrayIst). Ich will jetzt vergleichen, ob Werte aus ArraySoll nicht in ArrayIst vorkommen und diese Werte auf einem Tabellenblatt ausgeben, aber ich bin zu doof dafür. Kann einer helfen?

R.

Hallo.

  1. Array steht in den Zellen A1-A100,
  2. Array steht in den Zellen B1-B100.
    In Zelle C1 schreibst du: =WENN(ZÄHLENWENN($A$1:$A$100;B1)>0;"";B1)
    und kopierst die Formel nach unten.

Wenn du das Ergebnis auf einem anderen Tabellenblatt haben willst, einfach ausschneiden und an der gewünschten Stelle wieder einfügen.

Etwas unschön ist, dass identische Werte mehrmals übernommen werden, und dass die Zeilennummern denen des Vergleichsarrays entsprechen, aber vielleicht reicht’s dir ja so schon.

Gruß,

Kannitverstan

Fast richtig. Ich hätte erwähnen sollen, dass ich das Ganze in VBA mache; das Makro enthält noch eine ganze Ecke anderes Zeug. Mit ZÄHLENWENN komme ich leider nicht weiter. Hast Du einen VBA Schnipsel dafür?

R.

Hättest du. Wobei du natürlich weißt, dass du von VBA aus auch auf die Ergebniszellen zugreifen kannst :wink:
Wie auch immer:
Mach zwei verschachtelte for-Schleifen.
In der äußeren Schleife holst du den dem Schleifenindex entsprechenden Wert aus Array „soll“.
In der inneren Schleife vergleichst du diesen Wert mit allen Werten aus „ist“.
Bei Übereinstimmung beider Werte wird die innere Schleife abgebrochen („exit for“ heißt es hier glaub ich). Stimmt kein Wert aus „ist“ mit dem aktuellen „soll“ überein, ist der Schleifenindex der inneren Schleife um 1 höher als die obere Grenze, was du als Entscheidung nehmen kannst, den Wert in die Tabelle zu schreiben.

Gruß,

Kannitverstan

So würde ich es in php machen :slight_smile:

Jupp, habs hinbekommen. arrlangu 1 enthält die Sollwerte, Datenfeld die Ist-Werte. Ein Sollwert wird in variable miss geschrieben, wird der Wert in den Ist-Werten gefunden, wird der Inhalt von miss gelöscht. Wahrscheinlich nicht elegant, funktioniert aber.

'compare existing vs. necessary languages

Dim x As Long, y As Long, miss As String
 For x = 1 To UBound(arrlangu1)
    miss = arrlangu1(x, 1)
    For y = 1 To UBound(Datenfeld)
        If Datenfeld(y, 1) = arrlangu1(x, 1) Then
            miss = ""
            Exit For
        End If
    Next
'output missing languages

        If miss <> "" Then
            Worksheets(3).Activate
            Cells(r, 1).Value = key
            Cells(r, z).Value = miss
            z = z + 1
            Worksheets(1).Activate
        End If

Danke für die Hilfe

R.