Не могли бы вы посоветовать, как исправить следующий код, который использует SUMIFS
? Мне удалось собрать их из множества источников, и я знаю, что с типами данных должно быть что-то не так.
Sub snap2020()
'Declare a variable
Dim wsOpps As Worksheet, wsSnapshot As Worksheet
Dim i As Integer, r As Integer
Dim CatSnapShot As Range
Dim SumRgn As Range 'The desired Sum Range
Dim CrtRgn1 As Range 'Range applied to Criteria 1
Dim Crt1 As Range 'Criteria 1
Dim CrtRgn2 As Range 'Range applied to Criteria 2
Dim Crt2 As Range 'Criteria 2
Dim CrtRgn3 As Range 'Range applied to Criteria 3
Dim Crt3 As Range 'Criteria 3
Set SumRgn = ThisWorkbook.Sheets("Opps tracker 2020").Range("T1:T2000")
Set CrtRgn1 = ThisWorkbook.Sheets("Opps tracker 2020").Range("C1:C2000")
Set Crt1 = ThisWorkbook.Sheets("Snapshot").Range("$A$3:$A$19")
Set CrtRgn2 = ThisWorkbook.Sheets("Opps tracker 2020").Range("K1:K2000")
Set Crt2 = ThisWorkbook.Sheets("Snapshot").Range("$B$1:$K$1")
Set CrtRgn3 = ThisWorkbook.Sheets("Opps tracker 2020").Range("J1:J2000")
Set Crt3 = ThisWorkbook.Sheets("Snapshot").Range("$A$2")
Set wsOpps = ThisWorkbook.Sheets("Opps tracker 2020")
Set wsSnapshot = ThisWorkbook.Sheets("Snapshot")
'Set up Message Box
If MsgBox("Update Snapshot?", vbYesNo + vbQuestion + vbDefaultButton2, "Opportunity Snapshot 2020") = vbNo Then
Exit Sub
End If
'Turn off events
Application.EnableEvents = False
'Clear old data in Worksheet Snapshot
wsSnapshot.Range("B3:K20").ClearContents
'Apply SUMIFs and Update data
For i = 3 To 19
For r = 2 To 11
wsSnapshot.Cells(i, r) _
= Application.WorksheetFunction.SumIfs(SumRgn, CrtRgn1, Crt1, CrtRgn2, Crt2, CrtRgn3, Crt3)
Next r
Next i
'Turn on events
Application.EnableEvents = True
End Sub
Так что целью кода является создание снимка общего количество по модели на категорию в 2020, 2021, 2022, 2023 и т. д. Я хотел, чтобы результаты были включены в диапазоны:
- B3: K20 для 2020 года
- B22: K39 для 2021 года
- B41: K58 для 2022 года
- B60: K77 для 2023 года
Предположение SumIfs
должно выглядеть следующим образом:
=SUMIFS('Opps tracker 2020'!T1:T2000, 'Opps tracker 2020'!C1:C2000, 'Snapshot'!A3:A19,
'Opps tracker 2020'!K1:K2000, 'Snapshot'!B1:K1, 'Opps tracker 2020'!J1:J2000)
- Диапазон суммы I ' Мне нравится столбец T на листе «Opps tracker 2020», который я ограничил только первыми 2000 строками для проверки
SUMIFs
поиска соответствующей категории (столбец K) на листе «Opp tracker 2020», которая сопоставить категорию на листе «Снимок» (диапазон B1: K1) SUMIFs
выполняет поиск соответствующей модели (столбец C) на листе «Opp tracker 2020», которая соответствует модели в «снимке» лист (диапазон A3: A19 для 2020 года, A22: A38 для 2021 года, A41: A57 для 2022 года, A60: A76 для 2023 года) - Затем, наконец,
SUMIFs
должен удостовериться, что для расчета снимка снимка 2020 год будет 2020 Диапазон 2020 года и то же самое для других лет
Вот экран печати моего листа «Снимок»
Я в любом случае не программист, поэтому, если вы также можете предложить лучший способ собрать коды, пожалуйста, не стесняйтесь. Я очень ценю любую помощь!
Пожалуйста, посоветуйте, как решить эту проблему. Большое спасибо!