Friday, 14 August 2020

Lösen Sie extrem langsames Einfügen in Excel-Tabellen – The Spreadsheet Guru

Stoppen Sie den Wahnsinn!

Eine Sache, die mich bei Excel-Tabellen immer geärgert hat, ist, wie langsam es sein kann, große Datenmengen in sie einzufügen. Dies ist anscheinend auf eine Ineffizienz bei der Größenänderung eines Excel-Tabellenobjekts zurückzuführen (jeweils eine Zelle). Diese Ineffizienz hält seit Jahren an, und nachdem ich Minuten gewartet hatte, um neue Daten in Tabellen einzufügen, während ich monatliche Dateien aktualisiere, machte ich mich endlich daran, dieses Problem selbst zu lösen.

So lösen Sie dieses Problem manuell

Bevor ich einen programmatischen Weg finden konnte, um dieses Problem zu lösen, musste ich die Grundursache verstehen. Was letztendlich das Einfügen von Daten in eine Excel-Tabelle beschleunigt, ist das Erweitern der Tabellengröße vor dem Einfügen der Daten. Dazu müssen Sie die Größe Ihres neuen Datensatzes ermitteln und Zeilen / Spalten hinzufügen / entfernen, damit Ihre Zieltabelle dieselbe Größe wie Ihre Quelldaten hat.

Diese Lösung ist nicht schwierig, aber es kann umständlich werden, wenn Sie jeden Monat viele Tabellen aktualisieren (wie ich es derzeit bin). Schauen wir uns also an, wie ich ein VBA-Makro erstellt habe, um mein Problem zu lösen. Jetzt muss ich nur noch auf eine Schaltfläche klicken, um meine Daten schnell in meine Tabellen einzufügen.

So beheben Sie dieses Problem automatisch

Was macht dieser Code?

Dieser VBA-Code soll das Drücken der Schaltfläche Einfügen ersetzen. Bevor Sie den Code ausführen, sollten Sie sicherstellen, dass Sie Ihre Daten in den Code kopiert haben Zwischenablage und mindestens eine Zelle in Ihrer Zieltabelle ausgewählt haben (die Tabelle, deren Größe Sie ändern und einfügen möchten).

Sie werden zunächst aufgefordert anzugeben, ob Ihre kopierten Daten Ihre enthalten Kopfzeile oder wenn es nur Daten innerhalb der Daten enthält. Nachdem Sie Ihre Angabe gemacht haben, verkleinert oder erweitert der Code Ihre Tabelle und fügt die Werte in das Tabellenobjekt ein.

Wie funktioniert dieser Code?

1. Testen Sie, um sicherzustellen, dass sich etwas in der Zwischenablage befindet
Bevor wir zu weit in den Code vordringen, möchten wir sicherstellen, dass tatsächlich Daten in die Zwischenablage von Excel kopiert werden! Wir beginnen den Code mit der Überprüfung, ob etwas kopiert wurde (xlCopy) oder schneiden (xlCut) in die Zwischenablage. Wenn dieser Test fehlschlägt, benachrichtigen wir den Benutzer und beenden den Code.

2. Bestimmen Sie die „ActiveTable“
Der nächste Test, den wir durchführen möchten, bevor wir zu weit kommen, besteht darin, sicherzustellen, dass unser Benutzer eine Zelle in einer Tabelle ausgewählt hat. Zum Glück hatte ich diese kleine Funktionalität vor einiger Zeit erstellt und konnte den Code von meinem abrufen VBA mit Tabellenhandbuch. Wenn der Benutzer zufällig keinen gültigen Speicherort für das gewünschte Zieltabellenobjekt ausgewählt hat, müssen wir das Unterprogramm verlassen.

3. Lesen Sie die kopierten Daten aus der Zwischenablage
Um auf die Zwischenablage zugreifen zu können, müssen wir die verwenden GetFromClipboard Funktion. Das Problem ist, dass diese Funktion Teil der MS Forms 2.0-Objektbibliothek ist. Diese Bibliothek ist normalerweise deaktiviert, es sei denn, Sie haben ein Benutzerformular in Ihrem Projekt erstellt oder Sie haben die Liste der verfügbaren Bibliotheken manuell aufgerufen und aktiviert (VBE> Extras> Referenzen…).

Um die manuelle Aktivierung dieser Bibliothek zu umgehen, verwende ich die CreateObject Funktion und der Referenzcode (dieser verrückte lange Code) zum Aufrufen und Aktivieren der Bibliothek, warum der VBA ausgeführt wird. Nachdem dieser Code ausgeführt wurde, haben wir jetzt Zugriff auf die gesamte MS Forms 2.0-Bibliothek, einschließlich des Zwischenablageobjekts.

4. Berechnen Sie, wie viele Zeilen / Spalten benötigt werden
Als nächstes müssen wir die Daten analysieren, die wir aus der Zwischenablage abgerufen haben. Wenn Sie Zellen in die Zwischenablage kopieren, werden die Daten durch getrennt Tabs (vbTab) und Wagenrückgabe (vbCrLf). Was wir tun können, ist zu zählen, wie viele Wagenrückläufe sich in den in der Zwischenablage gespeicherten Daten befinden, und dies wird uns mitteilen, wie viele Zeilen wir haben. Wir können auch zählen, wie viele Registerkarten sich in der ersten Zeile des Datensatzes der Zwischenablage befinden, um die Spaltenanzahl zu bestimmen.

5. Ändern Sie die Größe der Tabelle
Jetzt sind wir beim zeitsparenden Teil! Da wir jetzt herausgefunden haben, wie viele Datenzeilen in die Zwischenablage kopiert wurden, können wir beginnen, die Größe der Tabelle zu ändern, bevor wir unsere Daten einfügen.

Zunächst müssen wir herausfinden, ob wir die Größe der Tabelle erweitern oder verringern müssen. Sie können dies einfach tun, indem Sie die Zeilenanzahl der ActiveTable mit der der Zwischenablage vergleichen. Nachdem dies festgelegt wurde, bereitet der Code entweder das Löschen von Tabellenzeilen vor oder fügt sie mit dem hinzu Größe ändern Funktion.

Der einzige schwierige Teil bei diesen Codes ist die Reihenfolge, in der die Größenänderung stattfindet. Wenn Sie Zeilen oder Spalten löschen, löscht Excel automatisch die Zwischenablage, sodass Sie nichts mehr einfügen müssen. Daher war es wichtig, die Minimierung des Tabellenbedarfs getrennt von Erweiterungsaktivitäten zu behandeln.

6. Einfügen der Daten (nur als Einfügewerte codiert)

Nachdem die Größe der Excel-Tabelle auf unsere Wahrscheinlichkeit angepasst wurde, können wir die Daten einfügen. Ich habe mich dafür entschieden, nur Werte einzufügen, aber Sie können den Code so ändern, dass der gewünschte PasteSpecial-Typ verwendet wird.



Source link

Der Beitrag Lösen Sie extrem langsames Einfügen in Excel-Tabellen – The Spreadsheet Guru erschien zuerst auf Anfänger Kurse.



from
https://fuer-anfaenger.info/loesen-sie-extrem-langsames-einfuegen-in-excel-tabellen-the-spreadsheet-guru/

No comments:

Post a Comment

Social Media Marketing Methoden | Aktuelle Tipps für Anfänger

So starten Unternehmen mit einer Social-First-Strategie durch Der Fokus auf Social First kann Unternehmen auch in Krisenzeiten Erfolg vers...