Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

gelöst VBA für Excel zum Zusammenführen von Tabellen in Blättern

Mitglied: Fusselfrei

Fusselfrei (Level 1) - Jetzt verbinden

18.09.2009 um 16:59 Uhr, 13429 Aufrufe, 10 Kommentare

Liebes Forum,

ich habe als VBA-Neuling ein (für mich) großes Vorhaben:

Eine Excel-Datei (2007) enhält mehrere Blätter mit diversen Nachnamen (z.B. Müller, Becker, Koch, ... Lüdenscheid)

Die Tabellen in den Blättern sehen so aus:

Vorname Datum1 Datum2 Typ1 Typ2
Name1 02.03. 21.04. E1 E4; E7
Name2 04.08. E2 E6; E9
Name3 26.09. 07.09. E4
... ... ... ... ...
Namex 07.08. 08.08. E1 E4; E7

Die Anzahl der Spalten in den Blättern beträgt 5,
die Tabellen sind unterschiedlich lang (z.B. bis Name3 oder Name6),
teilweise sind Felder leer.

Ich möchte aus allen Blättern ( Müller, Becker, Koch, ... Lüdenscheid) die Tabelleninhalte in eine neue Tabelle in ein neues Blatt kopieren.

Was muss ich dazu lernen und wissen? Oder könnte mir sogar jemand einen Vorschlag machen?

Vielen Dank im Voraus!
Mitglied: Biber
18.09.2009 um 18:59 Uhr
Moin Fusselfrei,

willkommen im Forum.

ein paar Nachfragen.
Wo zum Gates kauft ihr eure Nicknames?

Wenn die ZeilenAnzahl unteschiedlich ist - okay.
Ist aber umgekehrt gewährleistet, das die Spalten-Anzahl und Reihenfolge in allen Sheets identisch ist?

Wenn ja- kann dann die Zeile 1 (mit den Spaltenüberschriften) blind aus dem erst(best)en Bladel übernommen werden und aus allen folgenden Blättern eben alles ab Zeile 2?

Und grundsätzlich: Eine Office-Automation lohnt sich doch nur,
  • wenn es zwar eine einmalige Aktion ist mit dem Zusammenführen, es aber -zig Sheets sind, die Du sonst Copy&Pasten müsstest
-oder-
  • wenn es eine immer wiederkehrende Aktion ist, die dich die kommenden Monate & Jahre begleitet

Falls es Fall B ist, empfehle ich den Prozess zu ändern und keinen Aufwand in diesen ja doch gut 30-Zeilen-makro zu stecken.
Und falls Fall A, dann wüsste ich schon gern, ob "-zig Tabellenbätter" wirklich mehr als 3 sind.

Grüße
Biber
Bitte warten ..
Mitglied: Fusselfrei
19.09.2009 um 12:26 Uhr
Hallo Biber,

danke für den netten Empfang! Vielleicht hätte ich meinen Nicknamen nicht als Sonderangebot kaufen sollen...

Bei mir trifft Fall A ein (und später ggf. Fall B):

Ich möchte eine "Zusammenfassung" von Recherchen erstellen:

Aus Recherchen habe ich ca. 50 Sheets mit Rechercheergebnissen.
Die Namen der Sheets sind wie ich sagte "kunterbunt" (z.B. Müller, Becker, Koch)

Die SpaltenAnzahl und Reihenfolge der relevanten Rechercheergebnisse sind in allen Sheets identisch (Vorname, Datum1, Datum2, Typ1, Typ2) und beginnen stets an der gleichen Position (z.B. ab D9 bis H9)

Die Anzahl der Rechercheergebnisse unterscheiden sich, d.h.die ZeilenAnzahl ist unteschiedlich.


Später soll Fall B eintreffen, d.h. neue Recherchen mit neuen Rechercheergebnissen sollen zur "Zusammenfassung" hinzugefügt werden.

Vielen Dank im Voraus!

Fusselfrei
Bitte warten ..
Mitglied: 76109
19.09.2009 um 15:34 Uhr
Hallo Fusselfrei!

Bleibt für mich noch die Frage? Was soll mit den Tabellen-Nachnamen passieren?

Gruß Dieter
Bitte warten ..
Mitglied: Biber
19.09.2009 um 16:05 Uhr
Moin didi1954,

