ID非公開

2022/1/18 15:02

33回答

VBAの配列で見よう見まねでシート1とシート3のある列を比較し、同じ値の場合は転記するようなシステムを組もうとしました。

画像

Excel116閲覧xmlns="http://www.w3.org/2000/svg">100

ベストアンサー

0

この返信は削除されました

その他の回答(2件)

0

実施されたいことがよくわかっていないので、違っていたら、ごめんなさい。 ・「Private Sub CommandButton1_Click()」は実施環境にあわせてください。 ・MyList_1の設定は、B列最終行になっていますが、意図されているのであれば、修正してください。※よくわからないので、A列最終行です。 ・ Private Sub CommandButton1_Click() Dim sht1 As Worksheet, MyList_1 As Variant Dim sht2 As Worksheet, MyList_2 As Variant Dim i As Long, j As Long Set sht1 = Worksheets("sheet1") Set sht2 = Worksheets("sheet3") ''シート1のA列を配列に格納する。 MyList_1 = sht1.Range("A2", sht1.Cells(sht1.Rows.CountLarge, "A").End(xlUp)) ''シート3のB列を配列に格納する。 MyList_2 = sht2.Range("B2", sht2.Cells(sht2.Rows.CountLarge, "B").End(xlUp)) ''シート1とシート3を比較する。 For i = 1 To UBound(MyList_1, 1) For j = 1 To UBound(MyList_2, 1) ''MyList_2に同じ値がある場合、シート1のU列(21列)をY列(25列)に転記する。 If (MyList_1(i, 1) = MyList_2(j, 1)) Then sht1.Cells(i + 1, "Y").Value = sht1.Cells(i + 1, "U").Value Exit For End If Next j Next i Set sht1 = Nothing Set sht2 = Nothing End Sub ※セルを配列に設定すると2次元になります。 ※どのシートを参照するのか?意識されてください。

0

A列を格納する部分の Cells(Cells(Rows.Count , 2).End(xlUp).Row , 1) ですが、 Cells(Cells(Rows.Count , 1).End(xlUp).Row , 1) ではないでしょうか。 また、そもそも Cells(Cells(Rows.Count , 1).End(xlUp).Row , 1) という書き方ではなく、 Cells(Rows.Count , 1).End(xlUp) でよい気がします。意味は同じです