Наш доблестный, уважаемый и всеми любимый администратор форума поставил передо мной задачу написать скрипт подсветки формул, аналогичный подсветке формул в Excel. Согласно написанного им мануала подсвечиваются:
ПАРНЫЕ скобки, если их более одной пары во вложенных функциях формулы, но справа-налево
Для того, чтобы написать скрипт, мне необходимо ваше участие, в частности, нужны разноплановые примеры записи "(ячейка, диапазон, именованный диапазон)"
Спасибо за участие
Всем привет!
Наш доблестный, уважаемый и всеми любимый администратор форума поставил передо мной задачу написать скрипт подсветки формул, аналогичный подсветке формул в Excel. Согласно написанного им мануала подсвечиваются:
ПАРНЫЕ скобки, если их более одной пары во вложенных функциях формулы, но справа-налево
Для того, чтобы написать скрипт, мне необходимо ваше участие, в частности, нужны разноплановые примеры записи "(ячейка, диапазон, именованный диапазон)"
гы. любая последовательность букв-цифр-подчеркиваний, начинающаяся с буквы причем для ex 2003 и старше AAA1 или Z1000000 - это, возможно, имена. а для ex 2007 и младше AAA1 или Z1000000 - это адреса ячеек и ничего больше. бонус: зато со списком названий функций сверяться не надо - имена могут полностью совпадать с ними
четыре варианта записи адреса в нотации A1, четыре же - в нотации R1C1 плюс варианты на диапазоны чисто столбцов (A:A, $A:$B, B:C, $B:D, B:$D, C1, C[-1], C1:C[3] и т.п.) и, аналогично, строк.
все остальные заморочки могут быть с наличием "удовлетворяющего" условиям, но находящихся внутри кавычек текста, например
Код
=найти("!";"обманка!A1:A10";1)
то же - по скобкам и прочая.
пс. а синтаксис функций проверять не бум?
ппс. в случае победы доблестному администратору одним ящиком хенесси не отделаться
Цитата (nerv)
именованный диапазон
гы. любая последовательность букв-цифр-подчеркиваний, начинающаяся с буквы причем для ex 2003 и старше AAA1 или Z1000000 - это, возможно, имена. а для ex 2007 и младше AAA1 или Z1000000 - это адреса ячеек и ничего больше. бонус: зато со списком названий функций сверяться не надо - имена могут полностью совпадать с ними
четыре варианта записи адреса в нотации A1, четыре же - в нотации R1C1 плюс варианты на диапазоны чисто столбцов (A:A, $A:$B, B:C, $B:D, B:$D, C1, C[-1], C1:C[3] и т.п.) и, аналогично, строк.
все остальные заморочки могут быть с наличием "удовлетворяющего" условиям, но находящихся внутри кавычек текста, например
Код
=найти("!";"обманка!A1:A10";1)
то же - по скобкам и прочая.
пс. а синтаксис функций проверять не бум?
ппс. в случае победы доблестному администратору одним ящиком хенесси не отделаться ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Пятница, 04.01.2013, 05:24
В этом случае подсветки не будет, т.к. подсвечиваются только ссылки, а не текст Всё что в кавычках - не является ссылкой
Цитата (ikki)
то же - по скобкам и прочая.
Ага
Цитата (ikki)
синтаксис функций проверять не бум?
Нет
Цитата (nerv)
на текущем листе можно так записать ИмяЛиста!A1 и будет работать
Тут вот какое дело... На форуме нет текущего листа, поэтому будем считать что такого вида запись исключена, т.е. такую ссылку приравниваем к ссылке на неактивный лист
Цитата (ikki)
это, возможно, имена
Цитата (ikki)
это адреса ячеек
И подсвечиваются они одинаково
Цитата (ikki)
Код
=найти("!";"обманка!A1:A10";1)
В этом случае подсветки не будет, т.к. подсвечиваются только ссылки, а не текст Всё что в кавычках - не является ссылкой
Цитата (ikki)
то же - по скобкам и прочая.
Ага
Цитата (ikki)
синтаксис функций проверять не бум?
Нет
Цитата (nerv)
на текущем листе можно так записать ИмяЛиста!A1 и будет работать
Тут вот какое дело... На форуме нет текущего листа, поэтому будем считать что такого вида запись исключена, т.е. такую ссылку приравниваем к ссылке на неактивный листSerge_007
имена диапазонов подсвечиваются одинаково (одним и тем же цветом)?
О как!.. А я думал что хотя бы на пару процентов знаю Excel...
Нет, тут всё сложнее. Если имя ссылается на другой лист - то подсветки нет, а если на текущий - то да, синеньким подсвечиваются все... Как это реализовать - не знаю, думаю...
Цитата (nerv)
имена диапазонов подсвечиваются одинаково (одним и тем же цветом)?
О как!.. А я думал что хотя бы на пару процентов знаю Excel...
Нет, тут всё сложнее. Если имя ссылается на другой лист - то подсветки нет, а если на текущий - то да, синеньким подсвечиваются все... Как это реализовать - не знаю, думаю...Serge_007
т.е. цвет первой ссылки B1 идентичен цвету второй ссылки B1. Так?
Проверил - подсвечиваются одинаково даже если будет формула:
Код
=B1+B1+C1+C1+B1
то B1 - синие во всех трех случаях
Кроме того, имена подсвечиваются если они имеют ссылки, но при этом не будут "светится", если они не ссылки (вычисляются по формуле, являются константой или массивом констант, являются ссылкой на другой лист) Если имя является ссылкой на B1, то оно также будет одсвечиватся синим цветом, если используется в формуле
Предлагаю не подсвечивать имена вообще
Цитата (nerv)
т.е. цвет первой ссылки B1 идентичен цвету второй ссылки B1. Так?
Проверил - подсвечиваются одинаково даже если будет формула:
Код
=B1+B1+C1+C1+B1
то B1 - синие во всех трех случаях
Кроме того, имена подсвечиваются если они имеют ссылки, но при этом не будут "светится", если они не ссылки (вычисляются по формуле, являются константой или массивом констант, являются ссылкой на другой лист) Если имя является ссылкой на B1, то оно также будет одсвечиватся синим цветом, если используется в формуле
Тут вот какое дело... На форуме нет текущего листа, поэтому будем считать что такого вида запись исключена, т.е. такую ссылку приравниваем к ссылке на неактивный лист
Цитата (Serge_007)
Или как в Excel - или никак
уже ни как в Excel
Цитата (Serge_007)
Тут вот какое дело... На форуме нет текущего листа, поэтому будем считать что такого вида запись исключена, т.е. такую ссылку приравниваем к ссылке на неактивный лист
Serge_007, ты уж определись с именами, или светим или нет. Если первое, набор правил, что является именем. Опять-таки, одинаковые имена светятся одинаково?
Как в эксель 1:1 не будет. Если не согласен, лучше прекратить работу сейчас.
Serge_007, ты уж определись с именами, или светим или нет. Если первое, набор правил, что является именем. Опять-таки, одинаковые имена светятся одинаково?
Как в эксель 1:1 не будет. Если не согласен, лучше прекратить работу сейчас.nerv
Чебурашка стал символом олимпийских игр. А чего достиг ты? Тишина - самый громкий звук
как ты узнаешь без файла Excel, чем является имя - ссылкой или нет?
Думаю, что такой компромисс разумен: ВСЕ имена подсвечивать. Мала вероятность что кто-то (кроме отвечающих, да и то в редких случаях) будет использовать имя без ссылок
ЗЫ Имена вообще крайне редко используют при выкладывании на форум, так что % отклонения должен быть мизерно низок
Цитата (nerv)
уже ни как в Excel
Та не, тут вариантов нет
Цитата (MCH)
как ты узнаешь без файла Excel, чем является имя - ссылкой или нет?
Думаю, что такой компромисс разумен: ВСЕ имена подсвечивать. Мала вероятность что кто-то (кроме отвечающих, да и то в редких случаях) будет использовать имя без ссылок
ЗЫ Имена вообще крайне редко используют при выкладывании на форум, так что % отклонения должен быть мизерно низокSerge_007
честно говоря, вообще не вижу (ай! не бейте меня пагалаве! щикотно ж...) серьезного смысла подсвечивать на форуме адреса (имена). основное назначение такой подсветки в Excel - именно для визуальной связи формулы с текущим листом. именно поэтому "внешние" адреса и имена не подсвечиваются.
на форуме это будет новогодняя гирлянда - да и только. ибо листа и ячеек нет.
вот скобки - другое дело. хотя... они и в эксе почти сливаются
честно говоря, вообще не вижу (ай! не бейте меня пагалаве! щикотно ж...) серьезного смысла подсвечивать на форуме адреса (имена). основное назначение такой подсветки в Excel - именно для визуальной связи формулы с текущим листом. именно поэтому "внешние" адреса и имена не подсвечиваются.
на форуме это будет новогодняя гирлянда - да и только. ибо листа и ячеек нет.
вот скобки - другое дело. хотя... они и в эксе почти сливаются ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki