Hallo rezwiebel,
 Offenbar möchtest du nicht von allen, sondern nur von ausgewählten Kunden die Differenz bilden. Ferner gehe ich davon aus, dass das Array in einer möglichen Ergänzung des Makros hinsichtlich der Kunden erweiterbar sein soll. Dann sollte der letzte Index auf die Kunden verweisen, denn dieser ist mit ReDim Preserve erweiterbar, ohne dass die bisherigen Werte verloren gehen. Ich ändere dies. Warum beginnst du deine Zuweisung nicht bei A(0,0), B(0,0)?
 Es wird dir nichts anderes übrig bleiben, als jeweils die gesamten Arrays zu durchsuchen oder, wenn jeder Kundenname nur einmal vorkommt, soweit, bis dieser Name in beiden Arrays gefunden wurde. Ich gehe von letzterem Fall aus. Wenn beide Arrays gleich aufgebaut sind, also zu jedem i A(0,i) und B(0,i) gleich sind, vereinfacht sich die Suche. Dann brauchst du aber auch nicht die Kundennamen doppelt zu führen.
 Ich empfehle dir, wenn du dieses Makro tatsächlich einsetzen willst, die Arraydaten in einer Datei zu speichern und eine UserForm anzulegen, in der du die möglichen Kundennamen z.B. in einer ListBox anzeigen lässt.
 Für heute verwende ich eine InputBox, in der du den Kundenname eingeben musst.
 
 Sub Abziehen_im_Array()
 Dim A(1, 1) As String, B(1, 1) As String, i,j,c
 A(0, 0) = "Kunde1"
 A(1, 0) = "1000"
 A(0, 1) = "Kunde2"
 A(1, 1) = "1500"
 
 B(0, 0) = "Kunde1"
 B(1, 0) = "200"
 B(0, 1) = "Kunde2"
 B(1, 1) = "300"
 
 c = InputBox("Kundenname?")
 For i = 0 To UBound(A, 2)
     If A(0, i) = c Then
         For j = 0 To UBound(B, 2)
             If B(0, j) = c Then
                 A(1, i) = A(1, i) - B(1, j)
                 Exit For
             End If
         Next j
         Exit For
     End If
 Next i
 If i > UBound(A, 2) Or j > UBound(B, 2) Then
     MsgBox "Name nicht in beiden Arrays gefunden!"
 Else
     MsgBox "Neuer Wert für " + A(0, i) + " in Array A: " + vbCrLf + A(1, i)
 End If
 End Sub
 
 Viel Erfolg
 Holger
 
 rezwiebel schrieb am 15.05.2008 17:41:48:
 
 Hallo zusammen,
 
 ich habe 2 mehrdimensionale Arrays A und B. 
 Von Array A möchte ich die passenden Daten von B abziehen.
 
 Beispiel:
 A:
 Dim A(2, 2) As String
 A(0, 1) = "Kunde1"
 A(0, 2) = "1000"
 A(1, 1) = "Kunde2"
 A(1, 2) = "1500"
 
 B:
 Dim B(2, 2) As String
 B(0, 1) = "Kunde1"
 B(0, 2) = "200"
 B(1, 1) = "Kunde2"
 B(1, 2) = "300"
 
 Jetzt möchte ich in B die 2. Dimension (300) von "Kunde2" finden  und diese von der 2. Dimension (1500) von A abziehen. Anschließend soll die 2. Dimension von A die Differenz als Wert übernehmen, damit A folgenden Inhalt hat:
 
 A(0, 1) = "Kunde1"
 A(0, 2) = "1000"
 A(1, 1) = "Kunde2"
 A(1, 2) = "1200"
 
 Und das ganze ohne jeden einzelnen Wert durchsuchen zu müssen. Wie kann ich das machen?
 
 Gruß
 René
 
 PS: Ich hoffe jemand versteht was ich meine...     |