Googleスプレッドシートをフォームにリンクし、同じフォームを使用して3回編集して、同じテーマの3人の異なるユーザーからの返信を収集します。これにより、3人がいる場所を示す3つの列を含むシートが作成されます。
これらの3つの列を取得し、それらを相互に隣接するのではなく、互いの下に配置するビュー/クエリを作成する必要があります。データベースでは、以下のクエリのようなことをして、 'シート' tblMainを呼び出し、関連する4つの列を指定しました(サブジェクトIDも必要です)。
tblMain:
ID RALocation RBLocation RCLocation
クエリ:
Select ID, RALocation as Location, 'RA' as Role from tblMain
Union
Select ID, RBLocation as Location, 'RB' as Role from tblMain
Union
Select ID, RCLocation as Location, 'RC' as Role from tblMain
Googleスプレッドシートでこれを行う方法があるかどうかは誰にもわかりますか?複数のシートを作成し、最後にそれらを結合することは気にしませんが、これを行う方法には少し固執しています。
空のセルを保持するかどうかに応じて、2つのバージョンを提供します。基本的な考え方は同じです:
CHAR
を介してアクセス可能なエキゾチックなUnicode文字)。JOIN
コマンドで使用します。SPLIT
同じ文字で連結された文字列。TRANSPOSE
結果。例えば:
=TRANSPOSE( SPLIT( JOIN(CHAR(57344),A1:A) &CHAR(57344)& JOIN(CHAR(57344),B1:B) &CHAR(57344)& JOIN(CHAR(57344),C1:C), CHAR(57344) ) )
ここで、結合/分割のために、文字CHAR(57344)
を選択しました。これは 私的使用のために指定された であり、したがって有効な入力には存在しないはずです。
上記の式は、空白のエントリを削除します。これはSPLIT
が行うことです。これは、データに空白がない場合に便利です。データの最後の行がどこにあるかを追跡する手間を省きます。ただし、空白を保持する必要がある場合もあります。
空白を保持するには、 Jacob Jan Tuinstraの回答 を使用します。ただし、スペースの代わりに別のプライベートUnicodeを使用します(スペースを含むセルがいくつかあり、それらを保持したい場合があります) )。これには2つの追加手順が含まれます。以前のようにすべてを結合した後、SUBSTITUTE
を使用してCHAR(57344)
をCHAR(57344)&CHAR(57345)
に置き換え、次に以前のように分割し、CHAR(57345)
を空の文字列に置き換えます。
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(...joins... , CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "")))
完全な結果は次のようになります(データの最後の行の場所を指定することに注意してください)。
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(JOIN(CHAR(57344),A1:A9) &CHAR(57344)& JOIN(CHAR(57344),B1:B9) &CHAR(57344)& JOIN(CHAR(57344),C1:C9), CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "" )))
もう1つの注意点:Googleスプレッドシートの文字列の長さは50000文字を超えることはできません。データが大きすぎて文字列ベースのアプローチが機能しない場合は、スクリプトを使用します( this one は開始するのに適した場所です)。
現在、次の式を使用すると、Googleスプレッドシートで簡単に結合を作成できます。
={'Sheet1'!A2:A;'Sheet2'!A2:A;'Sheet3'!A2:A}
詳細については、Googleドキュメントヘルプをご覧ください。 Googleスプレッドシートで配列を使用する
Googleスプレッドシートは、UNION-SELECTに似た結果を得るためのいくつかの代替手段を備えた非常に強力なツールです。
SPLIT-TRANSPOSE-JOIN-CHARを使用する代替方法は、埋め込み配列を使用することです。この方法の利点の1つは、文字列を構築/分解する必要がないため、文字数の制限が関係ないことです。
上記を FILTER() と組み合わせて使用すると、フィルタリングでUNION-SELECTの同様の動作が必要な場合に使用できます。例
={Filter(A1:B2, B1:B2=2);Filter(D1:E2, E1:E2=6);Filter(G1:H2, H1:H2=12)}
QUERY() と組み合わせて使用することもできますが、その結果にはヘッダー行が含まれます。ヘッダーを取り除く方法については、 Googleスプレッドシートクエリの結果の行を取り除く をご覧ください。
TRANSPOSE-SPLIT-REPTを使用して、値の列を作成します。
={Transpose(Split(REPT("RA,",6),","))}
QUERY()を使用して値の列を作成することもできますが、ヘッダー行を削除すると、式がより複雑になる可能性があります。文字列の長さの制限が問題を引き起こす場合にのみ使用してください。
範囲tblMainがA1:D7であり、A1:D1がテーブルヘッダーであり、データがA2:D7にあると仮定します。
={{"ID";A2:A7;A2:A7;A2:A7},
{"Location";B2:B7;C2:C7;D2:D7},{"Role";
Transpose(Split(REPT("RA,",6),","));
Transpose(Split(REPT("RB,",6),","));
Transpose(Split(REPT("RC,",6),","))}}