A列 B列 D列 E列
CODE1 VLOOKUP CODE2 NAME
01-A000 ああああ 01 ああああ
10-A123 #N/A 05 いいいい
20-B223 #N/A 10 うううう
30-C444 #N/A 15 ええええ
AB-S455 きききき 18 おおおお
A4-5554 くくくく 20 かかかか
AB きききき
A4 くくくく
以下略 以下略
のようなデータがあります。
A列のコード1の先頭2文字でD列をVLOOKUP検索します。
A列、B列ともに書式は文字列としています。
=VLOOKUP(LEFT(A2,2),$D$2:$E$29,2,0) という式をいれフィルドラッグすると先頭2文字が数字になるデータだけが01以外ヒットしません。
=VLOOKUP(IF(ISERROR(LEFT(A2,2)*1),LEFT(A2,2),LEFT(A2,2)*1),$D$2:$E$29,2,0) とすると、ある程度解消するのですが、1をかけると1になってしまう01がヒットしなくなるのは当然として、それ以外の数字でもD列にあるのにヒットしない場合があります。
D列のデータに先頭にシングルクォーテーションを入れればすべて解決するのですがそれ以外に解決する方法はないでしょうか?
No.5ベストアンサー
- 回答日時:
>D列のセル書式は文字列になっています。
Excel は、文字列書式にしたら、そのセルを参照している数式は「不活性化」になるはずだと思いますが、私だけでしょうか? 調べてみましたが、Excel 2007までは、「不活性」状態になる現象は直っていないはずです。
ところで、
現在の数式
=VLOOKUP(IF(ISERROR(LEFT(A2,2)*1),LEFT(A2,2),LEFT(A2,2)*1),$D$2:$E$29,2,0)
私の設定なら、エラーは発生していません。
A列の[CODE1]も、当然、一般/Gなどの書式にしておきます。
D列の[CODE2]は、数値のままで、左詰め、書式、「00」です。
書式-文字列は、孤立しているセルなり列ならよいのですが、参照先としては、そのような設定は使えないはずです。だから、どうしてもという場合は、Lotus1-2-3にある、プレフィクスの「'」を代用するわけです。別に、それが何かを邪魔するというわけでもありませんが、数式バーには出てきてしまいます。
後、エラーが出るとすれば、[CODE1]のA列の2文字が正しくないとか、そういう所ぐらしかないように思いますね。
ありがとうございます。
D列については自分で作ったデータではないので一律にプレフィクスの「'」を付加することにしました。
これなら安心ですよね?
No.6
- 回答日時:
添付の画像からはD列がセルの配置で左詰を指定していない限り数値になっているとは考えずらい。
よって、一致しない数字のセルにスペース等の不要なコードが混入している可能性がありますので確認して下さい。
>D列のデータに先頭にシングルクォーテーションを入れればすべて解決するのですがそれ以外に
>解決する方法はないでしょうか?
⇒仮にセルの配置で左詰でセルの書式が標準、数値の場合、その範囲を選択→データ→区切り位置→
次へ→次へ→文字列を選択→OKとして見て下さい。
> 添付の画像からはD列がセルの配置で左詰を指定していない限り数値になっているとは考えずらい。
その通です。
数値ではないのに数値の扱いになるのが問題なのです。
> 一致しない数字のセルにスペース等の不要なコードが混入している可能性
チェック済みですからありません。
No.4
- 回答日時:
D列の書式は文字列とのことですが、D列に数値を入力した後に書式を文字列に変更していませんか?
数値を入力した後に書式を文字列にしても、見た目は左詰めで表示されるので文字列のように見えますが、中身は数値のままです。
01と05だけは、入力した後に書式を文字列にすると前ゼロが付かないので、書式を文字列に変更した後で入力し直したのではありませんか?
書式を文字列にした後に入力すれば数値であっても文字列となります。
01だけうまくいっているのはそのためでしょう。
10,15,18,20,30などの2桁の数値を再度入力し直せば大丈夫だと思います。
> D列の書式は文字列とのことですが、D列に数値を入力した後に書式を文字列に変更していませんか?
掲示したデータはそうです。
本番データはよそからもってきたものですからどういう入力をされたかはわかりません。
> 10,15,18,20,30などの2桁の数値を再度入力し直せば大丈夫だと思います。
どうもデータを作り直さなくてはならないようですね。
数が多いので
For Each C In Selection
If IsNumeric(C.Value) Then
C.Value = "'" & C.Value
End If
Next
で、あたまにシングルクォーテーションをつけて逃げることにします。
No.3
- 回答日時:
状況からみると、No.1さんがおっしゃる通り、D列は数値として認識されているようですが、
=VLOOKUP(LEFT(A2,2),$D$2:$E$29,2,0)
↓
=VLOOKUP(TEXT(LEFT(A2,2),"00"),$D$2:$E$29,2,0)
でどうでしょうか?
> =VLOOKUP(TEXT(LEFT(A2,2),"00"),$D$2:$E$29,2,0)
> でどうでしょうか?
LEFT関数で取り出した時点で数字は文字列化しますのでTEXT関数では残念ながら意味が無いです。
書式では文字列としているのに数値として認識されているD列をどうするかが問題のようです。
ありがとうございました。
No.2
- 回答日時:
Excel2007だと、30-C444以外は正常にヒットしましたけど。
数式を
=VLOOKUP(IF(ISERROR(LEFT(A2,2)*1),LEFT(A2,2),LEFT(A2,2)*1),$D$2:$E$29,2,0)
にするとある程度解消するという事は、No.1さんの言われるとおり、D列の中身が数字扱いになっていると思われます。
データを先に入れた後に書式を変更しても見た目は変わりますが、データは元の書式のままなのでその場合は該当セルにて、F2を押して入力状態にした後エンターで確定処理を行ってみてください。
セルの中身が数字かどうかの判定は
=ISNUMBER(D2)
を使えば判定できます。(D2は検査したいセルのアドレスです)
> Excel2007だと、30-C444以外は正常にヒットしましたけど。
2007ではこんな問題が起きないのですか!?
私はまだ2000なんです。
> データを先に入れた後に書式を変更しても見た目は変わりますが、データは元の書式のままなのでその場合は該当セルにて、F2を押して入力状態にした後エンターで確定処理を行ってみてください。
ううっ、やはりそうしなきゃだめですか。
なにぶん数がおおいものですから・・・・。
> 数式を
> =VLOOKUP(IF(ISERROR(LEFT(A2,2)*1),LEFT(A2,2),LEFT(A2,2)*1),$D$2:$E$29,2,0)
> にするとある程度解消するという事は、No.1さんの言われるとおり、D列の中身が数字扱いになっていると思われます。
はい、それはわかります。だからこの式をつくったわけですから。
No.1
- 回答日時:
A列の書式が文字列として入っているので、D列も文字列でないとヒットしないです。
現在、D列は数値として入っています。シングルクォーテーションを入れる(数値を文字列にする)とヒットするというのはそのためです。シングルクォーテーションを入れる以外の解決策としては、D列のデータを書式設定から分類を「文字列」に変更すればいいです。A列のデータはコードに英字などの文字が入っているので数値にはできませんからね。VLOOKUPでマッチングするときは形式を揃えてあげないとダメです。
> D列も文字列でないとヒットしないです。現在、D列は数値として入っています。
ありがとうございます。
D列のセル書式は文字列になっています。
添付画像でD列の数字が左によっているのでわかるとは思いましたが質問に誤記がありました。
誤)A列、B列ともに書式は文字列としています。
正)A列、D列ともに書式は文字列としています。
B列は数式ですので文字列ではありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・ことしの初夢、何だった?
- ・【お題】大変な警告
- ・【大喜利】【投稿~1/20】 追い込まれた犯人が咄嗟に言った一言とは?
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・【お題】逆襲の桃太郎
- ・自分独自の健康法はある?
- ・最強の防寒、あったか術を教えてください!
- ・【大喜利】【投稿~1/9】 忍者がやってるYouTubeが炎上してしまった理由
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
エクセルで年月の合計の関数を...
-
隣のセルに入力したら自動的に...
-
エクセルでの複数条件下での標...
-
エクセル2003 MONTH関数で
-
ある一定時間を超えた場合の超...
-
【スプレッドシート】指定の日...
-
Excelの表以外が暗い?
-
エクセルで「ぶら下げ」書式を...
-
エクセルにて「週」から日付を...
-
複数連続した列幅や行高を一発...
-
エクセルで、一つのセルに二つ...
-
エクセルで角度の計算できますか?
-
エクセル シフト表 6連続勤...
-
エクセル 時間を等間隔に並べ...
-
エクセル 計算式
-
SUMIF関数の結果が0になってし...
-
SUMPRODUCT関数 文字列を含ん...
-
エクセルで条件に当てはまる曜...
-
エクセルで行ごと書式設定コピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
SUMIFとCOUNTIFを合わせたよう...
-
【スプレッドシート】指定の日...
-
隣のセルに入力したら自動的に...
-
エクセルでの複数条件下での標...
-
エクセルで年月の合計の関数を...
-
ある一定時間を超えた場合の超...
-
Excelの表以外が暗い?
-
エクセルで「ぶら下げ」書式を...
-
エクセルにて「週」から日付を...
-
エクセルで、一つのセルに二つ...
-
EXCEL 経過年数の平均を求めた...
-
Excel:月またぎを含む日数の差...
-
エクセルで角度の計算できますか?
-
エクセル シフト表 6連続勤...
-
ある数値から始まるものをカウ...
-
複数連続した列幅や行高を一発...
-
エクセルで条件に当てはまる曜...
-
excelでの文字を隠す方法
-
EXCEL 年月表示をするVBAを教...
-
エクセル2003 MONTH関数で
おすすめ情報