Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Вставка формулы в две ячейки - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Вставка формулы в две ячейки
mariskkayes Дата: Среда, 22.01.2025, 14:32 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

2016
Добрый день. Необходима помощь в написании макроса вставки формул в 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]

Вставляет в О11 следующее:
Код
=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ(@'В расчёт'!$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")
К сообщению приложен файл: vopros4.xlsm (88.5 Kb)


MariskkA
 
Ответить
СообщениеДобрый день. Необходима помощь в написании макроса вставки формул в 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]

Вставляет в О11 следующее:
Код
=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ(@'В расчёт'!$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")

Автор - mariskkayes
Дата добавления - 22.01.2025 в 14:32
Alex_ST Дата: Четверг, 30.01.2025, 09:12 | Сообщение № 2
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
Проверил. Ничего лишнего, что не прописано в макросе, в Q11 не вставляется.
Код
Q11=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$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")
Не понял, правда, зачем так сложно собирать стринг формулы, когда можно было проще:[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]Но это влияет только на "обозримость" кода. А результат не изменится - формула вводится "как написано"



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеПроверил. Ничего лишнего, что не прописано в макросе, в Q11 не вставляется.
Код
Q11=ЕСЛИОШИБКА(СУММ(--(ЧАСТОТА(ЕСЛИ('В расчёт'!$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")
Не понял, правда, зачем так сложно собирать стринг формулы, когда можно было проще:[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
Дата добавления - 30.01.2025 в 09:12
Alex_ST Дата: Четверг, 30.01.2025, 09:20 | Сообщение № 3
Группа: Друзья
Ранг: Участник клуба
Сообщений: 3219
Репутация: 622 ±
Замечаний: 0% ±

2003
А по поводу ввода формулы в ячейку Н11, так Вы сначала введите в ручную правильную формулу на листе, а потом уже скопируйте её и тупо вставьте в макрос, написанный по подобию SetCellFormula3.
Формула для Н11, приведённая в Вашем примере, не работает. Исправьте её.



С уважением,
Алексей
MS Excel 2003 - the best!!!
 
Ответить
СообщениеА по поводу ввода формулы в ячейку Н11, так Вы сначала введите в ручную правильную формулу на листе, а потом уже скопируйте её и тупо вставьте в макрос, написанный по подобию SetCellFormula3.
Формула для Н11, приведённая в Вашем примере, не работает. Исправьте её.

Автор - Alex_ST
Дата добавления - 30.01.2025 в 09:20
Pelena Дата: Четверг, 30.01.2025, 10:11 | Сообщение № 4
Группа: Админы
Ранг: Местный житель
Сообщений: 19437
Репутация: 4572 ±
Замечаний: ±

Excel 365 & Mac Excel
Range("o11").FormulaLocal = strFormula

используйте не FormulaLocal, а Formula2Local
[vba]
Код
Range("o11").Formula2Local = strFormula
[/vba]


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщение
Range("o11").FormulaLocal = strFormula

используйте не FormulaLocal, а Formula2Local
[vba]
Код
Range("o11").Formula2Local = strFormula
[/vba]

Автор - Pelena
Дата добавления - 30.01.2025 в 10:11
mariskkayes Дата: Понедельник, 03.02.2025, 12:12 | Сообщение № 5
Группа: Пользователи
Ранг: Новичок
Сообщений: 12
Репутация: 0 ±
Замечаний: 0% ±

2016
Pelena, спасибо, работает. А как в одном макросе прописать две формулы, что б каждая из формул вставлялась в разные ячейки, т.е. первая формула в Н11, а вторая в О11


MariskkA
 
Ответить
СообщениеPelena, спасибо, работает. А как в одном макросе прописать две формулы, что б каждая из формул вставлялась в разные ячейки, т.е. первая формула в Н11, а вторая в О11

Автор - mariskkayes
Дата добавления - 03.02.2025 в 12:12
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2025 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!