powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL Need help
9 сообщений из 34, страница 2 из 2
EXCEL Need help
    #37627868
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigizmind,

Сколько в результате получится уникальных фраз не столь важно, важнее сколько данных придется перелопатить и тут уж точно не выйдешь пока не пройдешь все 30.000 строк. Проверено - будет ну ооооооооооочень медленно. Если очень хочется, попробуйте вариант во вложении (только не сразу для 30.000, а сначала скажем для 5.000). Серьезней сводной ничего представить не могу.
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627902
sigizmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL)Думаю, что алгоритм сравнения предельно быстрый. Проблема в необходимости создания промежуточного массива результатов сравнений для последующего поиска с пом. ПОИСКПОЗ() и, если честно, я пока не вижу возможности ускорить эту операцию :(
Я тут подумал, надо перевернуть массив и искать первое значение, которое меньше или больше искомого. Типа так: =ПОИСКПОЗ(0;0/(G1:G4000>u1);0)}
Имхо должно быть быстрее... Завтра буду пробовать.
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627913
sigizmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL)sigizmind,

Сколько в результате получится уникальных фраз не столь важно, важнее сколько данных придется перелопатить и тут уж точно не выйдешь пока не пройдешь все 30.000 строк. Проверено - будет ну ооооооооооочень медленно. Если очень хочется, попробуйте вариант во вложении (только не сразу для 30.000, а сначала скажем для 5.000). Серьезней сводной ничего представить не могу.
Дело в том, что уникальные фразы перемешаны примерно равномерно, т.е. все встретятся с большой вероятностью в первых же 100 строках. Ладно, буду пробовать на днях, это не сильно к спеху. Вот с первой задачей надо найти оптимальный алгоритм...
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627922
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sigizmindKL (XL)Думаю, что алгоритм сравнения предельно быстрый. Проблема в необходимости создания промежуточного массива результатов сравнений для последующего поиска с пом. ПОИСКПОЗ() и, если честно, я пока не вижу возможности ускорить эту операцию :(
Я тут подумал, надо перевернуть массив и искать первое значение, которое меньше или больше искомого. Типа так: =ПОИСКПОЗ(0;0/(G1:G4000>u1);0)}
Имхо должно быть быстрее... Завтра буду пробовать.
Думаю, быстрее наверняка не будет с точным поиском, т.е. с 3-м параметром 0. При приблизительном поиске (бинарном) максимальное кол-во сравнений в 40.000 строк - 16, при точном поиске и удаленности искомого в 400 строк будет 400 сравнений.
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627937
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И вообще, я уже упоминал о том, что главный расход ресурсов происходит не по вине ПОИСКПОЗ, а вот тут 0/(G1:G4000>u1). Здесь 80.000 операций (для сравнения ПОИСКПОЗ с опущенным 3-м параметрои производит от 1 до 16). Поскольку диапазон нарастающий и кол-во ячеек колеблется между 1 и 40.000, то среднее кол-во операций на ячейку: 40.000. Теперь умножим 40.000 операций на 80.000 ячеек с формулой (40.000 для мин. + 40.000 для макс.) и получим весьма круглое число операций: 3,200,000,000. Вот, где нужно было бы искать оптимизацию, но увы - с формулами цикл оборвать нельзя (только с функциями поиска).
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627962
sigizmind
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
KL (XL)И вообще, я уже упоминал о том, что главный расход ресурсов происходит не по вине ПОИСКПОЗ, а вот тут 0/(G1:G4000>u1). Здесь 80.000 операций (для сравнения ПОИСКПОЗ с опущенным 3-м параметрои производит от 1 до 16). Поскольку диапазон нарастающий и кол-во ячеек колеблется между 1 и 40.000, то среднее кол-во операций на ячейку: 40.000. Теперь умножим 40.000 операций на 80.000 ячеек с формулой (40.000 для мин. + 40.000 для макс.) и получим весьма круглое число операций: 3,200,000,000. Вот, где нужно было бы искать оптимизацию, но увы - с формулами цикл оборвать нельзя (только с функциями поиска).
Да уж, наверное тогда только обрезать данные для поиска (почти все искомые значения лежат от 1 до 200 строки от той , для которой ищем). Ограничить поиск с 40000 до 200-300 скажем и сделать второй столбец для значений где ошибка (не найдено значение в пределах 200-300строк делать полный поиск в 40000 строк). Как такой вариант? (не найденые в пределах 200-300 строк будет менее 1%).
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627983
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, экономия будет серьезная. См. вложение.
...
Рейтинг: 0 / 0
EXCEL Need help
    #37627994
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот и вложение :)
...
Рейтинг: 0 / 0
EXCEL Need help
    #37628003
KL (XL)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Даже если поставить удаление в 1.000 строк, время будет весьма симпатичное :)

10.000 строк - 4,6953125 сек
40.000 строк - 19,46875 сек
...
Рейтинг: 0 / 0
9 сообщений из 34, страница 2 из 2
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / EXCEL Need help
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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