- 締切済み
VLOOKUPで記号を検索したい
皆さんいつもありがとうございます。 今回困っているのは、昔のポケベルの入力方法を覚えていらっしゃいますでしょうか?入力に4ケタの数字を入れる方式で文字を送信していました。 そんな感じで例えば 表1 A B 1 ア 0101 2 イ 0102 3 ウ 0103 4 エ 0104 : : という文字対比表があり、別シートに 表2 A B C D E F G H 1 アイク ア イ ク 0101 0102 0108 2 トーク ト ー ク 0120 0108 上記のような表が2つあります。 表2のA列の文字をB例以降のセル1つずつにMID関数で1文字ずつ表示させ、その文字コードを表1から検索して表示させたいのですが、どうしても記号(ーや々など)が違う文字コードを拾ってしまいます。 正しく検出するには、どのような方法があるか教えて下さい。 宜しくお願い致します。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- mshr1962
- ベストアンサー率39% (7417/18945)
#2です。 >しかし、どうやら『ヽ』『ヾ』『ゝ』『ゞ』『々』『ー』を同一視して 確認してみましたが、そうなるようですね。苦肉の策ですが ヽ =CODE(B2) 2222 のように1列挿入して文字をCODE関数でキャラクタコードに置き換えてください。 ヽ 8499 2222 ヾ 8500 2223 ゝ 8501 2224 ゞ 8502 2225 々 8505 2226 ー 8508 2227 ― 8509 2228 のようになりますので F1=IF(B1="","",VLOOKUP(B1,表1!$B:$C,2,FALSE))
- imogasi
- ベストアンサー率27% (4737/17069)
全角の長音かハイフンの場合に4桁数字はどのようになればよいのですか(対応は?)。それを書かないで質問しているから、読者側で追試だ出来ない。(「々」も「どう」の字ですか、「〃」の字ですか。こちらの対応4桁コードは?) 決まっていなくて、VLOOKUP関数での検索範囲にない(入れられない)場合は、該当なしでエラーになるから、それをISNA関数やISERROR関数でIF関数を使って判別し、スペースをセットすればよいのかな。 ーー >どうしても記号(ーや々など)が違う文字コードを拾ってしまいます。 VLOOKUP関数はそんな難しいケースは起こらないはず。 対応表の作成さえ間違わなければ。 VLOOKUP関数の第4引数はFALSEにしてますか。 ーー 質問の状況が良く判らない。
- dghjty145
- ベストアンサー率46% (42/90)
Ano1ものです。 VLOOKUP(MATCH(C2,表1!B:B,0),表1!$A:$C,3,FALSE) この計算式で範囲をよく確認してください。 表1!B:Bや表1!$A:$C の「表1!」は「表1」というシートを指しますがそんな名前のシートがあるのでしょうか。 範囲をきちんと確認してください。 あとはmatch関数だけで見て適切にデータを拾っているか確認してみましょう。match関数が表1の上から何番目という数字になっていればデータは拾えるはずです。
お礼
何度もありがとうございます! きちんと上手くご説明出来なくて申し訳ありません。 表1というシートを作成し、そこからデータを引っ張っていますので、 範囲はこれで大丈夫のはず…なのです。 しかし、どうやら『ヽ』『ヾ』『ゝ』『ゞ』『々』『ー』を同一視して これらの一番始めに来たものの文字コードを拾っているようです。 match関数でも表1シートのリスト中一番始めに登場した『ヽ』の 文字コードの行を拾って来ていました。 どうしてなんでしょう…?
- mshr1962
- ベストアンサー率39% (7417/18945)
“ー”のように対応が無い場合はブランクですか? F1=IF(COUNTIF(表1!$A:$A,B1),VLOOKUP(B1,表1!$A:$B,2,FALSE),"") この式をコピーして展開させてみてください。
お礼
ありがとうございます。 この計算式を使って計算してみたところ、#N/Aの表示になりました。 対応が無い場合はブランク表示ではなく違う記号のコードが表示され ます。今わたしが VLOOKUP(B2,表1!$A:$B,2,FALSE) という計算式で『ー』や『々』を検索すると全て『ヽ』に相当する コードを拾って来てしまいます。文字を昇順に並べ替えたところ、 どうやら『ヽ』『ヾ』『ゝ』『ゞ』『々』『ー』を同一視して これらの一番始めに来たものの文字コードを拾っているようです。
- dghjty145
- ベストアンサー率46% (42/90)
まず考えられるのは、VLOOKUP関数の設定を変えればいいと思います。 =vlookup(b1,$X$1:$z$2000,false) のように第3引数がfalseになっていますでしょうか。 もしこれでもだめなら以下の手があります。 表1のA列に1、2、3と昇順のデータをデータ個数分挿入する。 =match(検査値、範囲、0)で、表1の縦の位置を検出する。 (範囲は、表1のア、イ等のデータが入っている縦の一列) この関数を以下のように使用する。 =vlookup( match(検査値、範囲、0),データ範囲,位置,false ) (データ範囲は表1のA列の1、2、3等の列も含む) で値を検出する。
補足
ご回答ありがとうございます。FALSEは入れてます。 表1 A B C 1 1 ア 0101 2 2 イ 0102 3 3 ウ 0103 4 4 エ 0104 : となり、表2の『ー』を検索する際には VLOOKUP(MATCH(C2,表1!B:B,0),表1!$A:$C,3,FALSE) ということでしょうか? すみません、MATCH関数がよく理解できていないのか計算結果はやっぱり違うものになってしまいます。
お礼
ありがとうございます。 早速やってみたところ、計算結果が#N/Aのエラーになってしまう のですが…