Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1364to1368
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 Dateien Zusammenführen, werte addieren

VBA Dateien Zusammenführen, werte addieren
19.06.2014 17:43:12
Hans
Hallo,
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 

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Dateien Zusammenführen, werte addieren
20.06.2014 12:15:46
Tino
Hallo,
kannst mal so versuchen.
Daten werden aus der ersten Tabelle ab A2 gelesen, muss evtl. angepasst werden.
Option Explicit

Sub Start()
Dim ArFiles, varFile, tmpValues
Dim n&
Dim oDic As Object

ArFiles = Application.GetOpenFilename("Excel Files (*.xls*), *.xls*", , , , True)

If IsArray(ArFiles) Then
    On Error GoTo ErrorHandler: 'Fehlerbehandlung 
    Events_ False
    
    Set oDic = CreateObject("Scripting.Dictionary")
    'Schleife über Auswahl 
    For Each varFile In ArFiles
        With Workbooks.Open(varFile, ReadOnly:=True) 'Datei öffnen 
            With .Sheets(1) 'Daten aus 1. Tabelle, evtl. anpassen 
                'Daten in einem Array ablegen 
                tmpValues = .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)).Resize(, 2).Value
            End With
            .Close False
        End With
        For n = 2 To Ubound(tmpValues)
            oDic(tmpValues(n, 1)) = oDic(tmpValues(n, 1)) + tmpValues(n, 2)
        Next n
    Next varFile
    
    'Ausgabe 
    With Tabelle1
        'alte Daten löschen 
        .Range("A2").Resize(.Rows.Count - 1, 2).ClearContents
        'Daten einfügen ab A2 
        With .Range("A2").Resize(oDic.Count, 2)
            .Columns(1).Value = Application.Transpose(oDic.keys)
            .Columns(2).Value = Application.Transpose(oDic.items)
        End With
    End With
ErrorHandler:
    Events_ True
End If

If Err.Number <> 0 Then 'evtl. Fehler aufgetreten 
    MsgBox Err.Description, _
           vbCritical + vbMsgBoxSetForeground + vbMsgBoxHelpButton, _
           "Error: " & Err.Number, Err.HelpFile, Err.HelpContext
Else
    MsgBox "Daten wurden gelesen.", vbInformation
End If
End Sub

Sub Events_(booSchalter As Boolean)
With Application
    .ScreenUpdating = booSchalter
    .EnableEvents = booSchalter
    .DisplayAlerts = booSchalter
End With
End Sub
Gruß Tino

Anzeige
AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 10:55:06
Hans
Danke für deine Mühe, nur habe ich leider bei meiner Problemstellung einiges vergessen.
Meine Tabellen haben folgenden Aufbau:
Produkt Preis Menge Umsatz
Ich möchte, das gleiche Produkte nicht in mehreren Zeilen stehen sondern in einer.
Dementsprechend soll die Menge angepasst werden und der Umsatz neu berechnet werden.
Kurz gefasst, will ich eine Übersicht aller verkauften Produkte mit Preis Menge und Umsatz aus jeweils verschiedenen Excel Dateien mit identischem Aufbau.
In der ersten Zeile stehen
Produkt Preis Menge Absatz
Darunter die Werte

AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 16:29:00
Tino
Hallo,
lade mal besser ein Beispiel hoch!
Gruß Tino

Anzeige
AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 23:24:13
Hans
Ich habe 4 solcher Tabellen:
https://www.herber.de/bbs/user/91236.xlsx
Als Beispiel nehmen wir mal den MP3-PLayer für 40 €; das erste Produkt(Die Zahlen von den anderen Produkten werden von mir noch angepasst).
Ich will jetzt mittels VBA Programmierung die 4 Dateien auswählen (anzahl der Dateien kann varieren, Aufbau bleibt immer der gleiche).
Danach sollen diese in einem Tabellenblatt zusammengeführt werden.
Es sollte halt soetwas rauskommen:
(x4 wegen 4 Dateien; in diesem Beispiel ist die Menge in jeder Datei gleich).
Produkt Preis Menge Umsatz
MP3 Player 40 € 40 1600 €

Anzeige
AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 23:26:44
Hans
Ich habe 4 solcher Tabellen:
https://www.herber.de/bbs/user/91236.xlsx
Als Beispiel nehmen wir mal den MP3-PLayer für 40 €; das erste Produkt(Die Zahlen von den anderen Produkten werden von mir noch angepasst).
Ich will jetzt mittels VBA Programmierung die 4 Excel Dateien bzw. Tabellen auswählen (anzahl der Dateien kann varieren, Aufbau bleibt immer der gleiche).
Danach sollen diese in einem Tabellenblatt zusammengeführt werden.
Es sollte halt soetwas rauskommen:
(x4 wegen 4 Dateien; in diesem Beispiel ist die Menge in jeder Datei gleich).
Produkt Preis Menge Umsatz
MP3 Player 40 € 40 1600 €

Anzeige
AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 23:27:55
Hans
Ich habe 4 solcher Tabellen:
https://www.herber.de/bbs/user/91236.xlsx
Als Beispiel nehmen wir mal den MP3-PLayer für 40 €; das erste Produkt(Die Zahlen von den anderen Produkten werden von mir noch angepasst).
Ich will jetzt mittels VBA Programmierung die 4 Excel Dateien bzw. Tabellen auswählen (anzahl der Dateien kann varieren, Aufbau bleibt immer der gleiche).
Danach sollen diese in einem Tabellenblatt zusammengeführt werden.
Es sollte halt soetwas rauskommen:
(x4 wegen 4 Dateien; in diesem Beispiel ist die Menge in jeder Datei gleich).
Produkt Preis Menge Umsatz
MP3 Player 40 € 112 1600 €

Anzeige
AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 23:33:58
Hans
Sorry, hatte einige Fehler im Text und sah meine Antwort nicht, deshalb habe ich versehentlich mehrfach auf abschicken geklickt.
DAs Forum ist leider etwas gewöhnungsbedürftig

AW: VBA Dateien Zusammenführen, werte addieren
23.06.2014 23:31:03
Hans
Ich habe 4 solcher Tabellen:
https://www.herber.de/bbs/user/91236.xlsx
Als Beispiel nehmen wir mal den MP3-PLayer für 40 €; das erste Produkt(Die Zahlen von den anderen Produkten werden von mir noch angepasst).
Ich will jetzt mittels VBA Programmierung die 4 Excel Dateien bzw. Tabellen auswählen (anzahl der Dateien kann varieren, Aufbau bleibt immer der gleiche).
Danach sollen diese in einem Tabellenblatt zusammengeführt werden.
Es sollte halt soetwas rauskommen:
(x4 wegen 4 Dateien; in diesem Beispiel ist die Menge in jeder Datei gleich).
Produkt Preis Menge Umsatz
MP3 Player 40 € 112 1600 €

Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige