Я пытаюсь выполнить этот сегмент кода. Это упрощенная версия кода. Я включил соответствующий код. Я пытаюсь объединить строки и названные диапазоны в формулу SumIfs, но я получаю ошибку 1004 «Определенная приложением или объектная ошибка». У меня есть рабочая строка кода выше этой секции проблем, которая аналогична, за исключением выполнения функции sum, а не sumif. Любая идея, как заставить этот код выполнить? Спасибо.Объединение SumIfs в VBA
Dim wb As Workbook
Dim ara As Worksheet
Dim inv As Worksheet
Dim ARBlock As Range
Dim Invoices As Range
Dim AgedDays As Range
Set wb = ThisWorkbook
Set ara = wb.Sheets("AR Aging")
Set inv = wb.Sheets("Invoices")
Set ARBlock = ara.Range("a6")
Set Invoices = inv.Range("a6", inv.Range("a6").End(xlDown))
Set AgedDays = Invoices.Offset(0, 6)
'Populate A/R age buckets
For i = 6 To ARBlock.Rows.Count + 6
With ARBlock(i - 5, 1).Offset(0, 3)
.Value = "=SumIfs(" & Invoices.Offset(0, 4).Address & "," & _
Invoices.Address & "," & ARBlock(i - 5, 1).Value & "," & _
Invoices.Offset(0, 6).Address & ","" <= "" & &O30)"
End With
Next i
End Sub
Линия, начинающаяся с «.value», где я получаю сообщение об ошибке. P.S .: Мне нужна ячейка, чтобы содержать конкатенированную формулу, в отличие от выходного значения.
UPDATE 1:
Как некоторые предложил я обновил .value строку:
.Offset(0, 3).Formula = "=SumIfs(Invoices.Offset(0, 4).Address,Invoices.Address,ARBlock.cells(i - 5, 1).Value)"
Я все еще получаю ту же ошибку. Некоторые ревизии, которые я сделал:
Удаление «=» перед «Sumifs» позволяет коду работать нормально; вставка в формулу в целевую ячейку в виде текста. В этом виде мой вывод для i = 1 поступает в ARBlock.cells (1,1), как и следовало ожидать.
Я также использовал Debug.Print, чтобы просмотреть все компоненты формулы:
Debug.Print ARBlock.Cells(i - 5, 1).Address
'output $A$6
Debug.Print ARBlock.Cells(i - 5, 1).Value
' output International Business Machines
Debug.Print Invoices.Offset(0, 4).Address
'output $E$6:$E$255
Debug.Print Invoices.Address
'output $A$6:$A$255
Я подозревал, что этот вопрос может быть, что размеры диапазон может быть выключен, но это не так. Следующее мое подозрение заключается в том, что для выпуска формулы International Business Machines необходимо, чтобы формула читала ее правильно. Я зашит в
""International Business Machines""
, чтобы увидеть, если это будет исправить формулу, но я получаю ту же ошибку, когда я добавляю «=» обратно. Синтаксис формулы верен, то размеры одинаковы между суммой диапазон и диапазон критериев. У кого-то еще есть идеи?
Моя догадка есть «ARBlock (i - 5, 1) .Value», фактическая ячейка, на которую вы ссылаетесь, является индексом <= 0? – Larry
При назначении формулы вы должны использовать '.Formula', а не' .Value'. В этой строке много чего происходит, поэтому попробуйте разделить ее на несколько строк и посмотрите, где на самом деле ошибка. Попробуйте добавить «'» в начале формулы (чтобы ячейка рассматривала ее как текст) и посмотрите, выглядит ли она правильно. –
Если вы присвоите результат построения формулы строке, вы сможете увидеть, является ли она действительной формулой. Для начала '", "" <= "" & & O30) "' выглядит неправильно. И 'ARBlock (i - 5, 1) .Value' должен быть' ARBlock.Cells (i - 5, 1) .Value' –