1つの行のコンテンツを複数の行に分割しますか?


7

各行に次のようなデータが含まれているテーブルがあります。

チーム名| 最初のメンバー| 2番目のメンバー| 3番目のメンバー| チームの説明

このデータを変換/分割して、各行にメンバーが1つだけ含まれるようにすることはできますか?このような:

チーム名| 最初のメンバー| チームの説明
チーム名| 2番目のメンバー| チームの説明
チーム名| 3番目のメンバー| チームの説明

1
コンマは列セパレータを意味しますか、それとも引用文字列内のテキストですか?
neo

カンマは列セパレータを意味します。
Dom Delimar 2013年

2
書式設定を調整して、表形式のデータに見えるようにしました。
エール

1
@DomDelimar与えられた答えを確認する時間はありましたか?
Jacob Jan Tuinstra 2013年

回答:


5

を使用して列を変換できますTRANSPOSE。つまり、「最初のメンバー、2番目のメンバー、3番目のメンバー」がA1:A3であると仮定すると、どこかで関数を使用できます。

 = TRANSPOSE(A1:A3)

以下のように列を埋めます、

 First member
 Second member
 Third member

チームメンバーの前後に同じ列を繰り返すには、

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

区切り記号のカンマで列を繰り返し、結果の配列を分割して変換します。


1
と組み合わせてそれを行う方法はありARRAYFORMULAますか?
Jacob Jan Tuinstra 2013年

これは良いアドバイスですが、ARRAYFORMULAについてはよく知りません。
neo


2

Google Sheets配列処理機能とFILTERを使用して、目的の結果を取得します

=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}))

注:スプレッドシートで,小数点記号としてカンマを使用する場合は、上記の数式のカンマをバックスラッシュに置き換えます\


1

次のGoogle Appsスクリプトを使用すると、自動的に実行されます。

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);
}

サンプルファイルSPLITを用意しました。開くと、2つのオプションを持つ追加のメニュー項目が作成されます。

スクリプトをシートで機能させるには、スクリプトを微調整する必要があります。メニューオプションを経由してスクリプトを追加ツールスクリプトエディタ


0

ルベンの優れたソリューションに追加するために、彼の式を次のように変更すると、空白のユーザーがスキップされ、チームごとにグループ化されます。

=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")


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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.