_ 軽く検索しても見つからなかったのでメモ
たとえば、入力が一つだけあるフォームの結果をシート1にリンクしている場合、シート1はこんな感じになってる。
Timestamp | OK? |
19700101000000 | Yes |
これを別のシートから
='シート1'!A2 | ='シート1'!B2 |
='シート1'!A3 | ='シート1'!B3 |
というように参照して、次の入力 (A3 / B3) に備えてあるとき、値は
19700101000000 | Yes |
となっているはず。 ここでフォームに二つめの入力 (行3) が来ると、そのシートは
='シート1'!A2 | ='シート1'!B2 |
='シート1'!A4 | ='シート1'!B4 |
に書き変えられてしまう。自動的に入力を反映して
19700101000000 | Yes |
20180819153000 | No |
になってほしかったのに、
19700101000000 | Yes |
のままだということ。
つまり、シート1側の認識としては、それまで A3 / B3 だった行に最新のフォーム入力が入るのではなく、行2 と行3 の間に新しい行を挿入して (A3 / B3 を A4 / B4 に移動して) から、その挿入された新しい A3 / B3 に入力しているらしい。
という場合に、スマートな方法があるのかどうか分からない。
とりあえずは INDIRECT でも使えばいいかな。
='シート1'!A2 | ='シート1'!B2 |
='シート1'!A3 | ='シート1'!B3 |
ではなく
=INDIRECT("'シート1'!A2") | =INDIRECT("'シート1'!B2") |
=INDIRECT("'シート1'!A3") | =INDIRECT("'シート1'!B3") |
にしてしまうとか。
それはあまりにもアホすぎるというのであれば
=INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE) | =INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE) |
=INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE) | =INDIRECT("'シート1'!R" & ROW()+1 & "C" & COLUMN(), FALSE) |
とでも何でも、好きなようにすればいい。(上記の例は実際に試してないので、バグってるかもしれない)
セル指定を文字列にすることによって、アプリ側から認識できないようにしているわけだから、とうぜん副作用として不便になるわけで、できるだけ避けたいことではあるが。
SORT, IMPORTRANGE, ARRAYFORMULA みたいな複数セルに結果が出るやつを使うのが「正しい」やり方なのかな。