Добрый день, есть список позиций и их количества на листе А, позиции повторяются с разным количеством (консолидировать его нельзя), также есть консолидированный список во вкладке В, нужно его "прогнать" по списку А, и если разница между количество на листе А и В будет отрицательная или равно 0, удалить полностью строки с данным партномером. В результате должны остаться только партномера с положительной разницей и те, которых нет в списке В. В приложении файл, где формулами высчитана разница, в макрос, может это не самое оптимальное решение, но я думала занести формулы для правильного подтягивания количества с листа В, но вот как решить задачу с удалением строк с партномера, где нулева и отрицательная разница, я пока не знаю. Помогите пожалуйста, написать макрос, который бы справлялся с этой задачей.
Sub aaaaaaaabbb()
Dim arr()
Dim i As Long
Dim q As Variant
Dim matchFound As Boolean
Dim numColumns As Long
lLastRowA = Sheets("A").Cells(Rows.Count, 1).End(xlUp).Row
lLastRowB = Sheets("B").Cells(Rows.Count, 1).End(xlUp).Row
Set rngA = Sheets("A").Range("A2:C" & lLastRowA)
Set rngB = Sheets("B").Range("A2:C" & lLastRowB)
numColumns = rngA.Columns.Count
ReDim arr(1 To lLastRowA, 1 To numColumns)
For rA = 1 To rngA.Rows.Count
matchFound = False
For rB = 1 To rngB.Rows.Count
If rngA(rA, 1) = q Then
Exit For
End If
If rngA(rA, 1) = rngB(rB, 1) Then
If rngA(rA, 3) - rngB(rB, 2) > 0 Then
q = rngA(rA, 1)
Exit For
End If
matchFound = True
Exit For
End If
Next rB
If Not matchFound Then
i = i + 1
For j = 1 To numColumns
arr(i, j) = rngA(rA, j)
Next j
End If
Next rA
Sheets("A").Range("A2:C" & lLastRowA).ClearContents
Sheets("A").Range("A2").Resize(i, 3).Value = arr
End Sub
evgeniygeo, Спасибо большое за код! Но есть нюанс, при вычислении разницы между общим количеством каждого партномера на листе А и В, например было 8, надо отнять 5, остается 3, то в результате на листе А должно остаться только 3 строки с данным партномер, если там по 1 шт на строку.
evgeniygeo, какое у этого "чуда" применение? - изначально нужен был для корректной работы впр при подтягивании партномеров и количества с листа В, чтобы не от каждого вхождения партномера с листа А отнималось количество с листа В, а только один раз от общего количества данного партномера общее количество требуемое во вкладке В. как быть с теми "qty", где >1? - значит надо "Total qty per pn" пересчитывать и оставлять соответвующее количество строк