Startseite
» Gewusst wie
»
Bereinigen Sie Tabellenkalkulationstext mit einem wiederverwendbaren ONLYOFFICE-Makro.
Bereinigen Sie Tabellenkalkulationstext mit einem wiederverwendbaren ONLYOFFICE-Makro.
Für wiederholbare Tabellenbereinigungen erstellen Sie ein kleines JavaScript-Makro im Tabelleneditor, das nur den zu ändernden Textbereich auswählt, und testen es zunächst in einer Kopie der Arbeitsmappe. Das folgende Beispiel entfernt nicht druckbare Zeichen und überflüssige Leerzeichen aus einer E-Mail-Spalte, wobei alle Zeilen erhalten bleiben.
ONLYOFFICE-Makros werden im Editor ausgeführt und nutzen dessen Office JavaScript API. Die offizielle Dokumentation beschreibt den Arbeitsablauf weiterhin als Öffnen von „Ansicht > Makros“ , Schreiben oder Einfügen von Code und Ausführen im Editor. An diesem grundlegenden Vorgehen hat sich durch die aktuelle Dokumentation nichts geändert. Das Makro selbst ist ein veranschaulichendes, wiederverwendbares Skript und kein Testbericht. Siehe die ONLYOFFICE-Makro-Schnellstartanleitung und die Referenz zur Registerkarte „Ansicht“ des Tabellenkalkulations-Editors .
Erstellen Sie eine Sicherungskopie und legen Sie die Bereinigungsmaßnahmen fest.
Angenommen, eine Arbeitsmappe enthält eine Kontaktliste mit einer Kopfzeile in Zeile 1 und E-Mail-Adressen in Spalte B (B2 bis B500). Einige importierte Werte können Zeilenumbrüche, Tabulatoren oder führende und nachfolgende Leerzeichen enthalten. Dieses Beispiel bereinigt nur diese eine Textspalte. Passen Sie den Bereich an Ihr Tabellenblatt an, bevor Sie den Code ausführen.
Speichern Sie eine separate Kopie der Arbeitsmappe oder duplizieren Sie das Arbeitsblatt. Bewahren Sie das Original unverändert auf, bis Sie die Ergebnisse überprüft haben.
Stellen Sie sicher, dass der ausgewählte Bereich reinen Text und keine Formeln, IDs, die auf Leerzeichen basieren, oder Daten enthält, bei denen die exakten Abstände beibehalten werden müssen.
Die Kopfzeile darf nicht in den Bereich einbezogen werden. Das Makro erkennt keine Kopfzeilen und entscheidet nicht, welche Spalten gefahrlos geändert werden können.
Verwenden Sie einen spaltenspezifischen Bereich wie B2:B500 anstelle des gesamten verwendeten Bereichs. Das wahllose Bereinigen aller Zellen kann Namen, Adressen, Codes oder Formelergebnisse auf unerwünschte Weise verändern.
In dieser beispielhaften Editoransicht werden die Registerkarte „Ansicht“ und der Befehl „Makros“ über dem Arbeitsblatt angezeigt. Öffnen Sie diese Ansicht, nachdem Sie eine Arbeitskopie erstellt und die Spalte mit dem zu bereinigenden Text ermittelt haben.
Öffnen Sie den Makro-Editor und fügen Sie das Skript hinzu.
Öffnen Sie die Arbeitsmappe im ONLYOFFICE Tabelleneditor. Wählen Sie „Ansicht“ > „Makros“ , um den Makro-Editor zu öffnen, und erstellen Sie anschließend ein Makro oder ersetzen Sie den vorhandenen Code. ONLYOFFICE-Makros verwenden JavaScript-Syntax und die Office-API; es handelt sich nicht um VBA-Makros. Der Makro-Workflow des Editors und die unterstützten API-Methoden werden in der offiziellen Makro-Einführungsanleitung beschrieben .
Fügen Sie dieses Beispiel ein und ersetzen Sie es anschließend B2:B500durch Ihren tatsächlichen Textbereich:
(function () {
var sheet = Api.GetActiveSheet();
var range = sheet.GetRange("B2:B500");
var rows = range.GetValue();
var functions = Api.WorksheetFunction;
for (var i = 0; i < rows.length; i++) {
var value = rows[i][0];
if (typeof value === "string") {
value = functions.CLEAN(value);
rows[i][0] = value.replace(/^\s+|\s+$/g, "")
.replace(/\s{2,}/g, " ");
}
}
range.SetValue(rows);
})();
Das Makro liest den Bereich in ein zweidimensionales Array ein, verarbeitet die String-Zellen und schreibt das Array zurück in denselben Bereich. CLEANNicht druckbare Zeichen werden entfernt; die beiden regulären Ausdrücke entfernen Leerzeichen an den Rändern und reduzieren wiederholte Leerzeichen innerhalb eines Strings auf ein einzelnes Leerzeichen. Die API-Referenz bestätigt, dass GetValueein zweidimensionales Array für einen Bereich zurückgegeben werden kann und dass SetValueArrays akzeptiert werden; die Referenzen zu GetValue , SetValue und CLEAN dokumentieren diese Aufrufe.
Da das Skript Werte zurückschreibt, sollten Sie es nicht auf Zellen mit Formeln verweisen: Formelzellen könnten durch ihre aktuellen berechneten Werte ersetzt werden. Außerdem entfernt es keine doppelten Datensätze, standardisiert nicht die Groß- und Kleinschreibung, prüft nicht, ob eine Adresse zustellbar ist, und ändert keine Telefonnummernformate. Dies sind separate Bereinigungsregeln, die unabhängig voneinander entwickelt und getestet werden sollten.
In dieser beispielhaften Makro-Editoransicht befinden sich der Codebereich und die Ausführungssteuerung oberhalb der aktiven Tabelle. Das Bereinigungsskript des Artikels verwendet die dokumentierten Methoden zum Lesen und Schreiben von Bereichen, die hier als vereinfachtes API-Beispiel dargestellt sind.
Führen Sie es auf einem kontrollierten Bereich durch.
Überprüfen Sie den Bereichsliteral noch einmal. Wenn die Liste beispielsweise in Zeile 240 endet, verwenden Sie B2:B240, anstatt Hunderte von ungenutzten Zeilen zu verarbeiten.
Klicken Sie im Makro-Editor auf „Ausführen “. Falls der Editor einen Syntaxfehler meldet, überprüfen Sie Anführungszeichen, Klammern und geschweifte Klammern, bevor Sie den Bereich ändern oder weitere Logik hinzufügen.
Kehren Sie zum Arbeitsblatt zurück und überprüfen Sie mehrere Zellen, darunter einen Wert, der bereinigt werden muss, einen Wert, der bereits das richtige Format aufweist, und eine leere Zelle.
Die Verwendung eines kleinen Bereichs erleichtert das Verständnis des Effekts. Sobald die Ausgabe korrekt ist, können Sie das Makro auf einem anderen Tabellenblatt wiederverwenden, indem Sie den Bereich gezielt anpassen. Gehen Sie nicht davon aus, dass ein Spaltenbuchstabe oder eine Zeilengrenze in einer anderen Arbeitsmappe weiterhin gültig ist.
Fehlt der Befehl „Makros“ oder lässt sich der Code nicht ausführen, prüfen Sie, ob Makros im Editor aktiviert oder in der Host-Anwendung deaktiviert sind. Im Online-Editor kann ein Administrator die Makro-Verfügbarkeit steuern; die erweiterten Einstellungen des Tabellenkalkulations-Editors beschreiben die Makro-Optionen für den Benutzer. Vermeiden Sie die automatische Ausführung von Dateien unbekannter Herkunft; führen Sie nur Code aus, den Sie verstehen.
Dieses illustrative Kontaktblatt zeigt eine praktische Art von Daten für ein Textbereinigungs-Makro, vorausgesetzt, der ausgewählte Bereich enthält nur das gewünschte Textfeld und schließt die Kopfzeile aus.
Überprüfen Sie das Ergebnis, bevor Sie das Makro wiederverwenden.
Vergleichen Sie die bereinigte Spalte mit dem Original, anstatt den Erfolg nur anhand des Aussehens zu beurteilen. Stellen Sie sicher, dass sich alle nicht leeren E-Mail-Adressen in derselben Zeile befinden, kein Kontakt fehlt und die einzigen Unterschiede die Zeichen und Leerzeichen sind, die Sie normalisieren wollten. Prüfen Sie Stichproben am Anfang, in der Mitte und am Ende des ausgewählten Bereichs. Suchen Sie nach Leerzeichen am Anfang oder Ende eines Wertes, sofern Ihr Editor dies anzeigt, und überprüfen Sie importierte Werte, die zuvor Zeilenumbrüche oder Steuerzeichen enthielten.
Vergleichen Sie außerdem die Zeilenanzahl und alle abhängigen Formeln, Filter oder Suchvorgänge, die die Spalte verwenden. Falls sich ein Formelergebnis unerwartet geändert hat, machen Sie die Bearbeitung rückgängig oder stellen Sie die Arbeitskopie wieder her. Das Makro sollte auf reine Textzellen beschränkt sein. Bei größeren oder geschäftskritischen Arbeitsmappen vergleichen Sie die bereinigte Spalte vollständig mit der Sicherungskopie oder verwenden Sie zunächst eine separate Ausgabespalte, damit die Änderungen nachvollziehbar bleiben.
Dieses Beispielblatt zeigt die ursprünglichen und die bereinigten E-Mail-Spalten nebeneinander mit der gleichen angezeigten Zeilenanzahl; vergleichen Sie Ihre tatsächlichen Werte, bevor Sie sich auf die bereinigte Spalte verlassen.
Sorgen Sie dafür, dass die Reinigung wiederholbar ist.
Nach erfolgreichem ersten Durchlauf speichern Sie die Arbeitsmappe, damit das Makro gemäß dem Makro-Workflow des Editors weiterhin verfügbar ist. Ein in einer Arbeitsmappe gespeichertes Makro wird nicht automatisch in jeder neuen Datei angezeigt. Verwenden Sie für wiederkehrende Importe eine saubere Vorlage oder eine geschützte Quellkopie, dokumentieren Sie den vom Makro erwarteten Bereich und aktualisieren Sie ihn bei Änderungen des Tabellenblattlayouts. ONLYOFFICE-Makros eignen sich für deterministische Bereinigungsregeln; sie können nicht entscheiden, ob ein Wert korrekt ist oder ob eine Änderung für Ihren Datensatz angemessen ist.
Das bewährte Vorgehen ist einfach: eine Quellkopie erstellen, einen bekannten Bereich auswählen, eine definierte Transformation durchführen und das Ergebnis vergleichen, bevor die Daten weitergegeben oder an anderer Stelle importiert werden.