2

Google スプレッドシートで、セル F2 から H2 にある数式を、フォームに挿入されたすべての新しい行に自動的に適用したいと考えています。スプレッドシートはこちらからご覧いただけます。

式は次のとおりです。

F2: =IF(B2, "I"&B2,"--")

G2: =vlookup(C2,SectionID!$A$2:$B$13,2,FALSE)

H2: =vlookup(D2,ReporterID!$A$2:$B$12,2, FALSE)

行 3 ~ 10 に手動で数式を適用しようとしましたが、フォームが送信されると、数式を含まない新しく作成された行にデータが追加されます。(フォームデータは列A~Eに送信されます。)

スプレッドシートに自由に変更を加えてください。

ご協力ありがとうございました。

4

1 に答える 1

2

スクリプトを使用してフォーム送信時に数式を入力するか、すぐに使えるソリューションである配列数式を使用する必要があります。

=ArrayFormula(IF(A2:A;IF(B2:B;"I"&B2:B;"--");IFERROR(1/0)))

=ArrayFormula(IFERROR(VLOOKUP(C2:C;SectionID!$A$2:$B$13;2*SIGN(ROW(A2:A));FALSE)))

=ArrayFormula(IFERROR(VLOOKUP(D2:D;ReporterID!$A$2:$B$12;2*SIGN(ROW(A2:A));FALSE)))

ここでは、VLOOKUP を変換して配列を反復処理する際のトリックについて少し説明します。

行 1 の式を呼び出してヘッダーにも入力することもできます。これにより、行が行 2 の上に挿入される可能性があるシナリオが軽減されます。

=ArrayFormula(IF(ROW(A:A)=1;"IssueID";IF(A:A;IF(B:B;"I"&B:B;"--");IFERROR(1/0))))

=ArrayFormula(IF(ROW(A:A)=1;"SectionID";IFERROR(VLOOKUP(C:C;SectionID!$A$2:$B$13;2*SIGN(ROW(A:A));FALSE))))

=ArrayFormula(IF(ROW(A:A)=1;"ReporterID";IFERROR(VLOOKUP(D:D;ReporterID!$A$2:$B$12;2*SIGN(ROW(A:A));FALSE))))

于 2013-05-09T00:15:23.167 に答える