Страницы: 1
RSS
Активация формулы в ячейке с текстовым форматом
 
Здравствуйте, помогите решить проблему, искал, но не нашел то, что мне бы подошло.
В общем кодом я создаю новую формулу, далее идет запись в ячейку, но формат ячейки естественно строка, я в коде уже и формат менял на общий и активировал, но не помогает, формулу не считает.

Разумеется, если зайти в саму ячейку и жмакнуть enter всё посчитает, но это недоработка, хотелось бы исправить, буду очень благодарен.
 
Цитата
Александр написал:
но формат ячейки естественно строка
- это как раз для формул неестественно. Ставьте общий.
 
Я бы с радостью, однако при таком раскладе вообще игнорирует запись формулы в ячейку, записывает, только если типы равны. Тип верхнего и по сути главного текстбокса при записи "+ЕСЛИ(RC2=2; 39; 9)" является строковым, предполагаю, поэтому и тип ячейки нужно менять, перед записью на строковый, а после записи на общий, что я и сделал, но этого явно не достаточно.
 
Зачем формулы? Заносите в ячейку ЗНАЧЕНИЯ.
 
разум не должен искать ответы на все вопросы
разум должен пребывать в состоянии покоя, чтобы истинный ответ смог прийти сам!
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Видимо мне нужно объяснить подробно. Суть проекта не в вычислениях, а в быстрой замене или же дополнении формулами или вообще чем либо, значения которые уже находятся в ячейки. Всё это делается за счет выделения нужного диапазона, запускаем макрос, далее он динамически воссоздает выделенную таблицы с таким же кол-во столбцов и строк, далее создаются чекбоксы для фильтрации, тех ячеек, которые будут или же не будут участвовать в нашей операции, далее идут выпадающие списки, где две операции "Заменить" или "Дополнить", выше идут текстбоксы для каждого столбца вот это и есть ядро всего проекта. В этот текстбокс мы можем писать, что угодно, далее мы выбираем операцию пр. "Дополнить", отмечаем в чекбоксах, где должна быть произведена эта операция и жмакаем Go!.
Вот тут и загвоздка вся, что если мы в главном текстбоксе пишем формулу, то тип будет строковым и тип ячейки нужно приравнивать к строковому, а потом обратно менять на общий, что я и сделал и формула записывается абсолютно корректно, но проблема в том, что excel не воспринимает её как формулу, пока не зайдешь внутрь и не нажмешь Enter.

Да текста много, извините, попытался объяснить, как мог.
 
Формат общий. Вставить формулу. Формат текстовый.
Но чисовые значения все-равно будут в числовом формате.
 
выполните такой макрос:
Код
Sub Delta()
  Dim fs As String
  fs = "=1+if(rc2=2,39,9)"
  Cells(1, 1).NumberFormat = "General"
  Cells(1, 1).FormulaR1C1 = fs
End Sub
как видите:
1. fs - явно обьявлена как строка
2. Cells(1, 1) получила формат общий
3. а присвоение ячейке значения строки (Cells(1, 1).FormulaR1C1 = fs) - дало вполне ожидаемый результат
последнюю строку можно было написать и так:
Cells(1, 1) = fs
только в этом случае ссылка RC2 в формуле будет воспринята не как ссылка стиля R1C1 (на ячейку в том же ряду в колонке 2), а как ссылка стиля А1 (RC2 - это вторая строка, 471 колонка и формула посчитает 10, потому что в той ячейке пусто (она не равна 2))  
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!
 
Конкретно Ваш способ не пошел, как не крути не хочет в ячейку заносится значение, если формат ячейки общий.
Попробовал FormulaLocal, работает, но формат RC корявый, вместе RC2 оно вывело R[1]C[470].
 
Ответ найден, спасибо Игорю Гончаренко) Ваши слова, оказались пророчески, вся проблема была в символе "=" при конкатенации в последней инструкции, решил тем, что знак "=" добавил в саму переменную Ячейка_основная в итоге всё заработало. Всем спасибо)
 
Что бы избежать данного решения: "ввод формулы в ячейку вручную с помощью нажатия Enter". Достаточно просто выделить тот столбец, формула в котором отображается, как текс, затем сочетанием клавиш "Ctrl+H" вызываем команду "найти и заменить", после этого в строку "найти" вписываем "ЕСЛИ(" (просто часть формулы), в строку "заменить", то же, что и "найти". И вуаля. Не надо тыкать сотни строк "F2+Enter".  
Страницы: 1
Читают тему
Наверх