Excelで1-1,1-2,...と自動採番する

Excelで1-1,1-2,...のような段落番号などを作成する際、手入力ではデータの追加・削除に伴う変更が面倒でした。

これを解決する方法を調査したので記録しておきます。

参考にしたページ

できたもの

  • オレンジ部分に当たる下記数式をExcelにコピー&ペーストし、オレンジ2行目をオートフィルで自動採番ができます
  • 列1〜列4は作業列のため、非表示設定にします
  • -以外を区切り文字に指定する場合は、区切り,""-"",-を変更します
  • ※LET関数を使用しているため、Excel for Microsoft 365もしくはExcel2021が対象です
"=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
IFS(参照セル<>"""",1,TRUE,0)
)"  "=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
IFS(参照セル<>"""",1,TRUE,0)
)"  "=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
IFS(参照セル<>"""",1,TRUE,0)
)"  "=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
IFS(参照セル<>"""",1,TRUE,0)
)"  "=LET(
区切り,""-"",
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
列1,OFFSET(自セル,0,-4),
列2,OFFSET(自セル,0,-3),
列3,OFFSET(自セル,0,-2),
列4,OFFSET(自セル,0,-1),
CONCAT(IFS(列2=0,列1,列3=0,CONCAT(列1,区切り,列2),列4=0,CONCAT(列1,区切り,列2,区切り,列3),TRUE,CONCAT(列1,区切り,列2,区切り,列3,区切り,列4)),""."")
)"
"=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
上のセル,OFFSET(自セル,-1,0),
右のセル,OFFSET(自セル,0,1),
IFS(参照セル<>"""",上のセル+1,右のセル<>0,上のセル,TRUE,0)
)"  "=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
上のセル,OFFSET(自セル,-1,0),
右のセル,OFFSET(自セル,0,1),
IFS(参照セル<>"""",上のセル+1,右のセル<>0,上のセル,TRUE,0)
)"  "=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
上のセル,OFFSET(自セル,-1,0),
右のセル,OFFSET(自セル,0,1),
IFS(参照セル<>"""",上のセル+1,右のセル<>0,上のセル,TRUE,0)
)"  "=LET(
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
参照セル,OFFSET(自セル,0,5),
上のセル,OFFSET(自セル,-1,0),
IFS(参照セル<>"""",上のセル+1,TRUE,0)
)"  "=LET(
区切り,""-"",
自セル,INDIRECT(ADDRESS(ROW(),COLUMN())),
列1,OFFSET(自セル,0,-4),
列2,OFFSET(自セル,0,-3),
列3,OFFSET(自セル,0,-2),
列4,OFFSET(自セル,0,-1),
CONCAT(IFS(列2=0,列1,列3=0,CONCAT(列1,区切り,列2),列4=0,CONCAT(列1,区切り,列2,区切り,列3),TRUE,CONCAT(列1,区切り,列2,区切り,列3,区切り,列4)),""."")
)"