タイトルがどういうことかというと、つまりこういうことです。

 

7:30

8:00

8:30

19:00

19:30

20:00

 

7:30

8:00

 

7:30から20:00までの30分刻みの時間を表示させる。

空白行を1行挟んで、またその下から同じ内容を表示させる。これを50000行目まで繰り替えす。

 

30分刻みの時間を表示させるだけなら「7:30」「8:00」をセルに縦に入力して、必要なだけ下まで引っ張ればいいだけ。でも今回はいろいろあって空白を1行挟んで、延々と50000行目まで繰り返さねばなりませんでした。

 

1セット作り全選択し、それを50000行目までうぃーーんと引っ張ってもよいのですが、

うっかりあとで途中のセルの文字を誰かが書き換えたりしてはイヤなので、今回は関数でやってみました。

 

といってもすぐには浮かばないので、Copilotと相談しながら試行錯誤。

生成AIに相談できるなんて便利な時代になりましたね。

 

できあがったのがこちら。

 

=LET(

 times,SEQUENCE(26,1,TIME(7,30,0),TIME(0,30,0)),

 rows,SEQUENCE(50000,1,1,1),

 position,MOD(rows-1,27)+1,

 IF(B3:B50000="","#",IF(position=27,"",INDEX(times,position))))

 

LET関数を使っています。

timesとして7:30から30分刻みの時間を26回(だと20時までになります)繰り返すことを定義、

rowsでそれを何行目まで繰り返すのかを定義、

positionで27行ごとに繰り返すことを定義(26じゃないのは空白行を入れるから)、

いろいろ定義した内容を踏まえ、最後の式で計算しています。

この関数を使った時の業務は、他にもいろいろと自分的にはあまりやらなかったことをやってみていますので、またご紹介します。