やってみて「あれ?」と思ったので記事にすることにした。画像のように空白行で区切られたデータの横に連番を振りたい時。
先頭が必ず空白行で、範囲に予め数式を入れておけばいいのなら
=IF(A1="","",SUM(INDEX(B:B,ROW()-1),1))
数式を下方向にコピー
これでいい。ただオートフィルコピーではなく、スピルで表現してみようと思ったのでやってみたら……「#VALUE!」エラーが出てしまった。
失敗例=SCAN( "", TAKE(A:A,XMATCH("*?",A:A,2,-1)), LAMBDA(x,y,IF(y="","",SUM(x,1))) )
原因を調べてみると「SUM(x,1)」で初期値の「""」が数値化されていないことが分かった。なんで?
「=SUM(A1,1)」とした時は、「A1」に文字列が入っていてもちゃんと「1」と答えを返すのに。疑問に思いつつも、「SUM(x,1)」を「SUM(0&x,1)」としたら上手くいった。
因みに Googleスプレッドシートの場合はこれでもダメで、ちゃんと数値化の演算を入れる必要がある。
横着するなという話ではあるんだけど、通常と違う仕様になっていると若干とまどうものがある。