Добрый день. Необходима помощь в написании макроса вставки формул в H11 и O11. Нашёл несколько похожих вариантов, но что то не очень получается. При использовании такого кода (смог написать только для одного столбца), почему то добавляется знак "@" в некоторых местах, но не во всех, в связи с чем формула не работает.
[vba]
Код
Sub SetCellFormula() Dim strFormula As String strFormula = strFormula & "=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$B$2:$B$5000<>"""";" strFormula = strFormula & "ЕСЛИ(('В расчёт'!$M$2:$M$5000=[@машина])*('В расчёт'!$F$2:$F$5000=$G$3);" strFormula = strFormula & "ПОИСКПОЗ('В расчёт'!$B$2:$B$5000;'В расчёт'!$B$2:$B$5000;0)));СТРОКА('В расчёт'!$B$2:$B$5000)-СТРОКА('В расчёт'!B2)+1)> 0));""0"")" Range("o11").FormulaLocal = strFormula End Sub
Добрый день. Необходима помощь в написании макроса вставки формул в H11 и O11. Нашёл несколько похожих вариантов, но что то не очень получается. При использовании такого кода (смог написать только для одного столбца), почему то добавляется знак "@" в некоторых местах, но не во всех, в связи с чем формула не работает.
[vba]
Код
Sub SetCellFormula() Dim strFormula As String strFormula = strFormula & "=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$B$2:$B$5000<>"""";" strFormula = strFormula & "ЕСЛИ(('В расчёт'!$M$2:$M$5000=[@машина])*('В расчёт'!$F$2:$F$5000=$G$3);" strFormula = strFormula & "ПОИСКПОЗ('В расчёт'!$B$2:$B$5000;'В расчёт'!$B$2:$B$5000;0)));СТРОКА('В расчёт'!$B$2:$B$5000)-СТРОКА('В расчёт'!B2)+1)> 0));""0"")" Range("o11").FormulaLocal = strFormula End Sub
Не понял, правда, зачем так сложно собирать стринг формулы, когда можно было проще:[vba]
Код
Sub SetCellFormula2() Dim strFormula As String strFormula = "=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$B$2:$B$5000<>"""";" & _ "ЕСЛИ(('В расчёт'!$M$2:$M$5000=[@машина])*('В расчёт'!$F$2:$F$5000=$G$3);" & _ "ПОИСКПОЗ('В расчёт'!$B$2:$B$5000;'В расчёт'!$B$2:$B$5000;0)));СТРОКА('В расчёт'!$B$2:$B$5000)-СТРОКА('В расчёт'!B2)+1)> 0));""0"")" Range("o11").FormulaLocal = strFormula End Sub
[/vba]или вообще в одну строку:[vba]
Код
Sub SetCellFormula3() Dim strFormula As String strFormula = "=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$B$2:$B$5000<>"""";ЕСЛИ(('В расчёт'!$M$2:$M$5000=[@машина])*('В расчёт'!$F$2:$F$5000=$G$3);ПОИСКПОЗ('В расчёт'!$B$2:$B$5000;'В расчёт'!$B$2:$B$5000;0)));СТРОКА('В расчёт'!$B$2:$B$5000)-СТРОКА('В расчёт'!B2)+1)> 0));""0"")" Range("o11").FormulaLocal = strFormula End Sub
[/vba]Но это влияет только на "обозримость" кода. А результат не изменится - формула вводится "как написано"
Проверил. Ничего лишнего, что не прописано в макросе, в Q11 не вставляется.
Не понял, правда, зачем так сложно собирать стринг формулы, когда можно было проще:[vba]
Код
Sub SetCellFormula2() Dim strFormula As String strFormula = "=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$B$2:$B$5000<>"""";" & _ "ЕСЛИ(('В расчёт'!$M$2:$M$5000=[@машина])*('В расчёт'!$F$2:$F$5000=$G$3);" & _ "ПОИСКПОЗ('В расчёт'!$B$2:$B$5000;'В расчёт'!$B$2:$B$5000;0)));СТРОКА('В расчёт'!$B$2:$B$5000)-СТРОКА('В расчёт'!B2)+1)> 0));""0"")" Range("o11").FormulaLocal = strFormula End Sub
[/vba]или вообще в одну строку:[vba]
Код
Sub SetCellFormula3() Dim strFormula As String strFormula = "=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$B$2:$B$5000<>"""";ЕСЛИ(('В расчёт'!$M$2:$M$5000=[@машина])*('В расчёт'!$F$2:$F$5000=$G$3);ПОИСКПОЗ('В расчёт'!$B$2:$B$5000;'В расчёт'!$B$2:$B$5000;0)));СТРОКА('В расчёт'!$B$2:$B$5000)-СТРОКА('В расчёт'!B2)+1)> 0));""0"")" Range("o11").FormulaLocal = strFormula End Sub
[/vba]Но это влияет только на "обозримость" кода. А результат не изменится - формула вводится "как написано"Alex_ST
А по поводу ввода формулы в ячейку Н11, так Вы сначала введите в ручную правильную формулу на листе, а потом уже скопируйте её и тупо вставьте в макрос, написанный по подобию SetCellFormula3. Формула для Н11, приведённая в Вашем примере, не работает. Исправьте её.
А по поводу ввода формулы в ячейку Н11, так Вы сначала введите в ручную правильную формулу на листе, а потом уже скопируйте её и тупо вставьте в макрос, написанный по подобию SetCellFormula3. Формула для Н11, приведённая в Вашем примере, не работает. Исправьте её.Alex_ST
Pelena, спасибо, работает. А как в одном макросе прописать две формулы, что б каждая из формул вставлялась в разные ячейки, т.е. первая формула в Н11, а вторая в О11
Pelena, спасибо, работает. А как в одном макросе прописать две формулы, что б каждая из формул вставлялась в разные ячейки, т.е. первая формула в Н11, а вторая в О11mariskkayes