ich habe leider keine Ahnung von VBA Progammierung möchte aber anhand eines kleines Beispiels VBA in der Schule demonstrieren.
Die Ausgangslage:
Ich habe mehrer Excel Dateien mit identischem Tabellenaufbau.
Datei1 DAtei2 Datei3
AA 11 AA 10 AA 10
BB 10 BB 11 BB 12
Nun möchte ich, das ich mithilfe von VBA die 3 Dateien auswähle und den Inhalt zusammenführe.
Ich habe auch einen Code im Internet gefunden, der genau das macht, was ich brauche.
Nur ist das Problem, dass der Code folgendes macht:
AA 11
BB 10
AA 10
BB 11
AA 10
BB 12
Ich möchte aber als Ergebnis folgendes:
AA 32
BB 33
Wie kann man dies mittels VBA lösen?
DEr Code ist wie folgt:
Sub Zusammenführen()
Dim i As Long
Dim sPfad As String
Dim sDatei As String
Dim vFileToOpen As Variant
Dim lngLZ As Long
Dim blnÜberschrift As Boolean
Dim iCalc As Integer
vFileToOpen = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)
If Not IsArray(vFileToOpen) Then Exit Sub
iCalc = Application.Calculation
On Error GoTo ENDE:
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
Application.EnableEvents = False
For i = 1 To UBound(vFileToOpen)
sDatei = Dir(vFileToOpen(i))
sPfad = Left(vFileToOpen(i), InStr(vFileToOpen(i), sDatei) - 1)
With Tabelle1.Range("A1")
.Formula = "=LOOKUP(2,1/('" & sPfad & "[" & sDatei & "]Tabelle1'!$A:$A""""),ROW(' _
_
" & sPfad & "\[" & sDatei & "]Tabelle1'!$A:$A))"
lngLZ = .Value
End With
With Tabelle1
If blnÜberschrift Then
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ - 1, 5).Formula = _
"=IF('" & sPfad & "[" & sDatei & "]Tabelle1'!A2="""","""",'" & sPfad & "[" & _
_
sDatei & "]Tabelle1'!A2)"
Else
blnÜberschrift = True
.Cells(.Rows.Count, 1).End(xlUp).Offset(1).Resize(lngLZ, 5).Formula = _
"=IF('" & sPfad & "[" & sDatei & "]Tabelle1'!A1="""","""",'" & sPfad & "[" & _
_
sDatei & "]Tabelle1'!A1)"
End If
End With
Call StatusBalken(Int((i / UBound(vFileToOpen)) * 100))
Next
With Tabelle1.UsedRange
.Copy
.PasteSpecial xlPasteValues
.Rows(1).Delete
End With
ENDE:
Application.EnableEvents = True
Application.Calculation = iCalc
Application.ScreenUpdating = True
If Err Then MsgBox Err.Description, , "Fehler: " & Err
End Sub
Sub StatusBalken(ProzentSatz) ''ProzentSatz = Int((i / 10000) * 100)
Dim Mess, Z, Rest
Static oldStatusBar As Integer
Static blnInit As Boolean
If Not blnInit Then
oldStatusBar = Application.DisplayStatusBar
Application.DisplayStatusBar = True
End If
Mess = ""
For Z = 1 To ProzentSatz
Mess = Mess & ChrW(Val("&H25A0"))
Next Z
Rest = 100 - ProzentSatz
For Z = 1 To Rest
Mess = Mess & ChrW(Val("&H25A1"))
Next Z
Application.StatusBar = Mess & " " & ProzentSatz & "%"
If Rest