|
|
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
KL (XL)A-NikДа, действительно, не плохо.... :-) Только его надо чуток подправить, а то аргуметов у МАКС() и МИН() может быть только 32, на сколько я понимаю (в офисах до 2003). Просто вложить полученное в { }... Или в (...): Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Кстати, идея родилась именно с {...}, но перед отправкой в форум я счел это излишним, забыв об ограничении кол-ва параметров :-) Несмотря на то, что ограничения все те же, я тут готовил курс по формулам Excel для продвинутых пользователей, и меня вдруг осенило (наш человек силен-таки задним умом): Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2008, 03:06 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
А как же мой пост от 14.10.2008 DeggasadВариант решения первого подвопроса, обладает уже описанными выше недостатками на ограничение текстовой строки Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2008, 03:10 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
DeggasadА как же мой пост от 14.10.2008 DeggasadВариант решения первого подвопроса, обладает уже описанными выше недостатками на ограничение текстовой строки Код: plaintext Намана!!! Слона-то я и не заметил. А что же ты молчал, когда мы продолжали маятся дурью сильно после твоего ответа :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2008, 03:14 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
KL (XL)DeggasadА как же мой пост от 14.10.2008 DeggasadВариант решения первого подвопроса, обладает уже описанными выше недостатками на ограничение текстовой строки Код: plaintext Намана!!! Слона-то я и не заметил. А что же ты молчал, когда мы продолжали маятся дурью сильно после твоего ответа :-) Ввиду имеющегося недостатка ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2008, 03:23 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
A-NikКстати, один из методов решения варианта 3 невероятно простой! В нём нет ни единой формулы! Только обычные довольно часто используемые возможности экселя! Так что, рекомендую подумать над задачкой всем! Вы будете смеяться, когда увидите насколько он прост! А решив вариант 3, с лёгкостью решите первый и второй! :-) А вот было время, когда не было Офиса с VBA... SQLServer приравнивался к мэйнфремам... Вообще, не было Win... Была, конечно, но NT3, Win3... И никто не задумывался над "один из методов решения варианта 3 невероятно простой". Забивали на это. Ибо уже тогда имелись практически стандарные решения алгоритмов... "Лучшее- враг хорошего" - первый принцип для программиста... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.10.2008, 08:36 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
AndreTM"Лучшее- враг хорошего" - первый принцип для программиста...Что касается меня - то я не согласен относительно этого принципа для программиста :-) А теперь вернёмся к нашим баранам :-) Сделал я тремя способами поиск определённого цвета в заданном диапазоне :-) А потом решил посмотреть насколько мои способы "обгоняют" варианты с циклом. И какого же было моё удивление, когда я увидел, что перебор по всем ячейкам диапазона зачастую оказывается даже быстрее Главное - выявить и исключить из тела цикла наиболее ресурсоёмкую операцию. В данном примере самая ресурсоёмкая операция оказалась Union(), как ни странно! :-) Если выбрать поиск чёрного цвета, вы сразу ощутите разницу в скорости процедур с Union() и без неё (примерно в 10 раз )! Предлагаю взглянуть что у меня получилось! :-) Вывод: В данной задаче использование безциклового поиска формата оказалось неэффективным! . Наиболее эффективно работает процедура поиска цвета на основе метода Find() без использования Union(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.10.2008, 18:06 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
Ну и, наконец, четвёртый способ без цикла, который обогнал по скорости все другие имеющиеся способы !!! :-)) К тому же, он ещё и самый простой! :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2008, 16:21 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
A-NikAndreTM"Лучшее- враг хорошего" - первый принцип для программиста...Что касается меня - то я не согласен относительно этого принципа для программиста :-) ... когда я увидел, что перебор по всем ячейкам диапазона зачастую оказывается даже быстрее Главное - выявить и исключить из тела цикла наиболее ресурсоёмкую операцию... И ви мне будете доказать, шо я не прав? И не надо кричать насчёт неверного квотирования - смысл был ясен всегда. Я говорю об известных алгоритмах. Зачем придумывать (впрочем, конечно, если до вас никто на языке "хума-кику-бос" не программировал - то да, конечно, как круто будет адаптировать сортировку методом пузырька... Или настрадать кучку кода, который уткнётся в предел уже на пятитысячной строке таблицы... Или не проверить граничные значения...) что-то своё - если можно просто объяснять с важным видом всем известные истины... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 09:34 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
AndreTMИ ви мне будете доказать, шо я не прав? И не надо кричать насчёт неверного квотирования - смысл был ясен всегда. Я говорю об известных алгоритмах. Зачем придумывать (впрочем, конечно, если до вас никто на языке "хума-кику-бос" не программировал - то да, конечно, как круто будет адаптировать сортировку методом пузырька... Или настрадать кучку кода, который уткнётся в предел уже на пятитысячной строке таблицы... Или не проверить граничные значения...) что-то своё - если можно просто объяснять с важным видом всем известные истины... Ну, давайте разберёмся, кто из нас прав :-) 1. Размер кода. Сравните размер кода метода 1 и 4 (без цикла) и любой из вариантов с циклом :-) 2. Относительно 5000й строки. Распространил данные до 10000й строки и все три цвета находятся и выделяются без проблем. 3. Скорость. 4й мой вариант работает в разы быстрее любого из варианта с циклом! А на больших диапазонах - в десятки разов быстрее, если использовать обычный неадаптированный алгоритм на основе известный истин (я имею в виду обычный перебор с использованием Union()). Для примера: если скопировать приведённый пример таблицы на 10000 строк, поиск зелёных ячеек методом перебора всех ячеек с исп. Union() справился за 114,84с, мой вариант №4 справился за 0,41с. 4. Сложность алгоритма. Лично для меня сложным является только безцикловый алгоритм №3. Его сразу на помойку (овчинка вычинки не стоит). Варианты 1, 2 и 4 - не сожержат ничего сложного для понимания :-) P.S. В своих ответах я просто показываю возможности экселя. Конечно, тому человеку, который задал вопрос решить эту задачу, подойдёт любой самый простой для его понимания алгоритм. Но иногда мы с талкиваемся с задачами, что эксель "задумывается" на некоторое время, дольше желаемого :-) Именно для таких целей я и придумываю более быстрые способы решения. Конечно же они будут немного сложнее для понимания, и это нормально. Если для того, чтобы эксель справился с задачей на за несколько секунд, а за доли одной секунды вам понадобится выделить пускай даже половину свободно листа под промежуточные ячейки, то разве вы не пойдёте на это :-) Мне, например, не жалко выделить любое количество незадействованных ячеек для увеличения быстродействия программы ! :-) Терпеть не могу задержки ! Меня так раздражает мой Samsung i710, что не передать! Вроде бы проц 416 Мгц, но такое ощущение, что у него Zilog Z80 :)) Так что, просто примите к сведенью имеющиеся возможности экселя и вспомните про них, когда не будет хватать быстродействия ! :-) Примечание: В последнем моём вложении мой первый вариант без цикла перестал работать из-за совпадения имени пользовательской функции GetColor и названия именованной формулы. Не уследил :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.10.2008, 10:54 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
Прислали мне интересный файлик...... Как сделано - не знаю... :-) Повторить не удалось... :-) Может кто тоже хочет попробовать "раскусить" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 17:08 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
A-Nik, Возможно этот файл сделан не в Экселе, а в другой программе, например, в Опен Офисе :-) /topic/571206&pg=1&hl=%f3%e4%e0%eb%e8%f2%fc+%e8%ec%ff В этом топике обсуждались недопустимые имена в файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2008, 18:19 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
а я уверен, что этот файл сделан в Экселе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2008, 10:57 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
DaniilK, Точно :-) Вот сделал по трем столбцам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2008, 11:24 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
Гыыы, действительно ! А ларчик просто открывался Сначала диапазон указываешь на один столбец, задаешь его в Данные/Проверка/Список, а затем указываешь этот диапазон (в данном случае "Организация_Менеджер") на два и более столбцов :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2008, 11:53 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
A-NikГыыы, действительно ! А ларчик просто открывался Сначала диапазон указываешь на один столбец, задаешь его в Данные/Проверка/Список, а затем указываешь этот диапазон (в данном случае "Организация_Менеджер") на два и более столбцов :-) Принцип тот же что и в трюке с с именами листов в именованных формулах. 1) длина именованных формул ограничена 255-ю знаками. 2) имена листов автоматически включаются во все ссылки (кроме сылок типа "!A1") 3) если по вине имен листов лимит превышен и имя не создается... а. сокращаем имена листов до, скажем, "1", "2", "3" и т.д. б. создаем именованную формулу в. возвращаем листам их прежние (длинные) имена г. именованная формула работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.11.2008, 15:00 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
Задача на макрос "Три слова" В ячейках B2:B5 находится пример текста, который необходимо привести к виду, пример которого показан в C2:C5. Правила, по которым сформирован текст в C2:C5: 1 от первоначального текста должно остаться не более 3-х слов 2 должны остаться только слова начинающиеся с большой буквы 3 словом считатьется неразрывная последовательность текстовых символов (знаки припинания, цифры и другие символы игнорировать) состоящая не менее чем из 3-х символов в ячейках могут встречаться только русские буквы, цифры, знаки припинния, кавычки, скобки и пр. файл прилагается ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 12:57 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
Парсить строку по пробелам, счётчик на заглавные буквы не более 1 в слове, если найденных таким образом слов Ю 3? то выход из цыкла. Не так сложно, только от кавычек надо избавляться... Я думаю, по ascii можно принимать в рассчёт только буквы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 17:05 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
*цикла ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 17:05 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
к сожалению, я в ВБА не разбираюсь вообще, но оч. надеюсь, что кто-то откликнется и поможет... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 17:15 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
забыл добавить: слово не всегда может заканчиваться на пробел. конец слово это любой символ - не буква ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.01.2009, 17:18 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
Слова должны разделяться пробелами. Иначе никакой макрос не поможет :) А всякие там ковычки - потом поудалять, просто сделав небольшой справочник того, что надо искать и заменять на пустое место. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 10:09 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
поудалять вручную? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 13:54 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
DaniilKпоудалять вручную? да вот ещё! Сверять посимвольно со справочниом ненужных символов программно и всё. Вам на форум vba надо. ща просто работы много, не успеваю вам помочь. но это очень просто. нужно только время... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 14:08 |
|
||
|
Задачи со звездочкой * (только для настоящих профи)-2
|
|||
|---|---|---|---|
|
#18+
DaniilKЗадача на макрос "Три слова" В ячейках B2:B5 находится пример текста, который необходимо привести к виду, пример которого показан в C2:C5. Правила, по которым сформирован текст в C2:C5: 1 от первоначального текста должно остаться не более 3-х слов 2 должны остаться только слова начинающиеся с большой буквы 3 словом считатьется неразрывная последовательность текстовых символов (знаки припинания, цифры и другие символы игнорировать) состоящая не менее чем из 3-х символов в ячейках могут встречаться только русские буквы, цифры, знаки припинния, кавычки, скобки и пр. файл прилагаетсяДумаю, что этот вариант с формулами тебе поможет, если ты предварительно обработаешь данные заменив все не нужные символы на пробелы. Возможно у кого-то это получится в одной формуле http://www.sql.ru/forum/actualthread.aspx?tid=195493&hl=%e4%eb%f1%f2%f0#2858599 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 14:53 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=35636789&tid=2178833]: |
0ms |
get settings: |
7ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
160ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
47ms |
get tp. blocked users: |
1ms |
| others: | 211ms |
| total: | 450ms |

| 0 / 0 |
