web-dev-qa-db-ja.com

Googleスプレッドシートの数式を無限に繰り返す

わかりましたので、スプレッドシートに情報をダンプするGoogleフォームがあります。各行で、簡単な計算を行う必要があります。問題は、新しい行が追加されるたびに新しい行ごとに数式を繰り返す方法を理解できないことです。

はい、フィルハンドルを使用して数式をコピーする方法とコピーしない方法は知っていますが、手動でコピーする代わりに、数式を自動的に追加する必要があります。

たとえば、これは時間を追跡するために使用されているため、In TimeのセルとOut Time各行で。 Time Spentという列を持ちたい過ごした。しかし、行の数は無限であるため、式を入力してコピーすることは実用的ではありません。

誰かがアイデアを持っているなら、私は本当に感謝しています。私は何年も探していましたが、塗りつぶしハンドルを使用して手動で式をコピーするように言っている人しかいませんが、これは私が望んでいるものではありません。

29
slister

In Timeセル​​が列Aにあり、 Out Timeセル​​は列Bにあり、必要なTime Spent列Cに配置します。セルC2に次の数式を入力します(A1、B1、およびC1にはデータではなくヘッダーが含まれると仮定します)。

=ARRAYFORMULA(B2:B - A2:A)

ARRAYFORMULA関数は、指定された範囲で含まれる数式を反復するようスプレッドシートに指示し、B2:Bのような最終番号のない参照は、スプレッドシート内の残りのすべての行を含む範囲を参照します。

52
Brionius

何らかの理由でarrayformulaを使用するのが難しいと感じる場合、別のオプションは、式が書き込まれたクエリを使用して別のシートにテーブルのミラーを作成することです。

例えば。 A列とB列に数値があり、それらを加算する数式がある場合:

=query(Data!A:B, "select A, B, A + B")

このアプローチの利点は、フォームデータの集計と要約を頻繁に行いたいことです。また、式を適用するために使用するクエリと同じクエリで2羽の鳥を殺すことができます。

Googleのクエリ構文に機能のギャップがある場合、過去に有用だったもう1つのトリックを紹介します。前のクエリと同等の出力を持つ次の例のように、クエリ関数に渡す前に、実際にデータに配列式を適用できます。

=query({Data!A:B, arrayformula(Data!A:A+Data!B:B)},
  "select Col1, Col2, Col3")

列が文字ではなく、Col1、Col2などによって参照されることに注意してください。

7
Tmdean