rein pragmatisch würdfe ich anregen, zwei neue Spalten rechts daneben anzulegen - eine mit dem bisherigen Blattnamen "Müller" etc und noch eine Spalte mit der laufenden Nummer des Quell-Blatts, falls mal ein doppelter Müller auftaucht.
Okay, ist jetzt nicht zu erwarten, wenn alle Sheets in einer Excel-Datei sind, aber langfristig kann es auftreten bei Plan B.

Grüße
Biber
Bitte warten ..
Mitglied: 76109
19.09.2009 um 17:27 Uhr
Hallo Biber!

Ich bleibe mal bei Plan A und würde dabei rein pragmatisch gesehen, die Nachnamen in die 1. Spalte schreiben und die anderen Spalten um 1 nach rechts verschieben. Würde zumindest mir, von der Optik her bessser gefallen

Bei Plan B bleibt die Frage, ob die bisherigen Einträge in den einzelnen Sheets erhalten bleiben und neue hinzugefügt werden oder wie ist das gedacht?

Gruß Dieter
Bitte warten ..
Mitglied: Fusselfrei
19.09.2009 um 18:28 Uhr
Hallo Dieter und Biber!

"Müller, Becker, Koch" war in meiner obigen Frage nicht wirklich richtig (Entschuldigung!)

Die Blätter sind nach dem Recherche-Datum benannt, wobei auch mehrere Recherchen (mit anderen Kriterien) pro Tag vorhanden sein können, d.h. die Blätter heißen z.B. 16.12.07 bei der ersten Recherche am 16.12.07,
bei einer zweiten Recherche am gleichen Tag 16.12.07 (2),
dann 16.12.07 (3) usw.

Zu Deinem Vorschlag Biber:
Den Blättern eine laufende Nummer zu vergeben ist zum jetzigen Zeitpunkt (bei 50 Sheets) noch gerade machbar (was den Arbeitsaufwand und die Monotonie betrifft).

Wie realisiere ich denn dann ein "Parsen" durch die Sheets, in denen dann jeweils in einer Spalte bzw. Zelle eine laufende Nummer des Sheets stünde ohne die Namen der Sheets verändern zu müssen?

Zu Deiner Frage Dieter:
Die Namen der Sheets sind zum jetzigen Zeitpunkt für mich irgendwie "logisch". Daher möchte ich diese ursprünglichen Blätter-Namen irgendwie "aufheben".

Grüße
Roland
Bitte warten ..
Mitglied: Biber
19.09.2009 um 19:27 Uhr
Moin Fusselfrei,

zu Deiner Frage
Zu Deinem Vorschlag Biber:
Den Blättern eine laufende Nummer zu vergeben ist zum jetzigen Zeitpunkt (bei 50 Sheets)
noch gerade machbar (was den Arbeitsaufwand und die Monotonie betrifft).

Nein, nein.. nicht manuell und mit Zusatzaufwand.
didi1954 und oder ich werden ha ohnehin in irgendeiner Schleife über die vorhandenen Sheets schrapeln und dabei von 1 bis 50 zahlen. und diese 1 bis 50 können wir dabei "nebenbei" in eine weitere Spalte schreiben, genau wie die ja einzig identifizierende Quellinformation, den bisherigen Namen des Sheets.

Dann kannst Du später sowohl mit "Daten"->"Autofilter" (oder wie immer das unter Excel 2007 heißen mag) danach schnell suchen oder auch den ganzen Klump mit "Teilsummen()" aufaggregieren... denn vermutlich ist das mittelfristige Ziel ja ein Vergleich mit Summen/Durchschnitt und Prozentwerten.

Also keine Angst: Du sollst weder etwas zusätzlich von Hand durchnummerieren noch die Blatt-Namen verlieren.

BTW, "Roland Fusselfrei" hört sich noch beknackter an "Fusselfrei"

Grüße
Biber
Bitte warten ..
Mitglied: 76109
20.09.2009 um 15:23 Uhr
Hallo Fusselfrei und Biber!

Nur so als Anmerkung. 50 Sheets umzubenamsen dauerte bei mir knapp 2 Minuten (rechte Hand Doppelklick und linke Hand Zahl eingeben)

Die fortlaufende Nummer kann man sich eigentlichen sparen, hab's aber trotzdem mal mit eingebunden.

Es wird angenommen, dass sich in den einzelnen Sheets in Spalte D9 unter den Vornamen keine sonstigen Einträge mehr befinden.

