Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1540to1544
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 -- Value

VBA -- Value
20.02.2017 14:55:21
Fred Neumann

Hallo Excel-Experten,
Ich nutze ein vba, welches u.a. Daten aus Tabelle „Basis“ mit Tabelle „Import“ vergleicht und entsprechend „Import“ ergänzt.
Das Problem:
Wird passende Daten in „Import“ festgestellt die zu übertragenden Felder in "Basis" allerdings leer sind, wird entsprechend eine Null eingetragen (anstatt leere Zelle)


Dim ArrayB() As Variant
Dim ArrayL1() As Variant
Dim WSB As Worksheet
Dim WSL1 As Worksheet
Dim r As Long, rr As Long
Dim Ende As Long
Worksheets("Import").Range("D6:G15000").ClearContents
Set WSB = ThisWorkbook.Worksheets("Basis")
Set WSL1 = ThisWorkbook.Worksheets("Import")
ArrayB = WSB.Range("A1:I15000").Value
ArrayL1 = WSL1.Range("A6").CurrentRegion.Resize(, 7)
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

Könnte mir jemand eventuell dieses VBA korrigieren, so das anstatt die Null nichts eingetragen wird?
mfG
Fred

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

Betreff
Datum
Anwender
Anzeige
AW: VBA -- Value
20.02.2017 14:58:51
RPP63
Moin!
Klar, Leer + Leer ergibt 0
Blende die Nullwerte aus oder vergebe ein Zahlenformat, welches die 0 nicht anzeigt.
(Standard;-Standard;;)
Gruß Ralf
AW: VBA -- Value
20.02.2017 15:12:08
Fred Neumann
Hallo Ralf,
verstehe,- allerdings ist dies für meine Mappe der falsche Ansatz -- es geht um Fußballergebnisse.
Ich habe mal eine sehr einfach gehaltene Mappe angefügt.
https://www.herber.de/bbs/user/111605.xlsm
Vielleicht hast du eine Lösung.
Gruß
Fred
AW: VBA -- Value
20.02.2017 15:19:01
RPP63
Ohne die Datei angesehen zu haben:
Dann prüfe doch vorher auf IsEmpty()
Gruß Ralf
Anzeige
AW: VBA -- Value
20.02.2017 19:25:10
Michael (der Alte)
Hi,
ist es so gemeint?
Private Sub CommandButton2_Click()
' vergleicht Liste1 mit Basis und ergänzt fehlende Ergebnisse
Dim aBas, aImp  ' ohne Angabe = as Variant
Dim iB As Long, iI As Long
Dim iBMax As Long, iIMax As Long
With Worksheets("Import")
iIMax = .Range("A" & .Rows.Count).End(xlUp).Row
.Range("D6:G" & .Rows.Count).ClearContents
' *** auskommentiert ***
' ArrayL1 = WSL1.Range("A6").CurrentRegion.Resize(, 7)
' Da sind alle Zellen ab A1 enthalten, gell!
aImp = .Range("A6:G" & iIMax).Value ' erst ab Zeile 6
End With
With Worksheets("Basis")
iBMax = .Range("A" & .Rows.Count).End(xlUp).Row
aBas = .Range("A1:I" & iBMax).Value
End With
For iI = 1 To UBound(aImp)
For iB = 2 To UBound(aBas) ' ohne Überschrift
If aImp(iI, 2) = aBas(iB, 3) And aImp(iI, 3) = aBas(iB, 4) Then
aImp(iI, 4) = aBas(iB, 5)
aImp(iI, 5) = aBas(iB, 6)
aImp(iI, 6) = aBas(iB, 8)
aImp(iI, 7) = aBas(iB, 9)
Exit For
End If
Next
Next
Worksheets("Import").Range("A6"). _
Resize(UBound(aImp), UBound(aImp, 2)) = aImp
End Sub
Gruß,
Michael
Anzeige
VBA / Value, danke Michael
21.02.2017 09:03:35
Fred Neumann
Hallo Michael,
danke für Deine qualifizierte Arbeit,- passt!
Großer Sport!
Gruß
Fred
gern geschehen & Gruß zurück owT

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige