У меня есть страница ввода, где пользователь может определить количество необходимых им учетных записей и которое будет отображаться на странице обзора. Существует шесть разных типов учетных записей. Я выполнил это с помощью свойства Copy. Мой код вставляет каждый из шести типов по одному.VBA Вставить коррелирующую формулу массива в ячейку
With Sheet4
.Range("B9", .Cells(Rows.Count, "C").End(xlUp)).Copy Sheet7.[A4]
End With
Далее, для каждой строки мне нужно вставить указанную формулу для каждой учетной записи. Я сделал это так:
'then count sheet7 col a
qRow = wsA.Cells(Rows.Count, 1).End(xlUp).Row
'paste the formula
Dim q As Long
For q = 2 To qRow
If wsA.Cells(q, 1).Value > 1000 Then
wsA.Cells(q, 5).Value = "=sum(2+1)"
End If
Next q
До сих пор так хорошо. Моя проблема возникает на данном этапе, потому что следующая фактическая формула мне нужно вставить, и она должна быть ARRAY формула:
=SUM(SUMIFS(B!$D:$D,B!$E:$E,$A5,B!$B:$B,">="&E$2,B!$B:$B,"<"&F$2)*1,SUMIFS(B!$D:$D,B!$F:$F,$A5,B!$B:$B,">="&E$2,B!$B:$B,"<"&F$2)*-1)
Я пытался баловаться с собственностью .formulaArray, но я продолжал получать «объект Требуется "
Любые мысли? Я открыт для изменения своего кода, если у кого-то есть лучшая идея о том, как это сделать. Благодаря!
UPDATE 10FEB15
Код ошибки "Несоответствие" на комментировал линии:
If wsA.Cells(q, 1).Value > 1000 Then
'wsA.Cells(q, 5).FormulaArray = "=SUM(SUMIFS(B!$D:$D,B!$E:$E,$A5,B!$B:$B," >= "&E$2,B!$B:$B," < "&F$2)*1,SUMIFS(B!$D:$D,B!$F:$F,$A5,B!$B:$B," >= "&E$2,B!$B:$B," < "&F$2)*-1)"
End If
РЕШЕНИЕ: В VBA мы маскировать двойные кавычки, повторяя их.
Dim s As String
's = "He said: "This is a quote." But this is not a valid string literal"
s = "He said: ""This is a quote."" This is a valid string literal"
Обычно редактор VBA распознает такие недопустимые строковые литералы. Но здесь я сбивал с толку операторов сравнения.
Для строкового литерала в формуле мне потребовались двойные кавычки. Полный ответ ниже.
Пожалуйста показать строку кода, которая бросает ошибку «Требуется объект». '.FormulaArray =" = SUM (SUMIFS (B! $ D: $ D, B! $ E: $ E, $ A5, B! $ B: $ B, ""> = "" & E $ 2, B! $ B : $ B "" < "" & F $ 2) * 1, СУММЕСЛИМН (В $ D: $ D, B $ F: $ F, $ А5, В $ B: $ B ""> = "" & E $ 2, B! $ B: $ B, "" <"" и F $ 2) * - 1) "работает для меня. –
Это именно он, вам нужно использовать двойные кавычки '' '', если вам нужны цитаты в формуле. – Raystafarian