#vba #excel
#vba #excel
Вопрос:
У меня есть эта строка кода:
sourceRange = wbkSourceFile.Worksheets(1).Range(Cells(1, 1), Cells(lengthOfArray, widthOfArray))
Он должен взять диапазон из листа, который я загружаю в макрос, и поместить его в массив, чтобы я мог выполнить некоторые вычисления, а затем поместить полученные данные на другой лист. Если мне нужно, чтобы эти данные были отсортированы по трем столбцам в исходных данных для выполнения вычислений, лучше ли выполнять сортировку на листе перед копированием диапазона в массив (т.Е. Выполнить приведенный выше код) или заполнить массив, а затем отсортировать данные?
Короче говоря, лучше ли сортировать данные рабочего листа, а затем загружать массив или просто сортировать массив после этого?
Ответ №1:
Основное отличие заключается в том, что если вы выполните сортировку, исходный лист будет отсортирован. Если сортировка выполняется подразделом, исходный лист можно оставить неизмененным.
Кроме того, если вы собираетесь часто повторять этот процесс, выполнение сортировки подразделом сэкономит вам некоторое время при каждой обработке данных.
Комментарии:
1. Но есть ли вообще способ отсортировать массив по трем столбцам? Я не думаю, что алгоритм быстрой сортировки может это сделать. Мой единственный оставшийся вопрос: могу ли я выполнить сортировку листа в коде?
2. @VinnyGuitara с помощью кода вы можете сортировать по любому количеству столбцов.
Ответ №2:
в vba нет встроенных функций сортировки, поэтому, если бы вы хотели сделать это с помощью кода, вам пришлось бы написать / найти алгоритм сортировки. Это будет очень сложно, если вы сортируете по нескольким столбцам. Таким образом, я бы сказал, что лучше всего использовать Range .Сортировка для сортировки данных в рабочей книге.