Ich erstelle eine Datenbank mit Geschäftsadressinformationen, einschließlich der wichtigsten Mitarbeiter für jedes Unternehmen. Die Google-Tabelle, die ich für dieses Projekt geerbt habe, enthält eine Spalte für "Schlüsselpersonal" (in Spalte B), in der mehrere Schlüsselpersonalnamen in derselben Zelle aufgeführt sind, die durch Zeilenumbrüche getrennt sind (dh CHAR (10)). Es gibt ein Geschäft pro Zeile. Die Anzahl der Zeilen in der Zelle "Schlüsselpersonal" variiert zeilenweise. Mein erstes Blatt sieht so aus:
Ich muss Folgendes tun, um dieses Blatt zu optimieren:
- Teilen Sie jede mehrzeilige 'Schlüsselstab'-Zelle so auf, dass jeder Schlüsselstabname in einer eigenen Zeile angezeigt wird. Dies erfordert, dass neue Zeilen unter die ursprüngliche Zeile eingefügt werden.
- Duplizieren Sie die Daten aus allen anderen Zellen in der ursprünglichen Zeile (dh aus den Spalten A und C: E), sodass jede neue Zeile die vollständigen Daten für jedes Unternehmen enthält
- Ich brauche einen automatisierten Prozess - ich muss ungefähr 1000 Unternehmen verarbeiten, kann dies also nicht mit manuellen Schritten tun
Das Blatt sollte dann so aussehen:
Die Verwendung ist =TRANSPOSE(SPLIT(B1,CHAR(10)))
offensichtlich nur ein Teil des Weges - es werden keine neuen Zeilen eingefügt und die umgebenden Spalteneinträge werden nicht dupliziert. Alle Hilfe dankbar angenommen!
Antworten:
Entschuldigen Sie zunächst die späte Antwort, aber ich habe eine Lösung, mit der Sie arbeiten können.
Code
Erklärt
Das Skript wertet jede Zeile und insbesondere die zweite Spalte jeder Zeile aus (in JavaScript basieren Arrays auf Null, sodass Spalte 2 dem Index 1 des Arrays entspricht). Es teilt den Inhalt dieser Zelle in mehrere Werte auf und verwendet das
"\n"
als Trennzeichen (Zeilenvorschub). Danach werden die vorhandenen Informationen zu einem Array hinzugefügt und die einzelnen Ergebnisse erst hinzugefügt, wenn Index 1 erreicht wirdk == 1)
. Die neu vorbereitete Zeile wird dann zu einem anderen Array hinzugefügt, das zurückgegeben wird, um das Ergebnis anzuzeigen.Bildschirmfoto
Daten
Ergebnis
Beispiel
Ich habe eine Beispieldatei für Sie erstellt: Mehrzeilige Zellen in neue Zeilen .
Fügen Sie das Skript unter Extras> Skripteditor hinzu und klicken Sie auf die Schaltfläche Speichern.
quelle
Eine wiederholbare Lösung benötigt ein Skript.
Aber für eine einmalige Anstrengung könnten Sie einfach verwenden
=SPLIT(B3,CHAR(10))
. Auf diese Weise erhalten Sie alle Namen der Person in Hilfsspalten nebeneinander wie folgt:Copy / Paste-special, bewertet den Inhalt der Hilfsspalte.
Und für jede verwendete Hilfsspalte (hoffentlich nicht zu viele, weil Sie hoffentlich nicht zu viele Personen in einem Unternehmen haben) kopieren Sie den Zeilenblock manuell und fügen Sie ihn bis zum Ende des aktuellen Blocks ein. (Das ist keine gute Beschreibung, aber Sie bekommen die Drift.)
quelle
Für Leute, die möglicherweise nicht sofort verstehen, wie die hilfreiche benutzerdefinierte Funktion in der akzeptierten Antwort verwendet wird :
Sie benötigen mehr als ein Blatt, im Beispiel sind die beiden Blätter
DATA
undRESULT
. DasRESULT
Blatt ist leer, bis die Abfrage ausgeführt wurde. Sie können die Abfrage sehen, die sich auf dasDATA
Blatt in Jacobs Screenshot bezieht .Sie müssen höchstwahrscheinlich den Vergleichswert für
k
Zeile 8 ändern, der sich auf die Spalte bezieht, in der Ihre zu analysierenden Daten gefunden werden sollen. Die gleiche Zahl muss in den 2. Array-Wert in Zeile 4 eingegeben werden.Möglicherweise müssen Sie das Trennzeichen in Zeile 4 ändern, das sich derzeit befindet
\n
Um dies alles ein bisschen einfacher zu machen, habe ich denselben Code verwendet und das Trennzeichen und die Zielspalte in Variablen extrahiert, die oben in der Funktion festgelegt sind. Wie Jacob erwähnt, beginnt die Anzahl der Zielspalten mit 0 als erster Zahl.
Verweise
quelle