Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Anzeige
Inhaltsverzeichnis

Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))

Forumthread: Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))

Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))
06.12.2024 17:52:36
Manfred Welke
Hallo,
ich möchte die Werte aus einer PQ-Abrage ohne Formatierung usw. in eine neue Tabelle kopieren, dabei die Spaltenreihenfolge umstellen. Da es viele Abfragen mit vielen Daten sind, wollte ich um Zeit zu gewinnen, folgende Anweisung verwenden:

Worksheets("Tabelle2").Range("Cells(1,1),Cells(2,1)) = Range(Cells(1, 1), Cells(2, 1)).Value

bekomme leider den Fehler "Laufzeitfehler '1004'"

Die folgende Anweisung hingegen funktioniert.

Worksheets("Tabelle2").Range("A1:A2") = Range(Cells(1, 1), Cells(2, 1)).Value

Worin liegt hier der Fehler?

Vielleicht gibt es noch eine elegantere Lösung.
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))
06.12.2024 18:15:39
daniel
Hi
1. wenn du eine Range über zwei Zellen definierst (Range(Cells(), Cells()), dann muss sichergestellt sein, dass die übergeordnete Range auch auf dem selben Tabellenblatt liegt wie die beiden Cells, die die Range definieren sollen
2. ein Range, Cells, Rows oder Columns ohne Tabellenblattangabe davor wird IMMER auf das aktive Tabellenblatt bezogen!
3. kleine Ausnahme für 2.: fehlt bei einem Range die Tabellenblattangabe, dann wird das Tabellenblatt der beiden Cells verwendet.

dh ein: Worksheets("Tabelle2").Range("Cells(1,1),Cells(2,1)) funktioniert nur dann, wenn die Tabelle2 zufälligerweise das aktive Tabellenblatt ist. ansonsten wird Regel 1 verletzt.

der korrekte Code wäre hier: Range(Worksheets("Tabelle2").Cells(1,1), Worksheets("Tabelle2").Cells(2,1))

Gruß Daniel

Anzeige
AW: Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))
06.12.2024 21:37:24
Uduuh
Hallo,
du könntest auch
With Worksheets("Tabelle2").Cells(1,1).Resize(2)

.Value = .Value
End With

schreiben.

Gruß aus'm Pott
Udo
AW: Eine weitere Schreibweise
06.12.2024 22:28:09
GerdL
Tabelle2.Cells(1, 1).Resize(2, 1) = Tabelle1.Resize(2, 1).Value

Gruß Gerd
Anzeige
AW: Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))
06.12.2024 21:44:45
daniel
Du hast die Eingangsfrage auch wirklich gelesen???
AW: Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))
06.12.2024 18:52:28
emkaes
Hallo,

Worksheets("Tabelle2").Range("Cells(1,1),Cells(2,1)) = Range(Cells(1, 1), Cells(2, 1)).Value 


wenn das Tüddel Tüddel vor Range("Cells(1,1) kein Übertragungsfehler deinerseits ist, dann ist das eine mögliche Fehlerursache
Anzeige
AW: Range("A1:A2") vs. Range(Cells(1,1),Cells(2,1))
06.12.2024 18:59:01
Manfred
Hallo Daniel,
danke für die ausführliche Erklärung, hab's verstanden und jetzt klappts auch. Mal sehen, was das dann als Zeitgewinn bringt.
Manfred
Zeitgewinn?
06.12.2024 20:32:51
RPP63
Moin!
Was soll das Ansprechen einer einzigen Zelle für einen Zeitgewinn bringen?
Vielleicht erklärst Du mal Deine eigentliche Intention.

Gruß Ralf
Anzeige
AW: Zeitgewinn?
07.12.2024 13:42:40
Manfred Welke
Hallo Ralf,

es geht um den Import von bis zu hundert PDF-Dateien mit vielen Seiten per PQ, wobei die Spalten nach Vorgabe neu angeordnet werden müssen. Diese PDF-Dateien werden in einem Rutsch umgewandelt. Alle Seiten einer PDF-Datei gelangen dann komplett in eine einzige Tabelle, die dann aktuell per "Selection.PasteSpecial Paste:=xlPasteValues" in eine neue Tabelle kopiert wird und anschließend die Spalten neu angeordnet werden.

Auf meinem Ryzen 5 3600 mit 32GB RAM und einer 2TB NVRAM-SSD an PCI-Express 4.0 und einer 8GB GPU dauert ein Übungsset mit 25 PDF-Dateien und insgesamt 82 Seiten zur Zeit ca. 210 Sekunden, also über 3 Minuten. Daher bin ich auf der Suche nach Möglichkeiten der Zeitersparnis. Die "echten" PDF-Dateisets sind wesentlich umfangreicher und der Zielrechner leider etwas schwächer.

Ich hoffe, daß Dir diese Erklärung reicht,
Manfred
Anzeige
AW: Zeitgewinn?
07.12.2024 14:31:08
Yal
Hallo Manfred,

das Ergebnis einer PQ-Abfrage ist eigentlich befreit von Formeln und daher ist "kopieren-als Wert einfügen" nicht unbedingt notwendig.

Die Aktualisierung der PQ-Abfrage ist auch nicht an der klassischen Excel-Berechnung gekoppelt. Diese muss einzeln angestoßen werden.
Ich sehe hier die Notwendigkeit der Kopie auch nicht.

Höchstens könntest Du die Ergebnis-Tabelle von der Anfrage trennen. Sollte aber nicht notwendig sein.

Eine letzte Möglichkeit wäre die aufwändige, aber einmalige Verarbeitung von dem anschließenden, wiederholenden Verwendung (Analyse, Weiterberechnung,...) zu trennen, in dem das Ergebnis der Verarbeitung der PDF in einer Textdatei gespeichert wird. Der Inhalt dieser Datei kann jederzeit mit PQ in Excel eingeholt werden.

An die Verarbeitungszeit der PDF kommst Du aber nicht vorbei. Du musst nur vermeiden, dass diese zu oft gemacht werden muss.
Z.B. mit einer Strategie, um nur die neuen PDF zu verarbeiten.

VG
Yal
Anzeige
AW: Zeitgewinn?
07.12.2024 16:55:29
Manfred Welke
Hallo Yal,
Du hast ja grundsätzlich recht. Aber die Spalten müssen umgestellt werden. Das habe ich bisher durch Verschieben der Spalten gemacht. Mir ist nur aufgefallen, daß Excel dabei doch manchmal "Denkpausen" eingelegt hat. Daher der Versuch, die Spalten in eine leers Blatt an die richtigen Stellen zu kopieren. Bin gerade dabei, mit den verschiedenen Lösungsvorschlägen auf einen eventuellen Zeitgewinn zu testen.

Was etwas unpraktisch ist, daß man in Excel VBA kein Const Array mit Werten vorbelegen kann, um eine Zuordnung der Quell- und Zielspalten zu erreichen. Mußte ich dann als Zuweisung zu Beginn der gesamten Routine machen.

Ich habe aber noch immer keine klare Begründung, warum die A1-Referenzierung immer funktioniert, die Z1S1 über Cells aber nicht immer (mein ursprüngliches Problem).

Manfred
Anzeige
AW: Zeitgewinn?
07.12.2024 18:31:53
daniel
Aber die Spalten müssen umgestellt werden. Das habe ich bisher durch Verschieben der Spalten gemacht.

Wenn viele Spalten neu angeordnet werden müssen, dann probier's mal mit Sortieren.

Dh in eine Zeile unterhalb der Daten wird die neue Reihenfolge geschrieben und dann wird die Tabelle danach sortiert.
Beim Sortieren ist Excel sehr schnell.

Gruß Daniel
Anzeige

Forumthreads zu verwandten Themen

Anzeige
Anzeige