VBA Sumifs несколько открытых рабочих книг и критериев - PullRequest
0 голосов
/ 21 февраля 2019

Я пытаюсь суммировать все данные в столбце из внешней рабочей книги, значения NA отсутствуют и моя формула возвращает только нули.

Диапазон суммы: столбец глобального файла EU4: критерии ЕС 1 Диапазон: столбец глобального файла L4: L Критерии 1: ForecastBI: столбец B Критерии 2 Диапазон: столбец глобального файла K4: K Критерии 2: ForecastBI: столбец C Критерии3 Диапазон: глобальный файл, столбец KY4: K Критерии 3: ForecastBI: столбец D

Dim Master As Excel.Worksheet: Set Master = Application.Workbooks(" 
Global_File.xlsm").Worksheets("data")
Dim LrHc As Long: LrHc = Master.Cells(Rows.Count, "A").End(xlUp).Row
Dim LcHc As Long: LcHc = Master.Cells(5, Columns.Count).End(xlToLeft).Column 
+ 1

Dim ForecastBI As Excel.Worksheet: Set ForecastBI = 
Application.Workbooks("Actual.xlsm").Worksheets("Act")
Dim LrUpload As Long: LrUpload = ForecastBI.Cells(Rows.Count, 
"A").End(xlUp).Row
Dim LcUpload As Long: LcUpload = ForecastBI.Cells(2, 
Columns.Count).End(xlToLeft).Column + 1

'''Sum range
Dim Fte1 As Excel.Range: Set Fte1 = Master.Range("EU4:EU" & LrHc)

Dim Country As Excel.Range: Set Country = Master.Range("L4:L" & LrHc)
Dim CountryCriteria As Range: Set CountryCriteria = ForecastBI.Range("B2:B" & 
LrUpload)

Dim Region As Excel.Range: Set Region = Master.Range("K4:K" & LrHc)
Dim RegionCriteria As Range: Set RegionCriteria = ForecastBI.Range("C2:C" & 
LrUpload)

Dim DB As Excel.Range: Set DB = Master.Range("KY4:KY" & LrHc)
Dim DBCriteria As Range: Set DBCriteria = ForecastBI.Range("D2:D" & LrUpload)

For x = x To LrUpload

If ForecastBI.Cells(x, 1) = Master.Cells(2, 55) Then
   Cells(x, 8).Value = Application.Worksheetfunction.SumIfs(Fte1, _
      Country, CountryCriteria.Cells(x, 2).Value, _
      Region, RegionCriteria.Cells(x, 3).Value, _
      DB, DBCriteria.Cells(x, 4).Value)

Else: ForecastBI.Cells(x, 8) = 0

End If

Next x

1 Ответ

0 голосов
/ 22 февраля 2019

Я думаю, что самый простой способ сделать такие вещи, по крайней мере, в начале, это записать шаги, когда вы нажимаете на каждую из них.Я просто сделал это, и придумал это ниже.

Sub Macro1()

    ActiveCell.FormulaR1C1 = _
        "=SUMIF([Book1.xlsx]Sheet1!RC:RC,""A"",[Book1.xlsx]Sheet1!RC[1]:RC[5])"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A10")
    Range("A1:A10").Select

End Sub

Используя в качестве альтернативы функцию Sumproduct, я придумал это.

Sub Macro2()

    Range("A1").Select
    ActiveCell.FormulaR1C1 = _
        "=SUMPRODUCT(([Book1.xlsx]Sheet1!RC=""A"")*([Book1.xlsx]Sheet1!RC[1]:RC[5]))"
    Range("A1").Select
    Selection.AutoFill Destination:=Range("A1:A10")
    Range("A1:A10").Select

End Sub
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...