#excel #vba #insert #formula
#excel #vba #вставить #формула
Вопрос:
Я пытаюсь заставить свой код VBA автоматически вводить формулу, если в столбцах от A до J присутствует значение.
Это работает так, как задумано, но, к сожалению, VBA автоматически добавляет кучу знаков «@», из-за чего моя формула не работает.
Код довольно прост:
Sub INSERTFORMULAS()
Dim sheetVARS As Worksheet
Set sheetVARS = ActiveWorkbook.Sheets("VARS")
Intersect(ActiveSheet.UsedRange.Columns("A:J").SpecialCells(2).EntireRow.Offset(1), Columns("K")).Value = "=SUMPRODUKT((" amp; sheetVARS.Name amp; "!$A$2:$A$712=J2)*(" amp; sheetVARS.Name amp; "!$B$2:$B$712=$Q$2)*(" amp; sheetVARS.Name amp; "!$D$2:$D$712))"
End Sub
Что приводит к:
=@SUMPRODUKT((@VARS!$A$2:$A$712=J2)*(@VARS!$B$2:$B$712=$Q$2)*(@VARS!$D$2:$D$712))
Что мне нужно, так это:
=SUMPRODUKT((VARS!$A$2:$A$712=J2)*(VARS!$B$2:$B$712=$Q$2)*(VARS!$D$2:$D$712))
Обратите внимание, что мой Excel написан на датском языке, что может привести к некоторым расхождениям по сравнению с вашим.
Я был бы очень признателен за помощь в решении этой, в противном случае, основной проблемы!
Спасибо.
Комментарии:
1.
.Formula2
Устраняет ли.Value
проблему вместо?2. Не уверен, но, пожалуйста, попробуйте
...Formula = "=SUMPRODUCT((" amp; sheetVARS.Name amp; "!$A$2:$A$712=J2),(" amp; sheetVARS.Name amp; "!$B$2:$B$712=$Q$2),(" amp; sheetVARS.Name amp; "!$D$2:$D$712))"
— не SUMPRODU K T, а английскую SUMPRODU C T, не звездочку, а запятую и — main! — не.Value
но.Formula
)3. Или, я думаю, что в отношении моего предыдущего комментария вы бы использовали
.Formula2Local
.