Excelで1-1,1-2,...のような段落番号などを作成する際、手入力ではデータの追加・削除に伴う変更が面倒でした。
これを解決する方法を調査したので記録しておきます。
参考にしたページ
- Excel仕様書の段落番号を自動採番する - 一人はみんなのせいで
- 配列数式を使い慣れておらず、断念
- 【さらばインデント地獄】Excelの関数で項目番号を自動化
- こちらの内容をベースに作成することに
- セルの参照を返すADDRESS関数の使い方:Excel関数
- こちらの内容を組み合わせました
できたもの
- オレンジ部分に当たる下記数式を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)),""."") )"