VBA: избегайте знаков «at» в моих формулах при вставке

#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 .