Вот что я пытаюсь выполнить sh: у меня есть список на листе "dat1"; это исходные данные (столбец 1). У меня есть листы "min1" и "min2", которые состоят из данных, которые похожи на данные n Столбец 1 листа "dat1", хотя оба этих списка короче исходных данных.
Чтобы сделать его более наглядным:
Data "dat1"
a
b
c
d
e
f
g
Data "min1"
a
d
c
Data "min2"
e
g
Result = dat1 - min1 - min2 = "EndResult"
b
f
Это то, что я ожидал, сработает:
Sub extract()
Dim sht1 As Worksheet, sht2 As Worksheet, sht3 As Worksheet, sht4 As Worksheet
Dim lr1 As Long, lr2 As Long, lr3 As Long
Dim chk1 As Variant, chk2 As Variant, chk3 As Variant
Dim i As Long, j As Long, k As Long
Set sht1 = ThisWorkbook.Worksheets("dat1") 'original data range
Set sht2 = ThisWorkbook.Worksheets("min1") 'partial data resembling dat1
Set sht3 = ThisWorkbook.Worksheets("min2") 'partial data resembling dat1
Set sht4 = ThisWorkbook.Worksheets("EndResult") 'orginal data minus resembling data from min1 and min2
lr1 = sht1.Cells(sht1.Rows.Count, "A").End(xlUp).Row
lr2 = sht2.Cells(sht2.Rows.Count, "A").End(xlUp).Row
lr3 = sht3.Cells(sht3.Rows.Count, "A").End(xlUp).Row
chk1 = sht1.Range("A1:B" & lr1).Value
chk2 = sht2.Range("A1:A" & lr2).Value
chk3 = sht3.Range("A1:A" & lr3).Value
For i = LBound(chk1) To UBound(chk1)
For j = LBound(chk2) To UBound(chk2)
For k = LBound(chk3) To UBound(chk3)
If chk1(i, 1) <> chk2(j, 1) And chk1(i, 1) <> chk3(k, 1) Then
If IsEmpty(sht4.[A1].Value) Then
sht4.[A1].Value = chk1(i, 1)
Else: sht4.Cells(sht4.Rows.Count, "A").End(xlUp).Offset(1).Value = chk1(i, 1)
End If
End If
Next
Next
Next
End Sub
Это не работает, но я не знаю почему. Кто может объяснить / помочь мне?