4

Google スプレッドシートに配列を追加すると、結果のすべての要素がセルに表示されません。たとえば、次の式を入力するとします。

={{1,2,3}, {4,5,6}}

スプレッドシートのセルに表示される値は 1、4、5、6 です。なぜこれが起こっているのか、または代替案についてのアイデアはありますか? 私のより広い問題は、別のシートから別のシートに行を蓄積することです-私はそれを介してそれを行うことができます

={ImportRange(...), ImportRange(...)}

しかし、同じ問題が明らかです (最初の配列から 2 番目以降の要素が欠落しています)。

4

2 に答える 2

4

編集 (2014 年 10 月 2 日)

誰かが賛成票を投じたとき、私はちょうどこれに遭遇しました。以下の情報は、スプレッドシートの最新バージョンでは廃止されました。埋め込み配列内で配列を連結できるようになりました (数か月前から可能でした)。以下で提供するすべての例は、「動作しない」と言ったものを含め、動作します。


Google スプレッドシートに埋め込まれた配列

値の配列は、埋め込み配列を使用して 1 つの関数で設定できます。埋め込み配列の各要素 (これは推測のポイントである可能性があります。多かれ少なかれ単なる私の意見です) は、シート内の連続するセルに入力される値を表します。セミコロンは行の区切り記号です。コンマ (または、小数点記号としてコンマを使用するロケールではバックスラッシュ) は、列の区切り記号です。これにより、2 行 3 列の配列が正常に作成されます (次の例はすべて、コンマ列区切り記号をサポートするロケールを想定しています)。

={1,2,3;4,5,6}

埋め込み配列内の埋め込み配列

埋め込み配列の各要素はスプレッドシートのセルを表すため、外側の埋め込み配列の他の要素を上書きしない限り、セルに別の埋め込み配列を入力できると考えるのが妥当だと思います。したがって、IMO のようなもの (ポイント 3 を参照) は成功するはずです。

={{1;2;3},{4;5;6}}

ただし、最初の埋め込み配列の 2 番目と 3 番目の要素が 2 番目の埋め込み配列を「上書き」するため、このようなものは機能しません (これも IMO)。

={{1,2,3},{4,5,6}}

埋め込み配列内の最初の埋め込み配列に関連するバグがあります

+Jason が指摘したよう={{1;2;3},{4;5;6},{7;8;9}}に、最初の埋め込み配列が 1 つの要素のみを入力する (ただし、他のすべての列は正しく入力される) という点で機能しません。その 1 つの要素がテキスト文字列に自動変換されるのも興味深いことです。これは (残念ながら) Google スプレッドシートの長年のバグです。配列に対して SPLIT() 関数を呼び出そうとすると、同じことが起こります (最初の要素を除いて、配列内のすべての要素が正常に分割されます)。

とにかく、埋め込み配列内の埋め込み配列がより広範な問題に役立つとは思わない

とにかく、埋め込み配列を使用して、ある配列を別の配列の最後に追加することはできません (「上書き」効果のため)。また、それを直接実行できるネイティブ関数はありません。スクリプト ギャラリー (+ahab のクレジット) から取得できる VMERGE 関数は、すぐに使用できます。

=VMERGE(ImportRange(...);ImportRange(...);...)

または、ネイティブ関数を使用して文字列操作を行い、これを実現できます。たとえば、1 次元配列の場合:

=ArrayFormula(TRANSPOSE(SPLIT(CONCATENATE(ImportRange("key1";"A1:A10")&CHAR(9);ImportRange("key2";"A1:A10")&CHAR(9));CHAR(9))))

しかし、このタイプの数式は、扱いにくく、読みにくいだけでなく、大規模なデータ セットではパフォーマンスが非常に高くなる可能性があります (優先的に VMERGE カスタム関数オプションをお勧めします)。

于 2013-04-14T10:49:05.330 に答える
2

Google スプレッドシートで非常に簡単にユニオンを作成することができます。例えば:

={'Sheet1'!A2:A;'Sheet2'!A2:A;'Sheet3'!A2:A}

詳細については、Google ドキュメント ヘルプを参照してください: Google スプレッドシートでの配列の使用

于 2016-08-04T12:39:50.783 に答える