Durch "Geteilte" Zeichenfolge werden leere Einträge beibehalten


10

Ich versuche, die Funktionen SPLITund JOINin Google Sheets (der neuen Version) zu verwenden, um einige Daten zu bearbeiten, und es treten Probleme auf, da SPLITleere Einträge nicht beibehalten werden.

Die Datenquelle ist im Wesentlichen wie folgt eingerichtet:

   |  A    B    C    D
-----------------------
1  |  q    5    r    2
2  |  s         t    4
3  |  u    8    v
4  |  w    3    x    6

(Die leeren Einträge in diesem Datensatz stellen "keine Messung" dar, was sich von einer Messung von unterscheidet. 0)

Bei Spalten Aund Cerhalte ich das gewünschte Ergebnis mithilfe der folgenden Formel:

=SPLIT(JOIN("~",A1:A4,C1:C4),"~")

Dadurch entsteht eine Zeile, die erwartungsgemäß q s u w r t v xin einer eigenen Zelle abläuft.

Diese Methode funktioniert jedoch nicht für Spalten Bund D. JOINfunktioniert wie erwartet und gibt die Ausgabe:

5~~8~3~2~4~~6

Das Ausführen SPLITdieser Ausgabe führt jedoch zu einem Problem: Ich habe 5 8 3 2 4 6keine leeren Zellen zwischen 5und 8oder zwischen 4und 6, was bedeutet, dass die Paare aufgelöst sind (z. B. sund vsollten leeren Zellen entsprechen, aber stattdessen wund xtun). Das Problem scheint zu sein, dass SPLITdie Interpretation ~~als ein einzelnes Trennzeichen und nicht als zwei Trennzeichen mit einem Null-Eintrag zwischen ihnen erfolgt.

Weiß jemand, wie man leere Einträge in einem solchen Szenario beibehält?

Die gewünschte Ausgabe würde so aussehen

q  s  u  w  r  t  v  x
5     8  3  2  4     6

Würde ein Leerzeichen in diesen leeren Feldern das Problem beheben?
Ale

Das Eingeben von "" führt dazu, dass der leere Eintrag erhalten bleibt (danke, @AlE.!), Aber es wäre immer noch vorzuziehen, eine technologische Lösung zu haben, nicht zuletzt, weil das manuelle Eingeben von "" in all diese Einträge sowohl sehr zeitaufwändig als auch sehr zeitaufwändig wäre fehleranfällig.
LiberalArtist

Tabellenkalkulationsformeln sind nicht meine Stärke. Vielleicht kann etwas getan werden IF(), um leere Felder automatisch in Leerzeichen umzuwandeln.
Ale

1
Update: Mit der Idee von @ AlE. konnte ich die Berechnung sofort durchführen, indem =ARRAYFORMULA(IF(ISBLANK(B1:B4)," ",B1:B4))ich einen Dummy-Satz von Spalten mit "" in den leeren Zellen erstellte, die dann für SPLITund verwendet werden JOIN. Ich hoffe immer noch, dass jemand eine elegantere Lösung hat: Dies fügt meinem Dokument eine Menge zusätzlicher Dinge hinzu, und ich muss die Zeilennummern an einigen Stellen aktualisieren, wenn dem Datensatz weitere Messungen hinzugefügt werden. (Danke an AI E., dass ich zumindest die Daten für jetzt
knacken durfte

Antworten:


3

Versuchen Sie die folgende Lösung.

Formel

=ARRAYFORMULA(TRIM(SPLIT(JOIN(" ,", A1:A4,C1:C4), ",")))

Erklärt

Sie haben uns bereits gezeigt, dass die SPLITFunktion leere Zellen ignoriert, daher wähle ich diese Zeichenfolge als Trennzeichen : " ,". Das Zwischenergebnis der JOINFunktion sieht folgendermaßen aus:
Geben Sie hier die Bildbeschreibung ein

Ich wähle das Trennzeichen für die SPLITFunktion wie folgt : ",". Das Zwischenergebnis der SPLITFunktion sieht folgendermaßen aus:
Geben Sie hier die Bildbeschreibung ein

Jetzt müssen wir uns jedoch mit den zusätzlichen Leerzeichen befassen. Daher habe ich die TRIMFunktion verwendet, um alle nachfolgenden oder führenden Leerzeichen (in Kombination mit dem ARRAYFORMULA) zu entfernen . Vergleichen Sie die LENWerte jedes Zwischenergebnisses.

Ergebnis

Geben Sie hier die Bildbeschreibung ein

Beispiel

Ich habe eine Beispieldatei für Sie erstellt: SPLIT, um leere Zellen beizubehalten


2

Versuchen Sie die folgende Lösung.

Code

function myJoin() { 
  var output = []; 
  for(var i = 0, iLen = arguments.length; i < iLen; i++) {
    for(var r = 0, rLen = arguments[i].length; r < rLen; r++) {
      output.push(arguments[i][r][0]);
    }    
  }
  return [output];
}

Verwendungszweck

Geben Sie hier die Bildbeschreibung ein

Fügen Sie der Funktion so viele Bereiche hinzu, wie Sie möchten, und sie werden verarbeitet. Fügen Sie dieses kleine Skript in den Skripteditor Ihrer Tabelle ein (Extras> Skripteditor; Klicken Sie auf die Schaltfläche Speichern).

Beispiel

Ich habe eine Beispieldatei für Sie erstellt: SPLIT, um leere Zellen beizubehalten


2

Kurze Antwort

Die folgende Formel gibt das gewünschte Ergebnis zurück.

=Transpose({A1:B4;C1:D4})

Erweiterte Antwort

Diese Antwort konzentriert sich darauf, einen Weg zu finden, um das gewünschte Ergebnis zu erzielen, anstatt zu diskutieren, wie der gewählte Ansatz zum Funktionieren gebracht werden kann.

Das XY-Problem

Das OP möchte X erhalten und ist der Meinung, dass Y dieses Ergebnis zurückgeben sollte. Dieser Ansatz ist problematisch, da Y einige Einschränkungen aufweist. Dies könnte ein Bürgermeisterproblem sein, da das OP fragt, wie Y funktionieren soll, anstatt nach einer Möglichkeit zu fragen, X zu erhalten, aber es ist nicht so groß, weil es den Kontext und das gewünschte Ergebnis liefert.

Lösung

Google Sheets ist in der Lage, mehrwertige Ergebnisse aus Sicht der Endbenutzer auf sehr einfache Weise zu verarbeiten. Auf der anderen Seite kann eine spezielle Notation verwendet werden, damit Endbenutzer Arrays definieren können.

Die oben genannten Funktionen ermöglichen es, das erwartete Ergebnis ohne die Verwendung der Funktionen SPLIT () und JOIN () und ohne die damit verbundenen Einschränkungen zu erzielen.

Formelerklärung

{A1:B4;C1:D4}

Es ist ein 2 x 8-Array, das aus zwei 2 x 4-Arrays / Bereichen besteht. Das Semikolon ( ;) wird unter der Annahme verwendet, dass das Dezimaltrennzeichen der Tabelle ein Punkt ( .) ist. Wenn das Dezimaltrennzeichen ein Komma war, ersetzen Sie es durch einen Backslash ( \).

=Transpose({A1:B4;C1:D4})

Konvertiert das 2 x 8-Array in ein 8 x 2-Array.

Einer der Vorteile dieser Methode besteht darin, dass keine spezielle Behandlung von leeren Zellen erforderlich ist. Weitere Vorteile sind, dass es sich um eine sehr kompakte Formel handelt und sehr einfach anzupassen ist.

Verweise


1

Wenn Sie sich anschließen und das Trennzeichen auf "," setzen, ein Komma mit einem vorangestellten Leerzeichen, wird dieses Leerzeichen automatisch beibehalten, wenn Sie es erneut teilen:

=SPLIT(JOIN(" ,",A1:A4),",")
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.