人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの質問です。VBAの回答は不要です。
2つの表A,Bがあります。
表Aは
|地域|送料|
|北海道|2000|
|東北|1500|


|九州|2500|

表Bは
|都道府県|地域|
|北海道|北海道|
|青森県|東北|


|沖縄県|九州|

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

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



●質問者: P-mako
●カテゴリ:コンピュータ 科学・統計資料
✍キーワード:VBA エクセル 九州 函館市 北海道
○ 状態 :終了
└ 回答数 : 4/4件

▽最新の回答へ

1 ● beatgoeson
●30ポイント ベストアンサー

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)

◎質問者からの返答

できました!

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

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

ありがとうございます。


2 ● fuentebella
●15ポイント

データが日本の住所であると限定するなら、都道府県は頭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...

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

◎質問者からの返答

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

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

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


3 ● slendermongoose
●30ポイント

列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/

◎質問者からの返答

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

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

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

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


4 ● Gay_Yahng
●15ポイント

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

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

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

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

表Cの送料に

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

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

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

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

◎質問者からの返答

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

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

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

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