Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1912to1916
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

Nur Daten mit Inhalt kopieren

Nur Daten mit Inhalt kopieren
02.01.2023 14:43:59
Peter
Hallo zusammen,
von einer Datenquelle (Daten) sollen immer nur die neusten Daten zur weiteren Verarbeitung erfasst werden (diese sind mal 10.000 mal 100.000 Zellen).
Alle Daten werden dafür zunächst mit einer Formel in ein Woksheet:Tabelle2 übertragen und sortiert (nicht relevante Daten werden als "" ausgegeben - Beispiel: =WENN(Daten!D9>Tabelle1!$B$2;Daten!F9;"").

Sub Final()
Application.DisplayAlerts = False
Dim wksTab As Worksheet
Sheets("Tabelle2").Select
ThisWorkbook.Worksheets(Array("Tabelle2")).Copy
With ActiveWorkbook
For Each wksTab In .Worksheets
wksTab.Cells.Copy
wksTab.Cells(1, 1).PasteSpecial Paste:=xlValues
Next wksTab
Application.CutCopyMode = False
End With
ActiveWorkbook.SaveAs Filename:= _
"S:\Pfad\Datei.xlsb" _
, FileFormat:=xlExcel12, CreateBackup:=False
ActiveWorkbook.Close
Application.DisplayAlerts = True
End Sub
Ziel soll es sein, dass nur die Zellen" mit einem tatsächlichen Inhalt in das neue File kopiert werden (damit das File mit den relevanten Daten so klein wie möglich bleibt). Das Makro funktioniert letztlich aber nicht zu 100%, da die "leeren Daten" zwar ohne Wert/Formel kopiert werden (also leer erscheinen), Excel diese aber dennoch irgendwie als Wert oder Zelle mit Inhalt interpretiert (obwohl leer). Habt Ihr eine Idee wo der Fehler liegt. Wenn man mit den kopierten Daten eine Pivot-erzeugt, werden alle leeren Zellen aus dem Ursprungsfile mit einem Bezugs-Fehler ausgegeben.

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Nur Daten mit Inhalt kopieren
02.01.2023 15:39:16
Daniel
HI
Das Problem ist, dass das Formelergebnis "" für Excel ein Text ist, da Zellen mit Formel keine Leerzelle sein können.
Das bleibt auch so, wenn du so eine Formel kopierst und als Wert einfügst. Excel behält dann für die Zelle den Typ TEXT bei.
Eine Typumwandlung des Textes "" in eine echte Leerzelle findet nur dann statt, wenn du
- den Wert "" über .Value= oder .Formula= in die Zelle einfügst, oder
- ein Ersetzen ausführst, bei dem das Ergebnis des Ersetzens "" ist.
probiers also mal so:

For Each wksTab In .Worksheets
with wksTab.Usedrange
.Formula  = .Value
end with
Next wksTab
oder so

        For Each wksTab In .Worksheets
With wksTab.UsedRange
.Copy
.PasteSpecial Paste:=xlValues
.Replace "", "#!#", xlwhole
.Replace "#!#", "", xlwhole
end with
Next wksTab
bei deiner Datenmenge könnte es sein, dass die zweite Variante besser ist, aber das müsstest du mal testen.
"#!#" ist ein Zeichenfolge, die so in den Zellen regulär nicht vorkommt.
Gruß Daniel
Anzeige

311 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige