Новости:

Форум на данный момент в стадии обновления. Если у Вас возникли проблемы со входом в свою учетную запись - просьба писать на email: info@excel-vba.ru

Главное меню

Макрос очистки ячеек по условию

Автор nadegda, 03.07.2013, 12:27:53

« назад - далее »

nadegda

Подскажите, плжалуйста, если ячейка имеет вид =456+23
или =678\345 как мне обнулить значение?
при условии, что для ячеек, содержащих формулы по-другому

Дмитрий Щербаков(The_Prist)

Только макросом. Проверять все возможные условия на корректность и очищать ячейки в зависимости от результата проверки.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

nadegda

Да, я понимаю, что реализовать можно только макросом, но как

Юрий М

Цитироватьпри условии, что для ячеек, содержащих формулы по-другому
А на Ваш взгляд =456+23 формулой не является?

Дмитрий Щербаков(The_Prist)

Цитата: nadegda от 03.07.2013, 15:14:00
Да, я понимаю, что реализовать можно только макросом, но как
Я написал: Проверять все возможные условия на корректность и очищать ячейки в зависимости от результата проверки.
Если Вы вдруг ждете готовый код, то для начала опишите все условия для формул, которые должны удаляться. Может ли встречаться текст(="привет") внутри формул?
И Юрий полностью правильный вопрос задает: что Вы считаете формулой? Формула для Excel это все, что начинается со знака равно. А что это для Вас?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...

Юрий М

Наверное, из набора штатных функций)) Вижу такой вариант: сначала проверять ячейке на формулу (.HasFormula), затем наличие RU и En символов. Есть есть - не трогать, иначе равно нулю. На всякий случай не забыть и про амперсанд  :)

nadegda

Добрый вечер!
Я,наверное,не совсем корректно описала задачу. Дело в том, что я впервые столкнулась с подобной реализацией
У меня есть огромный диапазон ячеек. Есть три возможных варианта:
1) в ячейке хранится число
тогда я использую HasFormula=False и присваиваю ячейкам ноль. Здесь мне все-все понятно)
2) когда( Как и заметил Юрий) в ячейке стоит знак равентсва и после него следует формула с простейшими операторами (здесь я пробовала задать массив с аски-кодами, но понятия не имею как это реализовать). В этом случае мне нужно обнулить значения тоже
3) а вот это, как я понимаю, самая сложная задача) У меня есть формула со ссылкой на ячейку (например, =A19+34) и я вот должна обнулить значение числа, сохранив при этом формулу.

Нет, я не жду готового кода. Но мне правда очень нужно в этом разобраться, так что огромное спасибо заранее за любой совет!

Юрий М

Т.е. вместо =A19+34 должно получится =A19+0 Так?

nadegda

да-да, но я думаю, что корректнее просто А19
хотя,мне кажется, это неважно))

Юрий М

Пока загляните сюда: http://www.planetaexcel.ru/techniques/7/97/ и сюда: http://www.planetaexcel.ru/techniques/7/98/ Вдруг, пригодится...

nadegda

Большое спасибо, сейчас буду изучать)

Юрий М

Может в эту сторону глянуть?If [B1].Formula Like "*+*" Then
    MsgBox Split([B1].Formula, "+")(0)
End If

nadegda

да, я вот как раз читаю о подобии
просто дело в том, что запись всех символов же обьмна?

Юрий М

Так все Вам и не нужны - всего четыре действия: +, -, /, *

Юрий М

Но это только для варианта =A19+34. А если будет, например, =A19+A20+34, то уже не сработает...

Яндекс.Метрика Рейтинг@Mail.ru