アプリ版:「スタンプのみでお礼する」機能のリリースについて

Excel 2007 マクロのIF構文について

Sheet1からSheet2にIF構文を使用して、
必要な情報を転記するマクロです。
下記マクロで実現できているのですが、IF構文が多く
もっと効率的なマクロがあるのではないかと考えています。

IF構文が2つありますが、1つにまとめるマクロがありましたら
お教えください。


Sub Rist()
Dim i, j As Long
Dim ws1, ws2 As Worksheet
Set ws1 = Worksheets("Sheet1")
Set ws2 = Worksheets("Sheet2")
'「Sheet1」シートを更新
Worksheets("Sheet1").Range("A1").ListObject.QueryTable.Refresh BackgroundQuery:=False
'「Sheet1」シートから「Sheet2」シートに転記
For i = 2 To ws1.Cells(Rows.Count, 1).End(xlUp).Row
For j = 2 To ws2.Cells(Rows.Count, 13).End(xlUp).Row
'「Sheet1」シートのL列から「Sheet2」シートのS列に転記
If ws2.Cells(j, "M") = ws1.Cells(i, "A") Then
ws2.Cells(j, "S") = ws1.Cells(i, "L")
End If
'「Sheet1」シートのG列から「Sheet2」シートのQ列に転記
If ws2.Cells(j, "M") = ws1.Cells(i, "A") Then
ws2.Cells(j, "Q") = ws1.Cells(i, "G")
End If

Next j
Next i
End Sub

A 回答 (1件)

If ws2.Cells(j, "M") = ws1.Cells(i, "A") Then


ws2.Cells(j, "S") = ws1.Cells(i, "L")
End If
'「Sheet1」シートのG列から「Sheet2」シートのQ列に転記
If ws2.Cells(j, "M") = ws1.Cells(i, "A") Then
ws2.Cells(j, "Q") = ws1.Cells(i, "G")
End If

一つにまとめるのでしたら次のようにしてはどうでしょう。

If ws2.Cells(j, "M") = ws1.Cells(i, "A") Then
ws2.Cells(j, "S") = ws1.Cells(i, "L")
ws2.Cells(j, "Q") = ws1.Cells(i, "G")
End If
    • good
    • 0
この回答へのお礼

ご回答ありがとうございました。うまくいきました。助かりました。

お礼日時:2010/09/24 13:22

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!