No.1ベストアンサー
- 回答日時:
こんばんは!
わざわざVBAでやるメリットはないように思えますが・・・
Excel2003 というコトなので
Sheet1のB2セルに
=IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:B,2,0),"")
という数式を入れB2セルのフィルハンドルでダブルクリック!
これで完了だと思います。
どうしてもVBAでやりたい場合、一例です。
ワークシート関数をそのまま使用するのが一番簡単だと思います。
Sub Sample1()
Dim lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:B,2,False),"""")"
.Value = .Value
End With
End With
End Sub
別の方法としては、いかにもVBAらしくやると
Sub Sample2()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet2")
With Worksheets("Sheet1")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
Cells(i, "B") = wS.Cells(c.Row, "B")
End If
Next i
End With
End Sub
こんな感じでしょうか。
※ Sample2はループさせていますので、データ量が多い場合は
Sample1の方が速いと思います。m(_ _)m
No.2
- 回答日時:
VBAにしなくとも普通に関数でよいのではないかと。
Sub Macro1()
Dim myRow As Long
myRow = Cells(Rows.Count, "A").End(xlUp).Row
Range(Range("B2"), Range("B" & myRow)).Formula = _
"=IF(COUNTIF(Sheet2!A:A,A2),VLOOKUP(A2,Sheet2!A:B,2,FALSE),"""")"
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで最新のデータを別シートに転記する方法をお教えください。 3 2022/04/07 19:20
- Visual Basic(VBA) VBA For Each 〜 複数条件について 3 2022/10/20 20:05
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) VBA でvlookup エラーなどは削除したい 8 2022/12/30 04:03
- Visual Basic(VBA) VBAコードで質問があります 2 2022/10/20 15:27
- Excel(エクセル) エクセル関数のXlookupのフィルハンドル機能(類した機能でも可)を知りたいです。 3 2022/09/20 20:02
- Visual Basic(VBA) EXCEL関数LOOKUPとFILTERについての質問です 1 2022/12/21 05:53
- Excel(エクセル) エクセルでのVBA 2 2022/08/03 06:48
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- 飲食店・レストラン かつやさん値上げしましたか?今日、ロースカツとアジフライの単品買ったんですがあれと?(´・ω・`) 1 2023/03/11 21:05
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
Excel VBA、 別ブックの最終行...
-
【Excel VBA】指定行以降をクリ...
-
VBAで行削除できないようにする...
-
連続する複数のセル値がすべて0...
-
エクセルVBAでコピーして順...
-
screenupdatingが機能しなくて...
-
Excel vbaで特定の文字以外が入...
-
i=cells(Rows.Count, 1)とi=cel...
-
特定行の色を変えたい(FlexGrid)
-
Excelのプルダウンで2列分の情...
-
ExcelのVBAで数字と文字列をマ...
-
VBA コピーして次の値まで貼り...
-
DataGridViewの各セル幅を自由...
-
DataGridViewのセル編集完了後...
-
VBA初心者です。結合セルを保持...
-
【Excel】指定したセルの名前で...
-
vbsのセル値の取得について
-
EXCELで変数をペーストしたい
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ExcelVBAを使って、値...
-
特定のセルが空白だったら、そ...
-
i=cells(Rows.Count, 1)とi=cel...
-
【Excel VBA】指定行以降をクリ...
-
【マクロ】プルダウンが設定し...
-
Excelで指定した日付から過去の...
-
VBA実行後に元のセルに戻りたい
-
【Excel】指定したセルの名前で...
-
Excel vbaで特定の文字以外が入...
-
特定の文字を条件に行挿入とそ...
-
EXCELで変数をペーストしたい
-
【EXCEL VBA】Range("A:A").Fi...
-
エクセルVBAでコピーして順...
-
連続する複数のセル値がすべて0...
-
screenupdatingが機能しなくて...
-
Excel VBA、 別ブックの最終行...
-
任意フォルダから画像をすべて...
-
Excelのプルダウンで2列分の情...
-
【VBA】カーソルのある行の1行...
-
VBAコマンドボタンを押すたびに...
おすすめ情報