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, 9393 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 2013 Werte aus Dateien in ein Tabellenblatt zusammenführen

Frage von DerGueMicrosoft Office

Hallo zusammen, vielleicht kann mir hier jem. helfen. Ich habe ca. 50 gleich aufgebaute Dateien (Einsatzlisten) in einem Ordner ...

Microsoft Office

Innerhalb bestehender Excel Datei bestimmte Tabellenblätter per VBA zusammenfügen

Frage von thomas1972Microsoft Office1 Kommentar

Hallo, irgendwie komme ich hier nicht weiter, ich habe eine Excel Datei mit x Tabellenblättern , hiervon möchte ich ...

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 ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...