Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1524to1528
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA - - Vergleichen und auffüllen

VBA - - Vergleichen und auffüllen
21.11.2016 12:09:46
Fred
Guten Tag VBA – Experten,
Ich habe in meiner Arbeitsmappe u.a. drei Tabellenblätter; „Basis“, „Liste1“ und „Center“.
„Basis“ beinhaltet u.a. Spielpaarungen mit Ergebnissen.
„Liste1“ beinhaltet ebenfalls Spielpaarungen mit teilweise vollständigen Ergebnissen.
Das, was geschehen soll;
Es sollen in „Liste1“ die Spiele ohne Ergebnis (Endstand / Hz) mit dem korrekten Ergebnis (verglichen mit („Basis“) eingetragen werden. – Ausgehend von einem Button in Blatt „Center“.
Dies ist sicherlich auch über die entsprechenden Zell-Formeln möglich. Allerdings geht es um mehrere Tausend DS und eine „permanente Berechnung“ ist nicht notwendig.
Könnte sich einer der VBA-Experten dieser Herausforderung stellen und ein entsprechendes Script schreiben?
Um die Sache etwas zu verdeutlichen, habe ich ein einfach gehaltenes Arbeitsblatt beigefügt.
https://www.herber.de/bbs/user/109602.xlsm
mfG
Fred

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA - - Vergleichen und auffüllen
21.11.2016 20:17:21
Bastian
Hey Fred So wenn der Orange Bereich leer ist
Gruß Basti
Sub Vergleichen()
Dim ArrayB() As Variant
Dim ArrayL1() As Variant
Dim WSB As Worksheet
Dim WSL1 As Worksheet
Dim r As Long, rr As Long
Set WSB = ThisWorkbook.Worksheets("Basis")
Set WSL1 = ThisWorkbook.Worksheets("Liste1")
ArrayB = WSB.Range("A1").CurrentRegion
ArrayL1 = WSL1.Range("A1").CurrentRegion
For r = LBound(ArrayL1, 1) + 1 To UBound(ArrayL1, 1)
For rr = LBound(ArrayB, 1) + 1 To UBound(ArrayB, 1)
If ArrayL1(r, 2) & ArrayL1(r, 3) = ArrayB(rr, 3) & ArrayB(rr, 4) Then
ArrayL1(r, 4) = ArrayL1(r, 4) + ArrayB(rr, 5)
ArrayL1(r, 5) = ArrayL1(r, 5) + ArrayB(rr, 6)
ArrayL1(r, 6) = ArrayL1(r, 6) + ArrayB(rr, 8)
ArrayL1(r, 7) = ArrayL1(r, 7) + ArrayB(rr, 9)
End If
Next
Next
WSL1.Range("A1").Resize(UBound(ArrayL1, 1), UBound(ArrayL1, 2)) = ArrayL1
End Sub
Guck mal ob das passt war nur so auf die schnelle .
Anzeige
VBA - - Vergleichen und auffüllen
21.11.2016 20:36:43
Fred
Bastian,
das VBA ist echt stark!!!
genau so sollte es funzen.
Bin gespannt, wenn die ersten tausend DS auf diese Art aufgefüllt werden :-)
Tolle Arbeit!
Gruß
Fred
VBA - - Vergleichen und auffüllen
22.11.2016 16:00:26
Fred
Bastian, danke für die Mühe und dem Script!
Das der "Orangene Bereich" leer sein sollte, habe ich schnell festgestellt,- ansonsten werden die übertragenen Werte mit den vorhandenen addiert. - Damit kann ich leben,- bzw. den Inhalt des Bereichs zuvor löschen.
Eine Frage aber noch;
Habe ich rechts neben dem Orangenen Bereich Zellen mit Formeln, wird diesen "die Fprmel entzogen" und es stehen nur noch die Werte drinne.
Ich denke mal, das liegt an dem "CurrentRegion" im Script, der seine Grenzen ja erst durch leere Zeilen, bzw. Spalten findet.
Kann man dies evt. modifizieren, so das ich gleich in der nächsten Spalte (Spalte: "H")mit diversen Formeln Berechnungen durchführen kann?
Zudem würde ich evt. "Liste1" komplett als Tabelle umwandeln, - und ob ich dann noch rechts Formeln eintragen kann, bezweifle ich mal.
Gruß
Fred
Anzeige
AW: VBA - - Vergleichen und auffüllen
22.11.2016 21:22:11
Bastian
Du kannst auch statt
ArrayB = WSB.Range("A1").CurrentRegion
ArrayB = WSB.Range("A1:BisWodu hin willst").value
eingeben
Gruß basti
AW: VBA - - Vergleichen und auffüllen
22.11.2016 21:32:09
Fred
ja Bastian,
danke für den Hinweis.
ArrayB = WSB.Range("A1:I5000").value
sagt mir als VBA-Unwissenden eigentlich mehr als

ArrayB = WSB.Range("A1").CurrentRegion

Dein Script ist nun in meiner Mappe perfekt eingebunden und gilt für nächst ähnliche Aufgaben als "Referenz".
Gruß
Fred
AW: VBA - - Vergleichen und auffüllen
23.11.2016 06:48:09
baschti007
Ich würde das i5000 MIT letzer Zelle Finden machen weil sonst vielleicht ein Bereich durchsucht wird wo keine Daten stehen .
Und dann ist deine Liste flexibler
Gruß basti
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige