エクセルの質問です。VBAの回答は不要です。

2つの表A,Bがあります。
表Aは
|地域|送料|
|北海道|2000|
|東北|1500|
  ・
  ・
|九州|2500|

表Bは
|都道府県|地域|
|北海道|北海道|
|青森県|東北|
  ・
  ・
|沖縄県|九州|

この情報を元に表Cの★(送料)を埋めるための関数の使い方はありませんか?
(VLOOKUPを単純に使うだけだと文字列ではなく値の検索のようなので、思うような結果になりません。)
※表A~Cに列を追加することは可能です。

表Cは
|氏名|住所|送料|
|○○|北海道函館市~|★|
|○○|東京都港区~|★|
|○○|鹿児島県鹿児島市~|★|
  ・
  ・

回答の条件
  • URL必須
  • 1人1回まで
  • 登録:2007/08/22 11:01:08
  • 終了:2007/08/23 01:02:47

ベストアンサー

id:beatgoeson No.1

beatgoeson回答回数128ベストアンサー獲得回数142007/08/22 11:57:32

ポイント30pt

http://q.hatena.ne.jp/1187748067

VLOOKUPを2度使えばできると思うのですが‥

もしかして、Vlookupの4番目の引数を省略されてるかTRUEが入ってませんか?

あと住所の都道府県名の文字数が可変だと、それの考慮も必要です。

例えば、三重県と神奈川県のように。

以下は都道府県名3文字を前提とした式です。

表AをシートAに表BがシートBにあるとしてます。

=VLOOKUP(VLOOKUP(MID(B2,1,3),B!A:B,2,FALSE),A!A:B,2,FALSE)

id:P-mako

できました!

1番シンプルでわかりやすかったです。

自分で試す際に表BのA列(都道府県)に「鹿児島県」のように4文字を入れてしまったので、3文字との比較でN/Aでしたが、ミスに気付きました。

ありがとうございます。

2007/08/23 00:27:00

その他の回答(3件)

id:beatgoeson No.1

beatgoeson回答回数128ベストアンサー獲得回数142007/08/22 11:57:32ここでベストアンサー

ポイント30pt

http://q.hatena.ne.jp/1187748067

VLOOKUPを2度使えばできると思うのですが‥

もしかして、Vlookupの4番目の引数を省略されてるかTRUEが入ってませんか?

あと住所の都道府県名の文字数が可変だと、それの考慮も必要です。

例えば、三重県と神奈川県のように。

以下は都道府県名3文字を前提とした式です。

表AをシートAに表BがシートBにあるとしてます。

=VLOOKUP(VLOOKUP(MID(B2,1,3),B!A:B,2,FALSE),A!A:B,2,FALSE)

id:P-mako

できました!

1番シンプルでわかりやすかったです。

自分で試す際に表BのA列(都道府県)に「鹿児島県」のように4文字を入れてしまったので、3文字との比較でN/Aでしたが、ミスに気付きました。

ありがとうございます。

2007/08/23 00:27:00
id:fuentebella No.2

fuentebella回答回数269ベストアンサー獲得回数302007/08/22 12:21:46

ポイント15pt

データが日本の住所であると限定するなら、都道府県は頭3文字で判別できるので(厳密には頭2文字)。作業用のセルをおいて対応できるのではないでしょうか。あまり美しくないですが、力まかせにやるとすれば。。。


表B(シートBとします)に作業用の列を追加します。(表の一番左に)

セルの値には、都道府県名のはじめの3文字を入れます =left(B2,3)

作業(A) 都道府県(B) 地域(C)
=left(B2,3) 北海道 北海道
同様に上をコピー 青森県 東北

表Cにも作業用の列(地域)を追加します。(送料の前)

作業用のセルには住所の頭3文字を元にVLOOKUPを使って表Bを探し地域名を入れます =VLOOKUP(left(B2,3),B!A$2:C$48,3,FALSE)

 (ここではA2:C48を仮定しています)


送料のセルには、作業用セルの値(地域名)を元にVLOOKUPを使って表Aを探し送料を入れます =VLOOKUP(C2,A!A$2:B$10,2,FALSE) (ここでは表Aの大きさとしてA2:B10を仮定しています)

氏名(A) 住所(B) 地域(C) 送料(D)
○○ 北海道函館市~ =VLOOKUP(left(B2,3),B!A$2:C$48,3,FALSE) =VLOOKUP(C2,A!A$2:B$10,2,FALSE)
○○ 東京都港区~ 同様に上をコピー 同様に上をコピー
○○ 鹿児島県鹿児島市~ 同様に上をコピー 同様に上をコピー

http://allabout.co.jp/computer/msexcel/closeup/CU20060805A/index...

(急いで書いたので、セルの参照が間違ってるかもしれません。。。)

id:P-mako

ご回答ありがとうございます。

みなさんから、ご指摘いただいてますが、ツボはFALSE指定する第4パラメータだったようです。

たしかに省略してました。

2007/08/23 00:28:07
id:slendermongoose No.3

slendermongoose回答回数113ベストアンサー獲得回数72007/08/22 13:17:09

ポイント30pt

列Aで地域別送料を管理し、列Bで地域に属するエリア(都道府県)を管理するとお見受けします。

まず、表Bの列Cに項目「都道府県頭2文字」を列A「都道府県」よりLEFT関数で追加します。LEFT(A2,2)

次に、同じく表Bの列Dに項目「送料」を表AよりVLOOKUP関数で追加します。

VLOOKUP(B2,表A!A2:B9,2,FALSE)

そして、表Cの列「送料」に列「住所」の頭2文字を検索値として、表Bの列D「送料」よりVLOOKUP関数で送料を引っ張ってきます。

VLOOKUP(LEFT(B2,2),表B!C2:D48,2,FALSE)

これでいかがでしょうか?

http://q.hatena.ne.jp/

id:P-mako

こちらでも同様に上手くできました。ありがとうございます。

> 管理するとお見受けします。

まさにご察しのとおりです。

こういう意図を汲んでいただいた上でのご回答って、すごく嬉しいです。

2007/08/23 00:29:48
id:Gay_Yahng No.4

Gay_Yahng回答回数724ベストアンサー獲得回数262007/08/22 17:10:00

ポイント15pt

表A,Bの並びを変更するのはだめですか?

vlookupは検索文字が昇順に並んでいないと検索できません。

 

都道府県と地域は変わる事がないと思うので表A,Bをひとつにするとわかりやすいと思います。またはVLOOKUPで表Bの地域の後ろのセルに送料を入れてもいいです。

 

表Bの都道府県を2文字にします。鹿児島は鹿児のように。

表Cの送料に

=VLOOKUP(LEFT(住所のセル,2),範囲,3)

といれると送料が入ると思います。

 

住所のセル、範囲は実際のものに合わせてください。

 

http://q.hatena.ne.jp/1187748067

id:P-mako

ご回答ありがとうございます。

> 表A,Bの並びを変更するのはだめですか?

> vlookupは検索文字が昇順に並んでいないと検索できません。

それでも良いです。少し悩んだりもしました。

ただし、3番目の回答者の方の推測どおりメンテを考えると、別の表で管理したかったという点でした。

2007/08/23 00:34:59

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません