Здравствуйте Все,
Есть код Суммеслимн, но он работает только для одного листа, т.е. и диапазон суммирование и условие находятся на одном листе.
Как, сделать, чтобы суммировал диапазон из другого листа?
Вот код, который нужно исправить.
Файл с кодом в приложении.
Есть код Суммеслимн, но он работает только для одного листа, т.е. и диапазон суммирование и условие находятся на одном листе.
Как, сделать, чтобы суммировал диапазон из другого листа?
Вот код, который нужно исправить.
Файл с кодом в приложении.
Код |
---|
Sub SIMIFSINARRAY2() Dim SH1 As Worksheet, SH2 As Worksheet, I1 As Variant, I2 As Variant, ARR As Variant, R1 As Long, R2 As Long Dim I As Long, J As Long, pCount As Long, D As Object Set SH1 = Sheets("22") R1 = SH1.Range("A" & Cells.Rows.Count).End(xlUp).Row I1 = SH1.Range("A2:J" & R1).Value Set SH2 = Sheets("33") R2 = SH2.Range("H" & Cells.Rows.Count).End(xlUp).Row I2 = SH2.Range("H2:J" & R2).Value ReDim ARR(1 To UBound(I1, 1), 1 To 1) ReDim ARR(1 To UBound(I2, 1), 1 To 1) Set D = CreateObject("Scripting.Dictionary") For I = 1 To R2 - 1 If Not D.Exists(UCase(I2(I, 8 & I2(I, 9))) Then For J = 1 To R1 - 1 If UCase(I2(I, 8) = UCase(I1(J, 1)) And _ UCase(I2(I, 9)) = UCase(I1(J, 2)) Then pCount = pCount + I1(J, 3) End If Next J D(UCase(I2(I, 8 & I2(I, 9))) = pCount ARR(I, 1) = pCount: pCount = 0 Else ARR(I, 1) = D(UCase(I2(I, 8 & SH2(I, 9))) End If Next SH2.Range("J2").Resize(UBound(ARR, 1), 1).Value = ARR End Sub |