Das Tabellenblatt mit der Zusammenfassung (Konstante ListDaten = Name) wird automatisch erstellt, sofern noch kein's existiert.
Die Spalten (siehe Konstanten) A = Lfd.-Nr., B = Name Quell-Tabellenblatt und C:G = Quell-Tabelle.

So, diesen Entwurf habe ich dann mal zusammengeschrappelt:
01.
Option Explicit 
02.
 
03.
Const ListDaten = "Alle Daten"  'Tabellenblatt Alle Daten 
04.
 
05.
Const CopyRng = "D9"            'Kopieren Zelle 1 
06.
Const CopyBeg = "D"             'Kopieren Spalte 1 
07.
Const CopyEnd = "H"             'Kopieren Spalte n 
08.
 
09.
Const ListId = "A"              'Alle Daten Spalte Lfd-Nr. 
10.
Const ListName = "B"            'Alle Daten Spalte Tabellenname 
11.
Const ListPaste = "C"           'Alle Daten Spalte Datenkopie 
12.
 
13.
Sub InitDaten() 
14.
    Dim Wks As Worksheet, Found As Object, NextLine As Integer, Id As Integer 
15.
     
16.
    Call InitListSheet 
17.
     
18.
    Application.ScreenUpdating = False 
19.
     
20.
    For Each Wks In Worksheets 
21.
        If Wks.Name <> ActiveSheet.Name Then 
22.
            Set Found = Columns(ListName).Find(Wks.Name, LookIn:=xlValues, LookAt:=xlWhole) 
23.
            If Found Is Nothing And Not IsEmpty(Wks.Range(CopyRng)) Then 
24.
                NextLine = GetEndLine(ActiveSheet, ListPaste) + 1 
25.
                Cells(NextLine, ListId) = GetNextId():  Cells(NextLine, ListName) = Wks.Name 
26.
                Range(Wks.Range(CopyRng), Wks.Cells(GetEndLine(Wks, CopyBeg), CopyEnd)).Copy 
27.
                ActiveSheet.Paste Destination:=Cells(NextLine, ListPaste) 
28.
                Application.CutCopyMode = False 
29.
            End If 
30.
        End If 
31.
    Next 
32.
    Application.ScreenUpdating = True 
33.
End Sub 
34.
 
35.
Private Sub InitListSheet() 
36.
    Dim Wks As Worksheet 
37.
     
38.
    On Error Resume Next:  Set Wks = Sheets(ListDaten):  On Error GoTo 0 
39.
     
40.
    If Wks Is Nothing Then 
41.
        Sheets.Add Before:=Sheets(1):  ActiveSheet.Name = ListDaten 
42.
        With Range("A1:G1") 
43.
            .Value = Array("Lfd.-Nr.", "Blattname", "Vorname", "Datum1", "Datum2", "Typ1", "Typ2") 
44.
            .HorizontalAlignment = xlCenter 
45.
            .VerticalAlignment = xlCenter 
46.
            .Font.FontStyle = "Fett" 
47.
        End With 
48.
    Else 
49.
        Wks.Activate 
50.
    End If 
51.
End Sub 
52.
 
53.
Private Function GetEndLine(ByRef Wks, Col As String) As Integer 
54.
    GetEndLine = Wks.Cells(Wks.Rows.Count, Col).End(xlUp).Row 
55.
End Function 
56.
     
57.
Private Function GetNextId() As Integer 
58.
    Dim EndLine As Integer 
59.
    EndLine = GetEndLine(ActiveSheet, ListId) 
60.
    If EndLine = 1 Then GetNextId = 1 Else GetNextId = Cells(EndLine, ListId) + 1 
61.
End Function
Das Ergebnis sieht in etwa so aus:
Lfd.-Nr. Blattname Vorname Datum1 Datum2 Typ1 Typ2
1 Tabelle 1 Name Datum Datum Text Text
Name Datum Datum Text Text
Name Datum Datum Text Text
2 Tabelle 2 Name Datum Datum Text Text
... ... ... ... ...

Den Rest kannst Du ja entsprechend anpassen.

Gruß Dieter

[edit] Für den Fall das Copy-Tabelle leer ist: Zeile 23 geändert [/edit]
Bitte warten ..
Mitglied: Fusselfrei
20.09.2009 um 16:45 Uhr
Hallo Dieter!

Vielen herzlichen Dank!!
Es funktioniert einwandfrei!



Grüße
Fusselfrei
Bitte warten ..
Mitglied: 76109
22.09.2009 um 09:19 Uhr
Hallo Fusselfrei!

War jetzt reiner Zufall, dass ich Deine Textänderung entdeckt habe. Das nächstemal bitte eine seperate Antwort schreiben, damt auch eine Benachrichtigung erfolgt.

Deine Vornamenänderungswünsche sehe ich mir mal an

Gruß Dieter

PS. Ich glaube ich Häng. Hast Deinen Text während meines textens einfach gelöscht.???
Bitte warten ..
Ähnliche Inhalte
VB for Applications

EXCEL VBA Makro: Daten aus meheren Arbeitsblättern in einer Tabelle zusammenführen

Frage von arotcivVB for Applications5 Kommentare

Hallo, ich habe ein Excel Workbook, in dem durch ein Makro mehere neue Arbeitsblätter erzeugt werden. Die Anzahl der ...

VB for Applications

Excel VBA HTML-Tabelle auslesen

gelöst Frage von chef1568VB for Applications2 Kommentare

Hallo, ich möchte eine in einer Email eingebundenen HTML-Tabelle auslesen und in einen Array speichern. Hierzu habe ich bereits ...

Microsoft Office

EXCEL VBA Termindaten aus Tabelle Filtern

Frage von t3jxbusMicrosoft Office

Hallo, ich habe hier folgenden Codeblock gefunden für VBA im Excel: Das ganze funktioniert auch soweit super. Ich beschreibe ...

VB for Applications

Excel 2013 VBA Tabellen aufrufen

Frage von Just4fun1990VB for Applications5 Kommentare

Hallo Administrator.de User, ich habe leider folgendes Problem. Und zwar soll Excel bei einem inaktiven Fenster eine Tabelle aufrufen. ...

Neue Wissensbeiträge
Administrator.de Feedback
Update der Seite: Alles zentriert
Information von Frank vor 44 MinutenAdministrator.de Feedback4 Kommentare

Hallo User, die größte Änderung von Release 5.8 ist das Zentrieren der Webseite (auf großen Bildschirmen) und ein "Welcome"-Teaser ...

Humor (lol)

WhatsApp-Nachrichten endlich auch per Bluetooth versendbar

Information von BassFishFox vor 17 StundenHumor (lol)4 Kommentare

Genau darauf habe ich gewartet! ;-) Der beliebte Messaging-Dienst WhatsApp erhält eine praktische neue Funktion: Ab dem nächsten Update ...

Google Android

Googles "Android Enterprise Recommended" für Unternehmen

Information von kgborn vor 1 TagGoogle Android3 Kommentare

Hier eine Information, die für Administratoren und Verantwortliche in Unternehmen, die für die Beschaffung und das Rollout von Android-Geräten ...

Sicherheit

Intel gibt neue Spectre V2-Microcode-Updates frei (20.02.2018)

Information von kgborn vor 1 TagSicherheit

Intel hat zum 20. Februar 2018 weitere Microcode-Updates für OEMs freigegeben, um Systeme mit neueren Prozessoren gegen die Spectre ...

Heiß diskutierte Inhalte
Server-Hardware
Welche Rolle spielt Design bei Enterprise IT Hardware?
Frage von ApolloXServer-Hardware17 Kommentare

Ich arbeite für einen internationalen Elektronikhersteller in der Forschung und meine Aufgabe ist es, Feedback von Nutzern in Hinsicht ...

Windows Netzwerk
WSUS4 und Windows 10 Updates automatisch installieren
Frage von sammy65Windows Netzwerk15 Kommentare

Hallo miteinander, ich habe mit einen neuen WSUS Server aufgesetzt Server 2016 darauf einen aktuellen WSUS. Grund, wir stellen ...

Switche und Hubs
Cisco SG350X-48 AdminIP in anderes VLAN
Frage von lcer00Switche und Hubs14 Kommentare

Hallo zusammen, ich habe ein Problem mir einem Cisco SG350X-48 bei der Erstinstallation wurde eine IP 192.168.0.254 (Default VLAN ...

Speicherkarten
Vergessliche USB-Sticks?
Frage von hanheikSpeicherkarten14 Kommentare

Ich habe in den letzten Tagen 500 USB-Sticks mit Bilddateien bespielt. Obwohl ich die Dateien mit größter Sorgfalt kopiert ...