powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Задачи со звездочкой * (только для настоящих профи)-2
25 сообщений из 142, страница 4 из 6
Задачи со звездочкой * (только для настоящих профи)-2
    #35602147
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)A-NikДа, действительно, не плохо.... :-) Только его надо чуток подправить, а то аргуметов у МАКС() и МИН() может быть только 32, на сколько я понимаю (в офисах до 2003). Просто вложить полученное в { }...
Или в (...):

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
Sub SelectionQuadrant()
    With Selection
    a = "1+MAX((" & Replace(Replace(Replace(.EntireColumn.Address( 1 ,  0 , xlR1C1), "C[", ""), "]", ""), ":", ",") & "))"
        colMax = Evaluate("1+MAX((" & Replace(Replace(Replace(.EntireColumn.Address( 1 ,  0 , xlR1C1), "C[", ""), "]", ""), ":", ",") & "))")
        colMin = Evaluate("1+MIN((" & Replace(Replace(Replace(.EntireColumn.Address( 1 ,  0 , xlR1C1), "C[", ""), "]", ""), ":", ",") & "))")
        rowMax = Evaluate("1+MAX((" & Replace(Replace(Replace(.EntireRow.Address( 0 ,  1 , xlR1C1), "R[", ""), "]", ""), ":", ",") & "))")
        rowMin = Evaluate("1+MIN((" & Replace(Replace(Replace(.EntireRow.Address( 0 ,  1 , xlR1C1), "R[", ""), "]", ""), ":", ",") & "))")
    End With
    Range(Cells(rowMin, colMin), Cells(rowMax, colMax)).Select
End Sub

Кстати, идея родилась именно с {...}, но перед отправкой в форум я счел это излишним, забыв об ограничении кол-ва параметров :-)
Несмотря на то, что ограничения все те же, я тут готовил курс по формулам Excel для продвинутых пользователей, и меня вдруг осенило (наш человек силен-таки задним умом):

Код: plaintext
1.
2.
Sub test()
    Range(Replace(Selection.Address( 0 ,  0 ), ",", ":")).Select
End Sub
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35602149
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как же мой пост от 14.10.2008

DeggasadВариант решения первого подвопроса, обладает уже описанными выше недостатками на ограничение текстовой строки
Код: plaintext
Range(Replace(Selection.Address( 0 ,  0 ), ",", ":")).Select
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35602150
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DeggasadА как же мой пост от 14.10.2008

DeggasadВариант решения первого подвопроса, обладает уже описанными выше недостатками на ограничение текстовой строки
Код: plaintext
Range(Replace(Selection.Address( 0 ,  0 ), ",", ":")).Select

Намана!!! Слона-то я и не заметил. А что же ты молчал, когда мы продолжали маятся дурью сильно после твоего ответа :-)
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35602152
Deggasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
KL (XL)DeggasadА как же мой пост от 14.10.2008

DeggasadВариант решения первого подвопроса, обладает уже описанными выше недостатками на ограничение текстовой строки
Код: plaintext
Range(Replace(Selection.Address( 0 ,  0 ), ",", ":")).Select

Намана!!! Слона-то я и не заметил. А что же ты молчал, когда мы продолжали маятся дурью сильно после твоего ответа :-)
Ввиду имеющегося недостатка
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35602177
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A-NikКстати, один из методов решения варианта 3 невероятно простой! В нём нет ни единой формулы! Только обычные довольно часто используемые возможности экселя! Так что, рекомендую подумать над задачкой всем! Вы будете смеяться, когда увидите насколько он прост! А решив вариант 3, с лёгкостью решите первый и второй! :-)
А вот было время, когда не было Офиса с VBA... SQLServer приравнивался к мэйнфремам... Вообще, не было Win... Была, конечно, но NT3, Win3... И никто не задумывался над "один из методов решения варианта 3 невероятно простой". Забивали на это. Ибо уже тогда имелись практически стандарные решения алгоритмов... "Лучшее- враг хорошего" - первый принцип для программиста...
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35607520
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AndreTM"Лучшее- враг хорошего" - первый принцип для программиста...Что касается меня - то я не согласен относительно этого принципа для программиста :-)

А теперь вернёмся к нашим баранам :-) Сделал я тремя способами поиск определённого цвета в заданном диапазоне :-) А потом решил посмотреть насколько мои способы "обгоняют" варианты с циклом. И какого же было моё удивление, когда я увидел, что перебор по всем ячейкам диапазона зачастую оказывается даже быстрее Главное - выявить и исключить из тела цикла наиболее ресурсоёмкую операцию. В данном примере самая ресурсоёмкая операция оказалась Union(), как ни странно! :-) Если выбрать поиск чёрного цвета, вы сразу ощутите разницу в скорости процедур с Union() и без неё (примерно в 10 раз )!
Предлагаю взглянуть что у меня получилось! :-)

