シート1のB1からB500まで縦方向に入力されたデータがあります。
そして、シート2のB4からB22まで縦方向入力されたデータがあります。
このとき、シート1のデータは、シート2のデータを部分集合として含むかどうかを判定したくて、
(つまり、大きい方の配列が、小さい方の配列を部分集合として含むかどうかを判定したくて)
以下のようなコードを書いたのですが、
「型が一致しません」というエラーになりました。
vba
1 For i = 1 To 500 2 If Range(Sheets("シート1").Cells(i, 2), Sheets("シート1").Cells(i + 19, 2)).Value = Range(Sheets("シート2").Cells(4, 2), Sheets("シート2").Cells(4 + 19, 2)).Value Then 3 MsgBox "含む" 4 End If 5 Next
どのようにすれば、うまくできるでしょうか?
1. +19は何を意味していますか?(4+19は23なのでB4:B22の範囲外ですし)
2. 順番を含めて一致している必要がありますか?それとも値さえ含まれていればいいですか?
1.+19ではなく+18の誤りでした(手元で18に直した物で実験してみたのですが、結果は同じエラーです)。
2.順番を含めて一致している必要があります。
例えば、
Sheets("シートA").Cells(1,1), Sheets("シートA").Cells(10,1)).Value = Range(Sheets("シートB").Cells(1,1), Sheets("シートB").Cells(10,1)).Value
というコードだと、シートBのA1:A10が、まるごとそのままシートAのA1:A10にコピーできますが、
このようにRangeどうしが等しいかどうかをこの方法で比較しようとするとエラーになってしまうのでしょうか…?
回答3件
あなたの回答
tips
プレビュー