Inhalt einer Zeile in mehrere Zeilen aufteilen?

7

Ich habe eine Tabelle, in der jede Zeile folgende Daten enthält:

Teamname | Erstes Mitglied | Zweites Mitglied | Drittes Mitglied | Teambeschreibung

Wäre es möglich, diese Daten so zu transformieren / zu brechen, dass jede Zeile nur ein Mitglied enthält? So was:

Teamname | Erstes Mitglied | Teambeschreibung
Teamname | Zweites Mitglied | Teambeschreibung
Teamname | Drittes Mitglied | Teambeschreibung
Dom Delimar
quelle
1
Bedeutet das Komma ein Spaltentrennzeichen oder ist es Text in der Zeichenfolge in Anführungszeichen?
Neo
Das Komma bedeutet Spaltentrennzeichen.
Dom Delimar
2
Ich habe die Formatierung so angepasst, dass sie eher wie Tabellendaten aussieht.
Ale
1
@ DomDelimar Hattest du die Zeit, die gegebenen Antworten zu überprüfen?
Jacob Jan Tuinstra

Antworten:

5

Sie können die Spalten transformieren, indem Sie TRANSPOSEFolgendes verwenden: "Erstes Element, zweites Element, drittes Element" sind A1: A3. Sie können die Funktion irgendwo verwenden.

 = TRANSPOSE(A1:A3)

füllt die Spalte wie folgt aus,

 First member
 Second member
 Third member

Um die Spalte vor und nach den Teammitgliedern zu wiederholen, können Sie Folgendes versuchen:

 = TRANSPOSE (SPLIT(REPT(CONCAT(A1, ","), COUNTA(A1:A3)), ","))
 = TRANSPOSE (SPLIT(REPT(CONCAT(A5, ","), COUNTA(A1:A3)), ","))

die die Spalte mit einem Trennkomma wiederholen, dann das Ergebnisarray teilen und transformieren.

Neo
quelle
1
Gibt es eine Möglichkeit, dies in Kombination mit dem zu tun ARRAYFORMULA?
Jacob Jan Tuinstra
Dies ist ein guter Rat, aber ich kenne ARRAYFORMULA nicht.
Neo
2

Verwenden Sie die Funktionen zur Behandlung von Google Sheets-Arrays und FILTER, um das gewünschte Ergebnis zu erzielen

=FILTER({A:A,B:B,E:E;A:A,C:C,E:E;A:A,D:D,E:E},LEN({A:A;A:A;A:A}))

Hinweis: Wenn Sie in der Tabelle ein Komma ,als Dezimaltrennzeichen verwenden, ersetzen Sie das Komma in der obigen Formel durch einen umgekehrten Schrägstrich\

Rubén
quelle
1

Wenn Sie das folgende Google Apps-Skript verwenden, erfolgt dies automatisch:

function SPLIT() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();  
  var sh0 = ss.getSheets()[0], sh1 = ss.getSheets()[1];

  // get data from sheet 1
  var data = sh0.getDataRange().getValues();

  // create array to hold data
  var aMain = new Array();

  // itterate through data and add to array
  for(var i=1, dLen=data.length; i<dLen; i++) {
    for(var j=1; j<4; j++) {
      aMain.push([data[i][0],data[i][j],data[i][4]]);
    }
  }

  // add array of data to second sheet
  sh1.getRange(2, 1, aMain.length, 3).setValues(aMain);
}

Ich habe eine Beispieldatei vorbereitet: SPLIT . Beim Öffnen wird ein zusätzlicher Menüpunkt mit zwei Optionen erstellt.

Sie müssen das Skript optimieren, damit es in Ihrem Blatt funktioniert. Fügen Sie das Skript über den Menüpunkt Extras , Skript - Editor

Jacob Jan Tuinstra
quelle
0

Um Rubéns großartige Lösung zu ergänzen, werden bei der folgenden Änderung seiner Formel alle leeren Benutzer und Gruppen nach Teams übersprungen:

=QUERY(FILTER({A:A,B:B,E:E;A:A,C:C,E:E;A:A,D:D,E:E},LEN({A:A;A:A;A:A})),"Select * Where Not Col2='' Order by Col1 Asc")

Erik Tyler
quelle
0

=ARRAYFORMULA(QUERY(TRIM(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(LEN(A1:A), "♠"&A1:A&"♦"&B1:D&"♦"&E1:E, )), , 999^99)), , 999^99), 
 "♠")), "♦")), "where Col2 is not null"))

0

user0
quelle