1

これにアプローチする方法さえわかりません。フォームから取得した以下を完了するにはどうすればよいですか。

ColA (UniqID)       ColB
41447.9162847222    Name1, Name2, Name3, Name4
41447.9158912037    Name2, Name6, Name9

私はで終わりたいと思います:

ColA               B
41447.9162847222   Name1
41447.9162847222   Name2
41447.9162847222   Name3
41447.9162847222   Name4
41447.9158912037   Name2
41447.9158912037   Name6
41447.9158912037   Name9

名前が他のレコードで重複する可能性があるため、VLOOKUP または MATCH を使用できませんが、ColA コードは常に一意になります。

T

4

1 に答える 1

2

ネイティブのスプレッドシート関数を使用した回答:

=ArrayFormula(TRANSPOSE(REGEXREPLACE(SPLIT(CONCATENATE(SUBSTITUTE(", "&B:B;", ";CHAR(10)&A:A&CHAR(9)));CHAR(10));"(.*?)\t(.*)";{"$1";"$2"})))

欠点は、この方法ではすべての列が強制的にテキスト文字列になることです。これには回避策がありますが、式はさらにばかげたものになります。


コメントのリクエストに従って、コンマ区切りリストの先頭と末尾のスペースも削除する Google Apps Script カスタム関数を使用した回答:

function advanceSplit(range1, range2)
{
  var output = [], temp;
  for (var i = 0, length = range1.length; i < length; i++)
  {
    if (range1[i][0])
    {
      var temp = range2[i][0].split(",");
      for (var j = 0, length2 = temp.length; j < length2; j++)
      {
        output.push([range1[i][0], temp[j].trim()]);
      }
    }
  }
  return output;
}

次に、スプ​​レッドシートのセルで呼び出します。

=advancedSplit(A:A;B:B)

私の逸話的な観察では、非常に大きなデータ セットの場合、後者の方法 (カスタム関数) の方が前者よりも優れたパフォーマンスを発揮します。

于 2013-07-09T01:03:47.233 に答える