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 Werte von Excel Tabellenblättern einer Datei zusammenfügen

Mitglied: Shaggy84

Shaggy84 (Level 1) - Jetzt verbinden

13.03.2007, aktualisiert 15.03.2007, 9456 Aufrufe, 16 Kommentare

Hallo Experten,

ihr habt Fachwissen und ich nur Ahnung, deswegen muss ich mich hier mal zu Wort melden

Folgendes Problem:
Ich habe eine Excel Datei mit mehreren Tabellen. Diese Tabellen sind wiederrum verformelt, da Sie Werte aus anderen Dateien importieren und erstellen.

Ich möchte gerne am Anfang der Datei eine Tabelle "Import" via VBA füllen, die die nachfolgenden (variabel 3-5) Tabellen "Server *" zusammenfasst. Die Überschriften bis zur siebten Spalte sind immer die gleichen, ab dann kommen verschiedene Werte. Ich kann es nicht einfach kopieren oder verknüpfen, da diese Datei beim Start unterschiedlich viele Datensätze in die einzelnen Tabellen importiert. Es sollen also auch keine leeren Zeilen entstehen und nur die Werte übertragen werden, mit Formeln kann ich nichts anfangen. Am Ende der Datei stehen noch zwei andere Tabellen die außen vor sind.

Hört sich also ziemlich kompliziert an, ich habe auch schon ein Makro gefunden, nur leider funktioniert dieses nicht:

01.
Sub Tabellen_zusammenfügen()
02.
letztesBlatt = ActiveWorkbook.Sheets.Count
03.
For i = 2 To ActiveWorkbook.Sheets.Count - 2
04.
Sheets(i).Select
05.
letzteZeile = Range("A65536").End(xlUp).Row
06.
If letzteZeile > 7 Then
07.
Rows("8:" & letzteZeile).Select
08.
Selection.Copy
09.
Sheets("Import").Select
10.
Range("A" & Range("A65536").End(xlUp).Row + 1).Select
11.
ActiveSheet.Paste
12.
Application.CutCopyMode = False
13.
End If
14.
Next i
15.
End Sub
Aus Formeln nur die Werter abzuleiten ging doch irgendwie mit ".PasteSpecial Paste:=xlValues" oder?

Facts: Excel 2003 / Win 2000

Bin für jede VBA Hilfe dankbar ;)
Mitglied: bastla
13.03.2007 um 19:15 Uhr
Hallo Shaggy84 und willkommen im Forum!

Da gerade keine Experten in der Nähe sind, versuche ich es mal ...

Eigentlich sieht der Code schon recht vernünftig aus. Aus der gewählten Vorgangsweise ergibt sich nur eine kleine Einschränkung: Es wird immer auf die Spalte A abgestellt, um den Umfang der zu kopierenden Daten bzw den Ort des Einfügens festzustellen. Sofern in allen Tabellenzeilen, die kopiert werden sollen, in Spalte A ein Inhalt steht, ergibt sich daraus aber kein Problem.

Konkret ändern müsstest Du, wie vermutet, nur die "Paste"-Zeile - versuch es einmal mit
01.
Selection.PasteSpecial Paste:=xlPasteValues
Nur als Anmerkung: Die Zeile 2 erfüllt keinen nachvollziehbaren Zweck und könnte daher ersatzlos gestrichen werden.

HTH
bastla
Bitte warten ..
Mitglied: Iwan
14.03.2007 um 08:10 Uhr
wenn ich die Datei mal bekommen könnte, könnte ich Dir da sicherlich ein Makro zu basteln
Bitte warten ..
Mitglied: Shaggy84
14.03.2007 um 09:55 Uhr
Danke "bastla"!

Das funktioniert schon soweit ganz gut, ich habe nur noch zwei Probleme

Erstens habe ich in den Ausgangstabellen auch noch Zeilen, in der in einer Spalte jeweils eine Null vorkommt. Das liegt an dem Import aus einer anderen Datei, wenn er dort keine Datensätze findet. Eine "WENN xy > 0" Funktion zum importieren kann ich nicht anwenden, da dann wieder andere Funktionen, die auf die Spalte zurückgreifen (WENN > 0 usw.) "rumspinnen". Kann man das noch dahin abändern, dass der auch keine Zeilen mit 0 Werten kopiert?

Zweitens bräuchte ich ein weiteres Makro, das in der "Import" Tabelle ab Zeile 8 wieder alle Zeilen löscht. Damit man bei einem erneuten aufrufen der Datei oder des Makros andere Datensätze zusammenfassen kann.

Evt. kann man ja auch mein erstes Problem mit einem Lösch Makro beheben, quasi lösche alle Zeilen, in denen in Spalte B eine "0" vorkommt. Das ist vielleicht einfacher.

Danke aber nochmals für die erste Lösung, hat schon sehr geholfen
Bitte warten ..
Mitglied: Shaggy84
14.03.2007 um 09:57 Uhr
Würde ich gerne, kann ich aber leider nicht machen. Erstens sind die Dateien alle wiederrum zu anderen verknüpft und zweitens sind es vertrauliche Daten
Bitte warten ..
Mitglied: bastla
14.03.2007 um 11:03 Uhr
Hallo Shaggy84!

Für das jeweilige Löschen müsste folgendes genügen:
01.
Sub EntferneZeilen()
02.
Worksheets("Import").Range("8:65535").Clear
03.
End Sub
04.
 
05.
Sub EntferneNullen()
06.
Dim Zelle As Object
07.
For Each Zelle In Worksheets("Import").Range("B8", Range("B65536").End(xlUp))
08.
    If Zelle.Value = 0 Then Zelle.Clear
09.
Next
10.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
14.03.2007 um 11:38 Uhr
Hallo bastla!

das erste funktioniert perfekt. Ich hab mir zwar auch schon eins gebastelt, aber deines ist noch kürzer. Prima ;)

Zum zweiten mit den Nullen löschen habe ich mich glaube ich falsch ausgedrückt. In deinem Makro löscht er nur die Nullen aus den Zellen, ich würde ganz gerne dann die gesamte Zeile löschen lassen, so dass zwischen den Importen keine leeren Zeilen sind. Wenn ich dein Clear durch ein Delete ersetze zieht er mir nur Spalte B rauf, und das sehr langsam
Bitte warten ..
Mitglied: bastla
14.03.2007 um 12:40 Uhr
Hallo Shaggy84!

Wenn es weiterhin nur auf die Spalte "B" ankommt, würde das so aussehen:
01.
Sub EntferneNullen()
02.
Dim Zelle As Object
03.
For Each Zelle In Worksheets("Import").Range("B8", Range("B65536").End(xlUp))
04.
    If Zelle.Value = 0 Then Rows(Zelle.Row).Delete
05.
Next
06.
End Sub
Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
14.03.2007 um 13:20 Uhr
Hallo bastla!

dein Code funktioniert, aber aus irgendeinem Grund macht er den Durchlauf nur ca.75x, keine Ahnung warum.

Aus einem anderen Forum hat mir ® "losgehts" geantwortet und den Code direkt in den ersten mit hinein gepackt:

01.
Sub Tabellen_zusammenfügen() 
02.
Dim i As Integer 
03.
Dim letzteZeile As Long 
04.
Dim ZeileImport As Long 
05.
 
06.
With ActiveWorkbook 
07.
   For i = 2 To .Sheets.Count - 2 
08.
      letzteZeile = .Sheets(i).Range("A65536").End(xlUp).Row 
09.
      If letzteZeile > 7 Then 
10.
         ZeileImport = .Sheets("Import").Range("A65536").End(xlUp).Row + 1 
11.
         .Sheets(i).Rows("8:" & letzteZeile).Copy 
12.
         .Sheets("Import").Range("A" & ZeileImport).PasteSpecial _ 
13.
                                       Paste:=xlPasteValues 
14.
      End If 
15.
   Next i 
16.
   .Sheets("Import").Cells(1, 1).Select 
17.
  
18.
  'Zeilen mit Inhalt in Spalte B gleich 0 löschen: 
19.
   With Sheets("Import") 
20.
      For i = .Cells(Rows.Count, 2).End(xlUp).Row To 1 Step -1 
21.
         If .Cells(i, 2).Value = "0" Then Rows(i).Delete 
22.
      Next 
23.
   End With 
24.
End With 
25.
End Sub
Es kunktioniert auf jeden Fall beides und ich möchte mich bei dir für die Hilfe bedanken!!! Das hat mir wirklich sehr weitergeholfen.
Bitte warten ..
Mitglied: Shaggy84
14.03.2007 um 15:22 Uhr
Ich bins nochmal kurz,

gibt es eine kleine Abänderung, mit der man den Löschbefehl für die Zellen mit dem Inhalt "0" erst ab Zeile 8 laufen lassen kann?

Und gibt es eine Optimierung, vielleicht das er erst alle Zellen mit 0 markiert und dann löscht, es funktioniert zwar, aber dauert auch 15Minuten bei einer größeren Datei und dem einzelnen nach und nach löschen.

Vielleicht bekomme ich das ja auch noch selber hin :D
Bitte warten ..
Mitglied: bastla
14.03.2007 um 15:47 Uhr
Hallo Shaggy84!

Zumindest einmal das:
01.
For i = .Cells(Rows.Count, 2).End(xlUp).Row To <b>8</b> Step -1 
Grüße
bastla
Bitte warten ..
Mitglied: bastla
14.03.2007 um 16:47 Uhr
Hallo Shaggy84!

Zum "Löschen en bloc" fiele mir nur etwa folgende Vorgangsweise ein:

  • Allen Zeilen, die nicht gelöscht werden sollen, in einer freien Spalte eine laufende Nummer geben, für die zu löschenden Zeilen die Nummer 100000 eintragen.

  • Danach die ganze Tabelle nach dieser Spalte sortieren (wie lange das wieder dauern würde, kann ich auch nicht abschätzen - am Besten einmal vorweg testen, um den ev Zeitgewinn zu eruieren bzw die Strategie gleich zu verwerfen).

  • Jetzt die in einem Block am Ende stehenden Zeilen in einem einzigen Löschvorgang entfernen.

  • Abschließend die Nummerierungsspalte löschen.

Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
15.03.2007 um 14:51 Uhr
Hi bastla,

jo klappt natürlich, einfach nur die eine Zahl ändern. Man merkt schon das ich ein totaler VBA Newbie bin

Gibt es noch eine andere Möglichkeit, dass wenn ich nicht nur die Zeilen mit einer "0" löschen, sondern auch die "" leeren Zeilen löschen will, außer dieser Schleife hier die ich unter die andere druntersetzte? Quasi ein "0" "oder" "" in der Löschabfrage.

01.
'leere Zeilen in Spalte B löschen: 
02.
   With Sheets("Import") 
03.
      For i = .Cells(Rows.Count, 2).End(xlUp).Row To 8 Step -1 
04.
         If .Cells(i, 2).Value = "" Then Rows(i).Delete 
05.
      Next 
06.
   End With 
Gruß, Shaggy

P.S. Das mit dem anderen Löschen lass ich erstmal
Bitte warten ..
Mitglied: bastla
15.03.2007 um 15:00 Uhr
Hallo Shaggy84!

Kombiniert sähe das so aus:
01.
If .Cells(i, 2).Value = "" Or .Cells(i, 2).Value = "0" Then Rows(i).Delete 
Grüße
bastla

P.S.: Nur interessehalber - hast Du das Sortieren versucht, und wenn ja, wie lange dauert es im Vergleich zum Löschen nach obiger Vorgangsweise?
Bitte warten ..
Mitglied: Biber
15.03.2007 um 15:03 Uhr
Moin Shaggy,

für die Frage brauchen wir bastla's Mittagsruhe nicht stören...

If (.Cells(i, 2).Value = "" or If .Cells(i, 2).Value ="0") Then Rows(i).Delete

...wäre eine der Möglichkeiten.

Gruss
Biber

[Edit] das zweite "If " oben ist natürlich BullShit... bzw. ein Copy & Paste-Fehler. [/Edit]
Bitte warten ..
Mitglied: bastla
15.03.2007 um 15:12 Uhr
@Biber

Du bist ja so fürsorglich ...

Übrigens: Wenn Du noch Zeit hast, könntest Du das versehentlich hineinkopierte zweite "If" entfernen ...

Grüße
bastla
Bitte warten ..
Mitglied: Shaggy84
15.03.2007 um 15:21 Uhr
Danke bastla,

