2025年8月4日月曜日

Excelのシート名を切り出してみた

 拝啓  酷暑の一層盛る折、皆様におかれましてはますますご壮健のこととお喜び申し上げます。
 突然の風雨に見舞われる機会も多いと存じますが、これでは焼け石に水と言った具合で季節の雅さに感じ入るゆとりも無く、味気無さが口惜しいものでございます。

 さて、堅苦しい前置きはここまでとさせていただきまして、


前文からしつこいようですが暑いですね!!

本当にここ北海道なんでしょうか!?

40℃超えた地域が出ましたよ!!

 本来活発な時期であるはずの蝉の声も蚊の羽音も聞こえて来ないレベルです。
もはや札幌くらいでは避暑地を名乗れませんね…。

 これだけ暑いと食欲も湧かないので食レポは勿論、前回ブログのネタ作りで敢行したような弾丸旅行に走る余力もないので、今回は本当にささやかな業務中に出くわしたネタを記載致します。

 皆様はExcelでシート名の一部だけ取得したいと考えたことはありませんか?
 例えばシート名の一部分が型番だったり、バージョンだったりの記載になっていて、同シートの中で切り出して使いたいとか。

 手動でセルに入力すればいいじゃんと思われるかもしれませんが、テンプレートシート等に予め仕込んで置けば、テンプレートを元に作成したシート名が命名ルールを破るとそのシートのセルにエラーが表示されるのですぐに分かります。

 この問題の解決にはREGEXEXTRACT関数をオススメします。

 今回はシート名に「1-①」~「99-⑩」までのパターンが含まれる事を想定します。
 記述としては以下の通りです。

=LET(
  path, CELL("filename", A1),
  sheetName, RIGHT(path, LEN(path) - FIND("]", path)),
  REGEXEXTRACT(sheetName, "(?<!\d)\d{1,2}-[①-⑩]")
)

 この切り出した部分の赤で塗ったところがパターンを指定する部分です。
 これを正規表現と言います。

REGEXEXTRACT(sheetName, "(?<!\d)\d{1,2}-[①-⑩]")

 (?<!\d)
 整数以外なら指定したパターンの前に文字列があっても良いという記述です。

 \d{1,2}
 2桁整数なら良いという記述です。

 [①-⑩]
 ①-⑩の範囲なら良いという記述です。

 最初は取っ付きずらいかもしれませんが、アルファベットや全角文字にも対応していて桁数の指定も出来るのでやり方次第では便利ですよ。

 あとは正規表現でシート名のルールを決めて、この赤く塗った所に嵌め込んでテンプレートシートにします。
 これで後々不味い段階になって「なんか命名ルールと違うの混ざってるぞ⁉」というミスが防げるんですね。


 と、あまり大仰な内容ではありませんが知ってると便利なお話でした。

 次はちゃんと楽しいネタ用意しておきたいです。
 あと気まぐれでくっ付けてみた拝啓なのですがChatGPTに添削して貰ったところ、
「表現がクドイ」と言われました。
まだまだですね…………。


さて、ここまでお付き合いいただきありがとうございました。
厳しい暑さが続く折、皆様のご健康とご多幸を心よりお祈り申し上げます。
敬具

0 件のコメント: