Thema Datum  Von Nutzer Rating
Antwort
15.05.2008 17:41:48 rezwiebel
NotSolved
Blau Aw:Mehrdimensionale Arrays durchsuchen und verrech
16.05.2008 10:53:33 Holger
NotSolved

Ansicht des Beitrags:
Von:
Holger
Datum:
16.05.2008 10:53:33
Views:
835
Rating: Antwort:
  Ja
Thema:
Aw:Mehrdimensionale Arrays durchsuchen und verrech
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...

Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
15.05.2008 17:41:48 rezwiebel
NotSolved
Blau Aw:Mehrdimensionale Arrays durchsuchen und verrech
16.05.2008 10:53:33 Holger
NotSolved