Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.12.2024, 09:01   #1
ольгаг
Форумчанин
 
Регистрация: 22.02.2010
Сообщений: 326
По умолчанию Сравнить 2 массива (чтобы ускорить макрос)

Здравствуйте Уважаемые программисты!

Есть следующая задача в vba-excel:

Происходит выборка блоков в Автокаде и затем запись в столбцы Excel 2х значений - имя Тэга атрибута блока (ячейка A1) и его текстовое значение (ячейка A2). И так по всем блокам в выборке.


тэг1 тэг2 ..
знач1 знач2 ..

При этом, сначала прописываются (*с проверкой на уже записанные в столбцах Excel) имена тэгов в столбцы. А затем в соответствии с именем тэга прописываются текстовые значения этого тэга.

И каждый раз это циклы For..Next.

Подскажите пожалуйста, как можно оптимизировать для большей скорости подобные процедуры: с помощью массивов?

Пример кода:

Код:
For Each lBlockObj In objSelectionSet
      Set lBlock = acadDoc.SelectionSets("TempSSet").Item(I - 1)
           
        varAttributes = lBlockObj.GetAttributes
    
'добавление имен тэгов здесь без проверки что уже есть
        For n = LBound(varAttributes) To UBound(varAttributes)
          Cells(2, at_hed).Value = varAttributes(n).TagString
          at_hed = at_hed + 1
        Next n
    
    'запись атрибутов
    For r = 2 To Col_N1
      For n = LBound(varAttributes) To UBound(varAttributes)
        If varAttributes(n).TagString = Cells(2, r).Value Then ActiveCell.Offset(0, r - 2).Value = varAttributes(n).MTextAttributeContent
      Next n
    Next r
    
    ActiveCell.Offset(1, 0).Activate
    
        Set lBlock = Nothing
      Next lBlockObj
* Возможно ли так: Создать 2 массива - 1) массив из 2-х переменных: имена тэгов, которые уже есть в Excel (в 6 строке от 8 колонки до последней заполненной) и номера колонки, 2) массив из 2-х переменных в блоке из выборки: "имя тэга" и его "значение". Затем сравнивая эти 2 массива по совпадению имен тэгов - если совпадают, то по номеру колонки на строку ниже прописывать значение, Если нет - добавлять в следующую пустую колонку "имя нового тэга" и его "значение на строку ниже *под ним"?

Заранее спасибо!
ольгаг вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Макрос обрабатывается уже более суток. Как ускорить? miker30 Microsoft Office Excel 2 02.10.2019 10:45
Ускорить макрос roborrr Microsoft Office Excel 21 17.12.2017 00:01
помогите ускорить макрос (выборка уникальных по 2-м условиям) kievlyanin Microsoft Office Excel 4 11.12.2014 10:48
2 компа чтобы ускорить 1 hammer.325 Компьютерное железо 5 20.01.2010 12:21
Как ускорить макрос в Excel 2003 polomus Microsoft Office Excel 4 04.12.2009 16:25