|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.09.2010, 14:44 | #11 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Это не массив, а коллекция.
Про CStr() я недавно читал - в деталях не помню, но это чтоб быстрее работало, можно и не превращать, но тогда будут лишние преобразования. "в массиве будут все значения и в том числе дублирующиеся" - мне кажется, что-то Вы напутали... надо проверить...
webmoney: E265281470651 Z422237915069 R418926282008
|
27.09.2010, 14:48 | #12 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Кстати, если Вам надо просуммировать из G у всех уникальных сочетаний
131 4607028557484 то это можно сделать одним проходом - заносим в коллекцию ключ 131&4607028557484, а Item 22. Затем при повторе ключа увеличиваем Item на Item+значение. Т.е. за один перебор массива получаем сумму значений из G по всем уникальным парам номер+штрихкод. Это надо?
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 27.09.2010 в 14:50. |
27.09.2010, 15:06 | #13 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Вот так например. См. лист2 - только там ещё надо первый столбец разбить, ну это другой вопрос.
Только мне словари больше нравятся... P.S. 65000 строк обрабатывает за 1.78 сек. Но это без вывода на лист - на Excel2000 Transpose глючит, поэтому сам вывод мне на тесте пришлось закомментировать. P.P.S. На 2003 Transpose отработало. Правда на тестовых данных получилось из 65535 строк 65530 уникальных, поэтому обработка заняла 5,09375 сек., а выгрузка ещё 10 сек. (общее время 15,8125 на небыстрой старой машине).
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 27.09.2010 в 23:02. |
28.09.2010, 00:16 | #14 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Возможно я не так понял задачу.На Лист2 я вывел всю таблицу листа опись,но с убранными и проссумироваными дубликатами.На Лист3 вывел повторы
Анализ,обработка данных Недорого
|
28.09.2010, 01:23 | #15 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Совсем забыл.Штрихкод воспринимает как число.Поэтому все строковые штрихкоды не читает,игнорирует.Если вам такой вариант подойдет,надо будет число сохранять как тект с '
Анализ,обработка данных Недорого
|
28.09.2010, 06:32 | #16 | |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
Цитата:
|
|
28.09.2010, 06:40 | #17 |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
|
28.09.2010, 06:46 | #18 | |
Пользователь
Регистрация: 27.09.2010
Сообщений: 40
|
Цитата:
комрад, дайте линк на теорию. нужно делать массив string? размерности = кол.во строк Х кол.во столбцов? или пихать одной строкой в динамический массив? |
|
28.09.2010, 08:41 | #19 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
Суммы совпадают,при добавлении дубликатов для проверки на первом листе две верхние ячейки не попали в расчет.Переделать под строку это не проблема
Анализ,обработка данных Недорого
|
28.09.2010, 09:13 | #20 | |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,166
|
Цитата:
А суть вот - весь диапазон берём в массив (a = Range) и начинаем его перебирать (For i = 1 To UBound(a)) (так быстрее, чем с листа брать). Берём первую пару и заносим эту строку (с вставленным разделителем, чтоб потом можно было назад разобрать) в Dictionary, как Item берём число из G. Берём следующую пару и проверяем - если уже есть в словаре, плюсуем Item с значением G, если нет - добавляем в словарь. Работает быстро, и если нужно, можно параллельно с добавлением в словарь, добавлять в другой массив нужные поля из первого массива. Да и сумму можно сразу в другом массиве плюсовать - как ориентир использовать Item словаря, только тогда в Item заносить не число из G, а порядковый номер. ну это не имеет значения - в коде берётся последняя строка по столбцу А.
webmoney: E265281470651 Z422237915069 R418926282008
Последний раз редактировалось Hugo121; 28.09.2010 в 09:18. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как обойти "преобразование типа из "string" в "float" невозможно" | lexluter1988 | Помощь студентам | 1 | 07.08.2010 12:23 |
Как передать данные типа "дата" из формы в таблицу | Ярослав Блошенко | Microsoft Office Access | 1 | 26.02.2010 18:22 |
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" | aleksei78 | Microsoft Office Excel | 13 | 25.08.2009 12:04 |
Обновление набора данных после добавления в таблицу записей "внешней" программой | dimmm | БД в Delphi | 5 | 21.04.2009 00:56 |