vlookup()とiserror()で良いのでは?
エクセルの関数で教えてください。 数万件の電話番号リストがあ… - 人力検索はてな
ですが、
0-1. vlookup()用にテーブルを作っておく。
国名 | 国番号 | 英語国名 | 国番号+"-" |
---|---|---|---|
アイスランド | 354 | Iceland | 354- |
略 | 略 | 略 | =国番号&"-"を入力 |
0-2. 0-1で作ったテーブルを[国番号/昇順]でsort
1. [-位置]という名前の列を作る。
=iserror(find(対象セル,"-"),0,find(対象セル,"-")
と入力し"-"が最初に現れる位置を決定する。"-"がなければ[0]を返す。
2. [pre-]という名前の列を作る。
=left(対象セル,[-位置]) と入力。
要はこのセルで、0-2で作ったテーブルに対して、vlookup()を行います。
3. [post-]という名前の列を作る。("-"より後の文字列という意味にしてください)
=right(対象セル,len(対象セル)-[-位置]) と入力。
4. [電話番号]という名前の列を作る。
=if( or([-位置]=0, iserror(vlookup([pre-],テーブル,4,false)) ),対象セル, [post-] )
対象セル内に"-"がなければ、vlookup()は使わず対象セルをそのまま返す。
"-"がある(国番号があるかもしれない)場合でも、テーブルにマッチしなければそのまま返す。
国番号がマッチすれば、[post-]を返すことで『最初に現れた-より右側の文字列』を返す。
ではダメですか? > id:rikuzai様, id:ion10様