初心者で以下の処理を行うコーディングの方法が分りません。
いろいろと他の質問、サイトを調べましたが、解決できませんでしたので、ご指導頂ければ有り難いです。
(1)"Sheet1"に下記例の通り、2列にデータが並んでいる。
左列には商品、右列にはその単価がセットされている。
(例)
商品1 \11
商品2 \22
商品3 \33
:
(2)別シート"Sheet2"の左列には、商品が"sheet1"とは
異なる順序で並んでいる。また同一商品が複数存在することもある。
この商品の右列にそれぞれの単価をセットしたい。
商品3 (Sheet1を参照して値をセット)
商品7 (Sheet1を参照して値をセット)
商品1 (Sheet1を参照して値をセット)
:
、って感じです。EXCEL関数の"VLOOKUP"を使おうと思っているのですが、どうも思った通りの結果がでません。
商品のデータ数は当然変動するのでVLOOKUPの参照セルに変数を使おうと思っているのですが、
その方法がまずいのでしょうか?
No.3ベストアンサー
- 回答日時:
#1です。
VBAで?
Sheet2 にVLOOKUP式を入れたいなら可変させるのは入れたい範囲だけで良いと思います。
Sub Test()
Dim r As Range
With Worksheets("Sheet2")
.Columns(2).ClearContents
Set r = Range("A65536").End(xlUp).Offset(0, 1)
.Range("B1", r) = "=IF(ISERROR(VLOOKUP(A1,Sheet1!$A$2:$B$4,2,0))" & _
",""""," & "VLOOKUP(A1,Sheet1!$A$2:$B$4,2,0))"
End With
End Sub
No.4
- 回答日時:
#2のWendy02 です。
うーん、VBAとはね!ちょっとびっくりですね。
>VLOOKUP(Cells(i, 1),Sheet2!Range(Cells(1, 1),Cells(j,2)),2,FALSE)"
> 「"Sheet2"側の変数として"i"を、"Sheet1"側の
> 変数として"j"を、それぞれ利用して、下記のように、
> VLOOKUPの中にi、jを埋め込もうとしたのですが..
> こんなのってダメなんでしょうか?」
確かに、埋め込みは出来ますが、VBAだと、全体の雰囲気が違ってくるはずです。
細かな解説はしませんが、Vlookupなど、エラーを吐く関数を使うときは、それなりに技術が必要ですね。以下のサンプルで、VlookupのVBAの使い方(わたし流)をみてください。
Sub TestSample()
Dim Sh1 As Worksheet, Sh2 As Worksheet
Dim i As Long, j As Long, Ret As Variant
Set Sh1 = Worksheets("Sheet1")
Set Sh2 = Worksheets("Sheet2")
'
i = 2 'シート2の検索値の行
j = 10 'シート1 のデータの行
'
If IsEmpty(Sh2.Cells(i, 1)) Then
MsgBox "検索値がありません。", vbInformation
Exit Sub
End If
With Sh1
Ret = Application.VLookup(Sh2.Cells(i, 1).Value, .Range(.Cells(1, 1), .Cells(j, 2)), 2, False)
If Not IsError(Ret) Then
MsgBox Ret
'Sh2.Range("A1").Value = Ret '戻り値代入
Else
MsgBox "検索値 = " & Sh2.Cells(i, 1).Value & " に対して" & Chr(13) & _
"値が見つかりません。", vbCritical
'Sh2.Range("A1").Value = CVErr(xlErrNA) '戻り値代入
End If
End With
Set Sh1 = Nothing : Set Sh2 = Nothing
End Sub
No.2
- 回答日時:
こんばんは。
#1 のpapayukaさんにかぶってしまいますが、
>商品のデータ数は当然変動するのでVLOOKUPの参照セルに変数を使おうと思っているのですが、その方法がまずいのでしょうか?
私は、Excelの関数は不得意ですが、でも、文章を読んでいて、おかしなところは見当たらないので、本来は、「式」を見せていただくのが一番ですね。
(Sheet1を参照して値をセット)
ということだから、
Sheet2の
A1 ~データがあるとして、
B1 に、=VLOOKUP(A1,Sheet1!$A$1:$B$10,2,0)
「Sheet1!$A$1:$B$10」がデータ範囲として、このように入れれば、問題はないように思います。
エラー処理をするなら、
B1 に、 =IF(COUNTIF(Sheet1!$A$1:$B$10,A1)=0,"",VLOOKUP(A1,Sheet1!$A$1:$B$10,2,0))
というところかしらね。
ご丁寧な回答ありがとうございます。
参考にさせて頂きます。
"Sheet2"側の変数として"i"を、"Sheet1"側の
変数として"j"を、それぞれ利用して、下記のように、
VLOOKUPの中にi、jを埋め込もうとしたのですが..
こんなのってダメなんでしょうか?
VLOOKUP(Cells(i, 1),Sheet2!Range(Cells(1, 1),Cells(j,2)),2,FALSE)"
No.1
- 回答日時:
Sheet1がマスターですね?
Sheet1(マスター)のリスト範囲がA2:B4として、
Sheet2のB2に
=IF(ISERROR(VLOOKUP(A2,Sheet1!$A$2:$B$4,2,0)),"",VLOOKUP(A2,Sheet1!$A$2:$B$4,2,0))
のような感じですけど。
マスターが増えるなら範囲に名前(ここでは「商品リスト」)を付けておいて、
=IF(ISERROR(VLOOKUP(A2,商品リスト,2,0)),"",VLOOKUP(A2,商品リスト,2,0))
早速のご回答ありがとうございます。
大変参考になりました。
"Sheet2"の商品数は随時変動するので、
"VLOOKUP"を埋め込む範囲をDo Untilと変数を
使って指定しようと考えておりました。
よって、VLOOKUP(●●,Sheet1!...)の"●●"の
部分は変数でセルを指定しようとしていますが、
それがうまくできていないのかもしれません。
どうもありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel関数 情報引用する方法 4 2022/07/31 20:59
- Excel(エクセル) Excel 関数 vlookupなどの使い方について質問です。 シート1に品番、商品名、単価、発注条 6 2022/06/15 19:16
- Excel(エクセル) ある文字を含む際に、値を返す数式についてです 5 2022/08/28 16:58
- その他(Microsoft Office) Excelで該当しない項目(#N/Aの商品名)を簡単に表示・抽出させる方法についてです 1 2022/08/25 22:12
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Excel(エクセル) エクセルの条件付き書式 個人シートを参照して集計シートに色付けしたい 1 2023/06/22 00:39
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Excel(エクセル) excelで検索した商品の画像(ネットワーク上の)を表示させたい。 3 2023/06/28 00:32
- Excel(エクセル) VBAで同フォルダ内の別ブックを開かず参照して条件の一致する行の指定セルを抽出するには? 1 2022/07/21 19:29
- その他(Microsoft Office) EXCEL VLOOKUPに関する質問 5 2023/02/08 11:38
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
サブフォルダに格納されている...
-
【ExcelVBA】値を変更しながら...
-
IF文、条件分岐の整理方法
-
[VB.net] ボタン(Flat)のEnable...
-
Outlookの「受信日時」「件名」...
-
VBAコードのインデント表示
-
vbaにてseleniumを使用したedge...
-
Excel 範囲指定スクショについ...
-
Excelのマクロについて教えてく...
-
Excel VBA 文字列のセルを反映...
-
Outlookにて既にウィドウ単体で...
-
Excelのマクロについて教えてく...
-
【ExcelVBA】インデックスが有...
-
Excel関数またはVBAでの質問に...
-
VBA 別ブックからコピペしたい...
-
VBA 別ブックから条件に合うも...
-
Excel VBA ダブルクリックで入...
-
時間短縮のために、テキストフ...
-
エクセルのマクロについて教え...
-
VBA ユーザーフォーム ボタンク...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAなくなるの?
-
VBAでCOPYを繰り返すと、処理が...
-
vba 削除
-
プログラミング
-
Excelのマクロについて教えてく...
-
Excelのマクロについて教えてく...
-
エクセルのVBAコードについて教...
-
久しぶりのプログラミング
-
ユーザーフォームに別シートか...
-
エクセルVBAコードで教えて下さ...
-
VBA 別ブックからコピペしたい...
-
ExcelのVBAコードについて教え...
-
VBAコードについて教えてくださ...
-
vba アクティブシートの名前変...
-
Excelのマクロについて教えてく...
-
エクセルVBA
-
Geogebraの操作方法について
-
マクロの記録を使用したマクロ...
-
Excel(M365) Vlookup/セル反転(...
-
Excel 範囲指定スクショについ...
おすすめ情報