Вывод: В данной задаче использование безциклового поиска формата оказалось неэффективным! . Наиболее эффективно работает процедура поиска цвета на основе метода Find() без использования Union().
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35609711
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну и, наконец, четвёртый способ без цикла, который обогнал по скорости все другие имеющиеся способы !!! :-)) К тому же, он ещё и самый простой! :-)
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35621967
Фотография AndreTM
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A-NikAndreTM"Лучшее- враг хорошего" - первый принцип для программиста...Что касается меня - то я не согласен относительно этого принципа для программиста :-)
...
когда я увидел, что перебор по всем ячейкам диапазона зачастую оказывается даже быстрее Главное - выявить и исключить из тела цикла наиболее ресурсоёмкую операцию...

И ви мне будете доказать, шо я не прав?

И не надо кричать насчёт неверного квотирования - смысл был ясен всегда. Я говорю об известных алгоритмах. Зачем придумывать (впрочем, конечно, если до вас никто на языке "хума-кику-бос" не программировал - то да, конечно, как круто будет адаптировать сортировку методом пузырька... Или настрадать кучку кода, который уткнётся в предел уже на пятитысячной строке таблицы... Или не проверить граничные значения...) что-то своё - если можно просто объяснять с важным видом всем известные истины...
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35622210
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
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 и названия именованной формулы. Не уследил :-)
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35628766
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Прислали мне интересный файлик...... Как сделано - не знаю... :-) Повторить не удалось... :-)
Может кто тоже хочет попробовать "раскусить" ?
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35629056
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A-Nik,
Возможно этот файл сделан не в Экселе, а в другой программе, например, в Опен Офисе
:-)
/topic/571206&pg=1&hl=%f3%e4%e0%eb%e8%f2%fc+%e8%ec%ff
В этом топике обсуждались недопустимые имена в файле.
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35636789
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а я уверен, что этот файл сделан в Экселе
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35636927
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilK,

Точно :-)
Вот сделал по трем столбцам
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35637069
A-Nik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гыыы, действительно ! А ларчик просто открывался Сначала диапазон указываешь на один столбец, задаешь его в Данные/Проверка/Список, а затем указываешь этот диапазон (в данном случае "Организация_Менеджер") на два и более столбцов :-)
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35637774
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
A-NikГыыы, действительно ! А ларчик просто открывался Сначала диапазон указываешь на один столбец, задаешь его в Данные/Проверка/Список, а затем указываешь этот диапазон (в данном случае "Организация_Менеджер") на два и более столбцов :-)
Принцип тот же что и в трюке с с именами листов в именованных формулах.

1) длина именованных формул ограничена 255-ю знаками.
2) имена листов автоматически включаются во все ссылки (кроме сылок типа "!A1")
3) если по вине имен листов лимит превышен и имя не создается...
а. сокращаем имена листов до, скажем, "1", "2", "3" и т.д.
б. создаем именованную формулу
в. возвращаем листам их прежние (длинные) имена
г. именованная формула работает
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35759031
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача на макрос "Три слова"

В ячейках B2:B5 находится пример текста, который необходимо привести к виду, пример которого показан в C2:C5. Правила, по которым сформирован текст в C2:C5:
1 от первоначального текста должно остаться не более 3-х слов
2 должны остаться только слова начинающиеся с большой буквы
3 словом считатьется неразрывная последовательность текстовых символов (знаки припинания, цифры и другие символы игнорировать) состоящая не менее чем из 3-х символов

в ячейках могут встречаться только русские буквы, цифры, знаки припинния, кавычки, скобки и пр.

файл прилагается
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35759818
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парсить строку по пробелам, счётчик на заглавные буквы не более 1 в слове, если найденных таким образом слов Ю 3? то выход из цыкла. Не так сложно, только от кавычек надо избавляться...
Я думаю, по ascii можно принимать в рассчёт только буквы.
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35759820
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
*цикла
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35759853
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
к сожалению, я в ВБА не разбираюсь вообще, но оч. надеюсь, что кто-то откликнется и поможет...
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35759861
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл добавить: слово не всегда может заканчиваться на пробел. конец слово это любой символ - не буква
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35760718
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Слова должны разделяться пробелами. Иначе никакой макрос не поможет :) А всякие там ковычки - потом поудалять, просто сделав небольшой справочник того, что надо искать и заменять на пустое место.
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35761408
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
поудалять вручную?
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35761453
PlanB
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DaniilKпоудалять вручную?
да вот ещё!

Сверять посимвольно со справочниом ненужных символов программно и всё. Вам на форум vba надо. ща просто работы много, не успеваю вам помочь. но это очень просто. нужно только время...
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35761610
Сергей06
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
...
Рейтинг: 0 / 0
Задачи со звездочкой * (только для настоящих профи)-2
    #35761724
DaniilK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей06, спасибо, интересные примеры
но, все-таки, это не то :(
...
Рейтинг: 0 / 0
25 сообщений из 142, страница 4 из 6
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Задачи со звездочкой * (только для настоящих профи)-2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]