Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen

Tabellen Daten zusammenführen

Betrifft: Tabellen Daten zusammenführen von: Herbert
Geschrieben am: 01.08.2014 10:55:33

Hallo zusammen,

dachte das Thema wurde schon öfters behandelt leider finde ich aber keine Lösung die mir genau bei diesem Problem helfen kann:
Ich habe 10 Tabellen mit Namen. Diese möchte ich vergleichen lassen und in einer 11ten Tabelle untereinander ausgeben lassen ohne Duplikate.

hört sich nicht schwer an, finde aber im Moment einfach keine passende Lösung.

Grüße, Herbert

  

Betrifft: Konsolidieren ... von: neopa C (paneo)
Geschrieben am: 01.08.2014 11:09:34

Hallo Herbert,

... dies könnte Dir weiterhelfen. Dazu sieh mal hier: http://www.online-excel.de/excel/singsel.php?f=100


Gruß Werner
.. , - ...


  

Betrifft: AW: Konsolidieren ... von: Herbert
Geschrieben am: 01.08.2014 11:20:15

Danke für den Link. Darauf bin ich auch schon gestoßen. Hätte vielleicht erwähnen sollen, dass ich das am liebsten mit einem VBA machen würde da ich des öfteren eine Liste dazu bekomme.
Der Aufbau ist so:
1. Zusammenfassung
2. Liste1
3. Liste2
...
Nun stehen jeweils in den Listen Namen(mit Leerzeichen) untereinaner also Hans Mueller, Guenther Schuh usw.
Dies ist in jeder Liste so. In Zusammenfassung sollte dann jeder Name der je in einer Liste vorkam genau ein mal drin stehen.
Viele Grüße, Herbert


  

Betrifft: VBA-Lösung gesucht ... Thread offen owT von: neopa C (paneo)
Geschrieben am: 01.08.2014 11:22:54


Gruß Werner
.. , - ...


  

Betrifft: Weil ich es grad in der Hand hab von: Jack_d
Geschrieben am: 01.08.2014 11:57:29

Ich hab einst eine vergleichbare Lösung erstellt
die Sammelt aus allen Blättern die DAten und fügt diese Dann in einem Summary zusammen.

Du müsstest in deinem Fall die Kriterien (Ws-Auswahl ; Bereiche) anpassen
und weitergehend deinen Duplikatefilter einrichten. Dazu gibt es aber bereits hunderte Lösungen im Netz.



Sub Raumbuch_erstellen()

Dim Datensammler As Variant
Application.ScreenUpdating = False

Set WB = ActiveWorkbook
blaetter = BlaetterF - 1
DatenLauf = 0

If blaetter <= 0 Then Exit Sub

ReDim Datensammler(1 To 4, 0 To blaetter)

''Sammeln

For Each WS In WB.Worksheets
    If IsNumeric(Left(WS.Name, 1)) Then
        
        
        Datensammler(1, DatenLauf) = WS.Cells(5, 8)     'FABname
        Datensammler(2, DatenLauf) = WS.Cells(6, 8)     'Sub-Titel
        Datensammler(3, DatenLauf) = WS.Name            'Blattname
        Datensammler(4, DatenLauf) = WS.Range("B10:H51").Value   'Räume
        
        
        
        DatenLauf = DatenLauf + 1
     Else
       
    End If
Next WS


If Blattpruefen("Raumbuch") = False Then
Else
Application.DisplayAlerts = False
    Worksheets("Raumbuch").Delete
Application.DisplayAlerts = True

End If
    WB.Worksheets.Add Before:=Sheets(1)
    ActiveSheet.Name = "Raumbuch"

'' Eintragen
With Worksheets("Raumbuch")
    For i = 0 To UBound(Datensammler, 2)
        On Error GoTo errorhdl
        LZeile = .Cells(Rows.Count, 8).End(xlUp).Row
    
        .Cells(LZeile, 1).Resize(41, 7) = Datensammler(4, i)
        AlZeile = .Cells(Rows.Count, 8).End(xlUp).Row
        
        For Awerte = 1 To 41
            .Cells(AlZeile + Awerte, 8) = Datensammler(1, i)
            .Cells(AlZeile + Awerte, 9) = Datensammler(2, i)
            .Cells(AlZeile + Awerte, 10) = Datensammler(3, i)
        Next Awerte
        
    Next i
End With



Exit Sub
errorhdl:
MsgBox "Fehler in Zeile " & EintragZeile
Resume Next
End Sub



  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 01.08.2014 12:47:45

Wow, super. Vielen Dank. Werde es mir jetzt gleich mal anschauen.


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 01.08.2014 14:13:30

Wow, super. Vielen Dank. Werde es mir jetzt gleich mal anschauen.


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 01.08.2014 14:16:09

OK, leider bin ich dafür noch zu ungeübt um den Code richtig interpretieren zu können. Hab mich jetzt mal daran gemacht und selber was zusammengeschrieben. Leider klappt das nicht so ganz:

