カラム1,2と3をカラム4,5,6に比較しようとしています。カラム1と4は時間ですが、必ずしも並んでいるわけではありません。エラーマージンは2秒です。列2と5と3と6は常に正確に一致する必要があります。私はコードが列1を実行し、列3内の値が範囲内にあるかどうかを確認したいと思います。もしそうなら、私は他の2つの値が一致するかどうかを確認したいと思います。それらがすべて一致した場合、array1とarray2の値の一部を "Sheet2"に貼り付けたいと思います。キーは私がそれを速く走らせたいということです。以下は私がこれまで持っていたものを投稿したものです。どんな提案/批評/オーバーホールも大歓迎です!VBA配列の比較
おかげで、
サム
Sub Comp()
Dim array1() As Variant
Dim array2() As Variant
Dim last1 As String
Dim last2 As String
Dim C As Integer
Dim A As Integer
Dim high As Long
Dim low As Long
Dim x As Boolean
last2 = Sheets("Comparison").Range("B1000000").End(xlUp).Row
last1 = Sheets("Comparison").Range("BV10000").End(xlUp).Row
C = 0
A = 0
ReDim array1(C To last1, 3)
ReDim array2(A To last2, 5)
For C = 0 To last1
array1(C, 1) = Sheets("Comparison").Range("A" & C + 2).Value
array1(C, 2) = Sheets("Comparison").Range("D" & C + 2).Value
array1(C, 3) = Sheets("Comparison").Range("G" & C + 2).Value
high = array1(C, 1) + (1.15740740740741E-05 * 2) '2 seconds
low = array1(C, 1) + (1.15740740740741E-05 * 2) '2 seconds
x = False
For A = 0 To last2
array2(last2, 1) = Sheets("Comparison").Range("I" & A + 2).Value
array2(last2, 2) = Sheets("Comparison").Range("K" & A + 2).Value
array2(last2, 3) = Sheets("Comparison").Range("M" & A + 2).Value
array2(last2, 4) = Sheets("Comparison").Range("J" & A + 2).Value
array2(last2, 5) = Sheets("Comparison").Range("L" & A + 2).Value
If array1(C, 2) = array2(A, 2) And array1(C, 3) = array2(A, 3) And high >= array2(A, 1) And array2(A, 1) >= low Then
x = True
If x = True Then
Exit For
If x = True Then Sheets("Sheet2").Range("C100000").End(xlUp).Offset(1, 0).Value = array2(A, 4).Value And Sheets("Sheet2").Range("D100000").End(xlUp).Offset(1, 0).Value = array2(A, 5).Value
Else
Next A
Exit For
For C = 0 To last1
If x = True Then Sheets("Sheet2").Range("A100000").End(x1up).Offset(1, 0) = array1(C, 1).Value And Sheets("Sheet2").Range("B100000").End(x1up).Offset(1, 0) = array1(C, 3).Value
Next C
End Sub