dポイントプレゼントキャンペーン実施中!

皆さんいつもありがとうございます。
今回困っているのは、昔のポケベルの入力方法を覚えていらっしゃいますでしょうか?入力に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から検索して表示させたいのですが、どうしても記号(ーや々など)が違う文字コードを拾ってしまいます。
正しく検出するには、どのような方法があるか教えて下さい。
宜しくお願い致します。

A 回答 (5件)

#2です。


>しかし、どうやら『ヽ』『ヾ』『ゝ』『ゞ』『々』『ー』を同一視して
確認してみましたが、そうなるようですね。苦肉の策ですが
ヽ =CODE(B2) 2222
のように1列挿入して文字をCODE関数でキャラクタコードに置き換えてください。
ヽ84992222
ヾ85002223
ゝ85012224
ゞ85022225
々85052226
ー85082227
―85092228
のようになりますので
F1=IF(B1="","",VLOOKUP(B1,表1!$B:$C,2,FALSE))
    • good
    • 0
この回答へのお礼

ありがとうございます。
早速やってみたところ、計算結果が#N/Aのエラーになってしまう
のですが…

お礼日時:2008/08/21 16:21

全角の長音かハイフンの場合に4桁数字はどのようになればよいのですか(対応は?)。

それを書かないで質問しているから、読者側で追試だ出来ない。(「々」も「どう」の字ですか、「〃」の字ですか。こちらの対応4桁コードは?)
決まっていなくて、VLOOKUP関数での検索範囲にない(入れられない)場合は、該当なしでエラーになるから、それをISNA関数やISERROR関数でIF関数を使って判別し、スペースをセットすればよいのかな。
ーー
>どうしても記号(ーや々など)が違う文字コードを拾ってしまいます。
VLOOKUP関数はそんな難しいケースは起こらないはず。
対応表の作成さえ間違わなければ。
VLOOKUP関数の第4引数はFALSEにしてますか。
ーー
質問の状況が良く判らない。
    • good
    • 0

Ano1ものです。



VLOOKUP(MATCH(C2,表1!B:B,0),表1!$A:$C,3,FALSE)

この計算式で範囲をよく確認してください。

表1!B:Bや表1!$A:$C の「表1!」は「表1」というシートを指しますがそんな名前のシートがあるのでしょうか。 範囲をきちんと確認してください。

あとはmatch関数だけで見て適切にデータを拾っているか確認してみましょう。match関数が表1の上から何番目という数字になっていればデータは拾えるはずです。
    • good
    • 0
この回答へのお礼

何度もありがとうございます!
きちんと上手くご説明出来なくて申し訳ありません。
表1というシートを作成し、そこからデータを引っ張っていますので、
範囲はこれで大丈夫のはず…なのです。

しかし、どうやら『ヽ』『ヾ』『ゝ』『ゞ』『々』『ー』を同一視して
これらの一番始めに来たものの文字コードを拾っているようです。
match関数でも表1シートのリスト中一番始めに登場した『ヽ』の
文字コードの行を拾って来ていました。

どうしてなんでしょう…?

お礼日時:2008/08/21 13:46

“ー”のように対応が無い場合はブランクですか?


F1=IF(COUNTIF(表1!$A:$A,B1),VLOOKUP(B1,表1!$A:$B,2,FALSE),"")
この式をコピーして展開させてみてください。
    • good
    • 0
この回答へのお礼

ありがとうございます。
この計算式を使って計算してみたところ、#N/Aの表示になりました。

対応が無い場合はブランク表示ではなく違う記号のコードが表示され
ます。今わたしが
VLOOKUP(B2,表1!$A:$B,2,FALSE)
という計算式で『ー』や『々』を検索すると全て『ヽ』に相当する
コードを拾って来てしまいます。文字を昇順に並べ替えたところ、
どうやら『ヽ』『ヾ』『ゝ』『ゞ』『々』『ー』を同一視して
これらの一番始めに来たものの文字コードを拾っているようです。

お礼日時:2008/08/21 13:39

まず考えられるのは、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関数がよく理解できていないのか計算結果はやっぱり違うものになってしまいます。

補足日時:2008/08/21 10:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!