Excel VBA Удалить столбец массива в двойном цикле для повышения производительности - PullRequest
0 голосов
/ 10 сентября 2018

Я хочу ускорить мой код. Мой код состоит из двойного цикла, изначально циклически проходящего по заголовкам главной таблицы, за которым следует цикл (вложенный) по исходному массиву для вставки исходных данных всякий раз, когда совпадают главный и исходный заголовки (порядок столбцов исходного массива время от времени меняется ) Мой код ATM импортирует 1000 строк данных в 113 столбцах за 8 секунд.

Моя идея для оптимизации кода заключается в том, чтобы удалить соответствующий столбец массива во вложенном цикле после наложения значений, таким образом уменьшая количество заголовков массива для поиска для каждого успешного взаимодействия цикла. Это возможно? это заставит мой код работать быстрее?

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

SourceWB.Sheets(1).UsedRange

... и мне интересно, как можно исключить заголовок массива каждый раз, когда цикл успешно совпадает с заголовками.

   'Loop through master table headers
    For x = 1 To MasterTable.HeaderRowRange.Count

        'Loop through array headers and copy values to master
        For i = LBound(ArrImport, 2) To UBound(ArrImport, 2)

            If MasterTable.Range(1, x).Value = ArrImport(1, i) Then
                MainWB.Sheets("Brdx").Range(Cells(h, x).Address, Cells(h + SourceTable.ListRows.Count - 1, x).Address).Value = _
                SourceWB.Sheets(1).Range(SourceTable.ListColumns(i).DataBodyRange.Address).Value


                Exit For
            End If

        Next i
    Next x

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...