- ベストアンサー
EXCELの表を参照して値を返す方法
例えば下記のような表があるとします。 表1(シート1) A列 B列 ~10 A 11~20 B 21~30 C 31~50 D ・ ・ ・ 151~ Z 表2(シート2) 45 X 21 X 133 X Xの箇所に表1のA列を参照してB列の値(AとかC)を返す方法はないでしょうか?IF文を使った場合7レベルまではできるのですが、それ以上のネストは無理なようです。ちなみに表1は30分類(行)ほどあります。 よろしくお願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
Vlookup関数を使おう 但し、A列は、数値とし、昇順に入力すること Sheet1(表1) A_B 1_ 1_A 2_11_B 3_21_C 4_31_D 5_41_E 6_51_F 7_61_G 8_71_H 9_81_I 10_91_J 11_101_K 12_111_L 13_121_M 14_131_N 15_141_O 16_151_P Seet2(表2) A_ B 1__ 45_ 2__ 21_ 3_ 133_ B1に =VLOOKUP(A1,$A$1:$B$16,2)(下方にオートフィル)
その他の回答 (4)
- pkh4989
- ベストアンサー率62% (162/260)
マクロです、試してみてください。 Sub Test() Dim wR As Long Dim xR As Long Dim wNum As Long Dim sNo As Long Dim eNo As Long Dim wI As Long Dim wSt As String Dim eVal As String ' With Worksheets("Sheet2") For wR = 1 To .Cells(Rows.Count, "A").End(xlUp).Row wNum = .Cells(wR, "A") eVal = "" With Worksheets("Sheet1") For xR = 1 To .Cells(Rows.Count, "A").End(xlUp).Row wSt = .Cells(xR, "A") wI = InStr(wSt, "~") If wI = 1 Then sNo = 0: eNo = Mid(wSt, wI + 1) Else sNo = Left(wSt, wI - 1): eNo = Mid(wSt, wI + 1) End If If wNum >= sNo And wNum <= eNo Then eVal = .Cells(xR, "B") Exit For End If Next End With .Cells(wR, "B") = eVal Next End With End Sub
お礼
ご回答ありがとうございました。多分すばらしい方法を教えていただいたのだと思いますが、まだ私はマクロの使い方をしらないので、今回はVLOOKUPを使用したいと思います。今後マクロを勉強したときに参考にさせていただきます。ありがとうございました。
- koko88okok
- ベストアンサー率58% (3839/6543)
VLOOKUP関数をお使いください。 「VLOOKUP関数を制覇しよう!」 http://allabout.co.jp/computer/msexcel/closeup/CU20060805A/ 「Excel豆知識24 24-1 VLOOKUP関数 3」 http://www11.plala.or.jp/koma_Excel/contents3/mame3024/mame302401.html
お礼
回答ありがとうございました。使用法を理解するのに少し時間がかかりましたが、なんとか解決できました。ヘルプで何時間も、使える関数がないか探していたのですがわかりませんでした。検索キーは完全に一致しなくても使えるのですね。これでいっきに作業が進みます。ありがとうございました。
- mu2011
- ベストアンサー率38% (1910/4994)
一例です。 =IF(A1<>"",VLOOKUP(A1,sheet1!A:B,2,TRUE),"")として下方向にコピー 但し、A列は、0,11,21,31,51・・・151として昇順に配列として下さい。
お礼
回答ありがとうございました。使用法を理解するのに少し時間がかかりましたが、なんとか解決できました。ヘルプで何時間も、使える関数がないか探していたのですがわかりませんでした。検索キーは完全に一致しなくても使えるのですね。これでいっきに作業が進みます。ありがとうございました。
- FEX2053
- ベストアンサー率37% (7991/21373)
VLOOKUPの教科書にあるような質問ですね。 まずとりあえず、VLOOKUPの参照ができるように、A列を 10 20 30 : 150 99999(これ以上は絶対に来ない値) と書き換えます。その上で、 =VLOOKUP(Sheet2!A1,Sheet1!$A$1:$B$16,2,FALSE) これで「A列の値を超えない最大値に対応する文字」が出てきます。 詳細は以下のURL、特に3ページ目を読んで見て下さい。 http://allabout.co.jp/computer/msexcel/closeup/CU20060805A/
お礼
回答ありがとうございました。使用法を理解するのに少し時間がかかりましたが、なんとか解決できました。ヘルプで何時間も、使える関数がないか探していたのですがわかりませんでした。検索キーは完全に一致しなくても使えるのですね。これでいっきに作業が進みます。ありがとうございました。
お礼
回答ありがとうございました。使用法を理解するのに少し時間がかかりましたが、なんとか解決できました。ヘルプで何時間も、使える関数がないか探していたのですがわかりませんでした。検索キーは完全に一致しなくても使えるのですね。これでいっきに作業が進みます。ありがとうございました。