funktioniert wie immer perfekt!

Ich glaube so nen schnelle response hab ich sonst noch nie in einem Forum bekommen, vielen Dank!

Und Mittagspause gibts hier nur von 12:00-12:45Uhr

Das andere hab ich nicht ausprobiert, ich bin leider net so in der Tiefe was das Programieren angeht, mach eher was mit Hardware und dem Kaufmännischem.

Also, bis irgendwann mal wieder ;)
Bitte warten ..
Ähnliche Inhalte
Microsoft Office

Excel 2010: Tabellenblatt verknüpfen

gelöst Frage von honeybeeMicrosoft Office3 Kommentare

Hallo, kann ich in Mappe A eine Verknüpfung von einem Tabellenblatt aus Mappe B erstellen? Ich möchte keine Formelverknüpfung, ...

Microsoft Office

Excel Formatierung über gesamtes Tabellenblatt

gelöst Frage von Florian86Microsoft Office3 Kommentare

Hallo, ich habe das Problem das unsere Mitarbeiterin mit haufen Aufwand eine Tabelle erstellt hat und die gesamte Tabelle ...

VB for Applications

Excel Wert Abfrage

gelöst Frage von Florian86VB for Applications3 Kommentare

Hallo, ich möchte über ein Makro eine Abfrage machen leider komme ich nicht zum gewünschten Ergebnis. Ich habe 2 ...

Microsoft Office

Excel Tabellenblatt finden und Zeile kopieren

gelöst Frage von Florian86Microsoft Office3 Kommentare

Hallo, ich möchte anhand von Buttons einen Zugang bzw. einen Abgang auf bestimmte Tabellenblätter kopieren. Die Tabellenblätter entsprechen der ...

Neue Wissensbeiträge
iOS
WatchChat für Whatsapp
Tipp von Criemo vor 2 TageniOS3 Kommentare

Ziemlich coole App für WhatsApp User in Verbindung mit der Apple Watch. Gibts für iOS sowohl als auch für ...

iOS
IOS hat nen Cursor !!!
Tipp von Criemo vor 3 TageniOS5 Kommentare

Nette Funktion im iOS. iPhone-Mauszeiger aktivieren „Nichts ist nerviger, als bei einem Tippfehler zu versuchen, den iOS-Cursor an die ...

Off Topic
Avengers 4: Endgame - Erster Trailer
Information von Frank vor 5 TagenOff Topic2 Kommentare

Ich weiß es ist Off Topic, aber ich freue mich auf diesen Film und vielleicht geht es anderen hier ...

Webbrowser
Microsoft bestätigt Edge mit Chromium-Kern
Information von Frank vor 5 TagenWebbrowser5 Kommentare

Microsoft hat nun in seinem Blog bestätigt, dass die nächste Edge Version kein EdgeHTML mehr für die Darstellung benutzen ...

Heiß diskutierte Inhalte
Hosting & Housing
VMware VM mit über 1TB RAM für S4HANA
gelöst Frage von Leo-leHosting & Housing24 Kommentare

Hallo zusammen, wer hat Erfahrng und kann mir einen Tipp zum sizing von S4HANA Systemen geben? Wir möchten, zunächst ...

LAN, WAN, Wireless
WLAN und Ausmessung - Eine Glaubensfrage?
Frage von ptr2brainLAN, WAN, Wireless23 Kommentare

Liebe Experten, als Sys-Admin habe ich mir schon öfter die Frage gestellt, ob es sich beim Thema WLAN und ...

Drucker und Scanner
SW-Laserdrucker mit sechs Papierfächern gesucht
Frage von MOS6581Drucker und Scanner19 Kommentare

Moin, zur Abwechslung mal eine sonderbare Anforderung :) Ich suche einen S/W Laserdrucker (kein MFP), der sechs Papierfächer bzw. ...

Virtualisierung
Gebrauchte Server Hardware als Virtualisierungs-"Spielwiese"?
Frage von NixVerstehenVirtualisierung19 Kommentare

Einen wunderschönen guten Morgen zusammen, ich möchte mich gerne etwas tiefer mit dem Thema Virtualisierung beschäftigen und dazu ein ...