=rows(B:B)-day(offset(B1,rows(B:B)-1,0,1,1))
rows(B:B)
で、現在何行まであるのか調査します。offset(B1,rows(B:B)-1,0,1,1)
は、最下段のセルをもとめています。B1セルから最大行数だけ下にいったもの(-1は増分の調整、B1に縦セル分そのまま足したらオーバーフローします)。-day(最下段セル)
で、最下段にある日付の日部分だけを取得し、最大行数から引き算します。5/19が最大だとすると、27セル目にあるので、そこから19を引き算、移動分なので+1調整して5/1のセル位置をもとめます。
#なお、キャプチャー画面では式の中で-2となっている部分がありますが、最下段が空欄である、特別な運用をしているためです。通常は-1で使えます。OFFSET(C$1, $B$5 - 1, 0, ROWS($B:$B) - $B$5 + 1, 1)
ですが、以下のようにしてもとめます。$B$5 - 1
月初日のセル位置をもとめます。ROWS($B:$B) - $B$5 + 1, 1
で、全行数から月初日のセル位置を引き算して、行数を取得します。B5 - DAY(OFFSET(B1, B5 - 2, 0, 1, 1))
SPARKLINE(OFFSET(C$1, $B$2 - 1, 0, $B$5 - $B$2 + 1, 1))
で実現できます。一番上のセルを基準にして、先月初日から当月初日の前まで引っ張る感じです。セル指定のドル表記は有名ですが、これはセル式のコピー貼り付けをしたときに、指定のセル位置が動かないようにするための指定です。C2に入力したセルは、そのまま右方向にコピー貼り付けして使えます。