'Insert  names from all sheets
WS_Count = ActiveWorkbook.Worksheets.Count
For I = 5 To WS_Count

lastRowCalc = ActiveWorkbook.Sheets("calc").UsedRange.Rows.Count
lastRow = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count

ActiveWorkbook.Worksheets(I).Range("A1:A" & lastRow).Copy
Sheets("calc").Range("A" & lastRowCalc + 1).PasteSpecial xlPasteValues
Next I

'Delete duplicate entries
Sheets("calc").Select
Columns("A:A").Select
ActiveSheet.Range("A:A").RemoveDuplicates Columns:=1, Header:=xlNo
Leider bleibt die Liste auf dem Blatt calc leer, anstatt alle Namen untereinander anzuzeigen :(


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Jack_D
Geschrieben am: 02.08.2014 13:19:09

Moin Moin

Also ich hab aufm Handy nur kurz drüber geschaut, aber ein Fehler liegt auf jeden fall im referenzieren.
In der Schleife musst du für die letzte Zeile auch die Tabellenblätter ansprechen .
Sonst kommt immer die letzte Zeile vom 1. aktiven was im Zweifel vermutlich calc ist .. Somit "0" ist und der Kopier Ränge leer bleibt.

Grüße


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 04.08.2014 08:12:32

Oh ja danke. Leider funktioniert das Skript immer noch nicht. Er springt zwar zur letzten Zeile in calc aber fügt keine Werte ein. Könnte vielleicht noch einmal jemand drüber schauen?


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Robert
Geschrieben am: 04.08.2014 08:28:31

Hallo Jack_D

Herbert hats schon angesprochen, hier nochmal in Codeform:

lastrow = ActiveWorkbook.ActiveSheet.UsedRange.Rows.Count
Ersetzen durch:
lastrow = ActiveWorkbook.Worksheets(I).UsedRange.Rows.Count
oder noch besser durch:
lastrow = ActiveWorkbook.Worksheets(I).UsedRange.Specialcells(xlCellTypeLastCell).Row
Viele Grüße
Robert


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 04.08.2014 08:36:37

Hallo Robert,

das habe ich bereits gemacht. Leider werden die Werte imme rnoch nicht eingefügt. Irgendetwas schein bei der Paste Funktion nicht zu stimmen?


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Robert
Geschrieben am: 04.08.2014 08:48:20

Hallo Herbert (sorry für die Verwechslung vorhin),

Setze mal einen Haltepunkt bei Beginn der For...Next Schleife und lasse den Code dann Schritt für Schritt arbeiten (F8 drücken für Einzelschritt).
So kommt man normalerweise schnell dahinter, was denn da nicht passt.

Ansonsten:
Ich arbeite ungern mit den "Klarnamen" von Zellen, wie sie in den normalen Formeln verwendet werden und benutze eigentlich nurnoch .Cells(Zeilennummer,Spaltennummer) zum Angeben von Zelladressen,Ranges etc. Finde ich irgendwie übersichtlicher, da man Nummernvariablen direkt übergeben kann und nicht mit ("A1:A" &lastrow) arbeiten muss.

Viele Grüße
Robert


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 04.08.2014 13:12:00

Hallo Robert, vielen Dank für den Hinweis. Habe den Fehler gefunden. Aus irgend einem Grund war die Variable zur Bestimmung der letzten Zeile falsch.

Werde wohl in Zukunft auch mit Cells arbeiten, ist in der Programmierung übersichtlicher. Etwas anderes jetzt aber leider noch: Ich bekomme immer einen 1004 Error wenn ich folgende Zeilen einfügen möchte (vorletzte Zeile):

lastRowCalc = ActiveWorkbook.Sheets("calc").Cells(Rows.Count, 1).End(xlUp).Row
For I = 3 To lastRowCalc
Sheets("Data1").Cells(I, 1) = "=IF(calc!A" & I - 2 & "<>"";calc!A" & I - 2 & ";"")"

    Next I
Viele Grüße,

Herbert


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Robert
Geschrieben am: 04.08.2014 14:25:09

Hallo Herbert,

die alte Qual, Formeln via VBA zu schreiben.
Du musst alle Anführungszeichen, die in der Formel vorkommen, verdoppeln!
Da auf Fehlersuche zu gehen ist alles andere als meine Lieblingbeschäftigung :)

Keiner ist dir böse, wenn du einen neuen Thread aufmachst mit der Frage, wie denn diese IF Funktion in VBA auszusehen hat, damit sie funktioniert.

Viele Grüße
Robert


  

Betrifft: AW: Weil ich es grad in der Hand hab von: Herbert
Geschrieben am: 04.08.2014 14:38:49

Hallo Robert,
vielen Dank. Nächstes Mal mache ich auch direkt einen neuen Thread auf. Konnte es lösen, indem ich (wie du schon geschrieben hast) die Anführungszeichen verdoppelt haben UND alle Semikolons durch Kommas ersetzt habe.

Viele Grüße,

Herbert


 

Beiträge aus den Excel-Beispielen zum Thema "Tabellen Daten zusammenführen"