wetchのブログ

他人に見られることを想定していない書き散らかし独習ノート.物理学とかVBAとか.

ISBNから出版社記号を抜き出す

カテゴリはVBAとしたけど,エクセルのワークシート関数の話.
新しい関数を使ってみたテスト.

書籍についてるISBNには時代によって2つの規格があって,日本の本だと

  • 古い規格は 4-(出版社記号)-(書名記号)-(チェックディジット) の順
  • 新しい規格は 978-4-(出版社記号)-(書名記号)-(チェックディジット) の順

になっている.それぞれの記号の部分は桁数が一定していない.
こういうのが与えられたときに出版社記号だけを抜き出したい.

  • まず1桁目が4か9かで規格が古いか新しいかを見分けて,
  • 1個目,2個目,3個目までのハイフンの位置を FIND で特定して,
  • MIDで出版社記号の部分だけを切り取る

とすればいいから~と,考え始めたところでFINDとかMIDがいくつも出てくて可読性の悪い式になりそうだったので,下記のように表現してみた.

=LET(hyphen1,FIND("-",[@isbn]),
hyphen2, FIND("-",[@isbn],hyphen1+1),
hyphen3,FIND("-",[@isbn],hyphen2+1),
separator1,SWITCH(LEFT([@isbn]),"4",hyphen1+1,"9",hyphen2+1),
separator2,SWITCH(LEFT([@isbn]),"4",hyphen2-hyphen1-1,"9",hyphen3-hyphen2-1),
MID([@isbn],separator1,separator2))

LETで書いてみたけど,これが良い方法なのかは分からない.