![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
() - массив, в данном случае можно и без скобок, в других случаях скобки могут мешать, но тут лучше с скобками
![]() & - as Long $ - as String Лениво писать много букв ![]()
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#13 |
Пользователь
Регистрация: 29.11.2011
Сообщений: 40
|
![]()
IgorGO спасибо большое.
Hugo121. Знаю что нагло но, помогите пожалуйста еще с алгоритмом что зачем вы делаете, та как к сожалению не совсем смог разобраться. А по дурацки просто вставить готовый фрагмент не хочется и все рамно сейчас под vbs переделываю. И эту строку к сожалению никак не пойму ReDim a((1 To tDic.Count + 1), (1 To cDic.Count + 1)) Последний раз редактировалось Dima_com; 12.06.2014 в 16:32. |
![]() |
![]() |
![]() |
#14 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Есть хороший шанс не делать половину работы, если точно известно количество "дейлов" (их имена не важны, код сам определит):
Код:
![]() Только у Вас там некоторые Гайки с пробелами - это нужно убрать до запуска кода. Ну и нет отслеживания конфликтов!
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#15 | |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]() Цитата:
В vbs кажется не работает redim(от до) - там только конечный размер задавался, если не путаю. А что где как - это сейчас некогда комментировать. Да и кода два - может проще второй будет понять, там и словарей почти вполовину меньше ![]()
webmoney: E265281470651 Z422237915069 R418926282008
|
|
![]() |
![]() |
![]() |
#16 |
Пользователь
Регистрация: 29.11.2011
Сообщений: 40
|
![]()
Прошу прошения проблема чуть в другом я не до конца понимаю ваш алгоритм.
Объясните пожалуйста какую роль играют 3 словаря и как они последовательно перебираются. И что значат эта запись: Код:
Пс позже увидел что вы уже ответили. Последний раз редактировалось Dima_com; 12.06.2014 в 17:09. |
![]() |
![]() |
![]() |
#17 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
1. tDic - словарь времени
2. cDic - словарь "cipov-deilov" 3. mDic - main-словарь, сюда собираю исходные данные. Для каждой уникальной пары время-персонаж хранится действие. Заполняем сразу всё одним проходом по массиву данных. В tDic хранится время с номером строки, в cDic персонажи с номером столбца. Когда всё собрано - известно какой итоговый массив нужен, его создаём, и циклом по mDic раскладываем действия по местам - координаты время/персонаж берём из словарей tDic/cDic. Вообще сейчас заметил тонкое место - лучше сделать такую замену: Код:
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#18 |
Пользователь
Регистрация: 29.11.2011
Сообщений: 40
|
![]()
Спасибо большое доделал - переделал - работает(вроде более-менее красиво).
По итогам проделанной работы понял что самая быстрая работа макросов достигается использованием виртуальных массивов Код:
Hugo121, спасибо, это мой приблизительно 5 скрипт на vbs и только сейчас узнал эту простую истину. И конечно, спасибо всему форуму! Последний раз редактировалось Dima_com; 17.06.2014 в 14:04. |
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
В общем случае в этот [a1].CurrentRegion.Value может попасть и например пара сотня столбцов, которые совершенно не нужно анализировать. Да и на такой объём может и памяти не хватить...
Это я к тому, что всё зависти от задачи и конкретного файла - есть смысл брать в массив только нужные данные (можно сделать например 10 параллельных массивов по паре столбцов, если между нужными много лишних столбцов). Чем меньше берёте в массив - тем быстрее всё шевелится и меньше нужно памяти. Но конечно анализировать данные нужно только в массивах, а если нужно иногда посмотреть и на формат - то тогда по этому индексу идём на лист за форматом. Так будет быстрее. И аналогично с результатом - если волнуют только данные, то всё можно делать через массивы. Если ещё и формат - то это уже делаем на листе. Как вариант - есть массив данных и массив с значением формата (например интересует только заливка или цвет шрифта). Вывалили на лист данные, затем можно перебором массива собрать строку адресов диапазонов с одинаковым форматом, сразу весь диапазон изменить. Или через union, если строка слишком длинная получается и делать частями неудобно. Если только начинаете писать vbs - то столкнётесь с тем, что vbs не знает констант Экселя, давайте ему значения - их можно подсмотреть в object browser редактора VBA.
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как сгруппировать 2 запроса между собой? | Predator199 | PHP | 4 | 09.08.2012 22:56 |
Пожобрать текстовые данные | димон4ик_ | Помощь студентам | 2 | 23.10.2011 11:25 |
как сгруппировать строки в Excel? | biv | Microsoft Office Excel | 36 | 04.09.2010 15:00 |
Формулы массива или сгруппировать данные | kzld | Microsoft Office Excel | 10 | 30.11.2009 18:59 |
текстовые данные в С++ | Giffon | Общие вопросы C/C++ | 4 | 29.11.2009 22:39 |