Я просмотрел Google и Stack примеры того, что я пытаюсь сделать, в то время как я нашел несколько примеров выполнения части того, что я пытаюсь сделать, у меня возникают проблемы выполняя желаемый результат. Я включил приведенный ниже код, который, похоже, будет выглядеть так, как я буду делать. К сожалению, я получаю «Подзаголовок вне диапазона», который, как я полагаю, имеет отношение к моему синтаксису.Сортировка коллекции столбцов на основе диапазона
На скриншотах включены Я пытаюсь сортировать столбцы, найденные на «Sheet2», порядка значений, найденных в столбце A на «Sheet1». Понятно, что
Я считаю, что лучшим маршрутом было бы присвоение значений в sheet1 массиву, столбцам в sheet2 для массива и последующему порядку array2 в соответствии с массивом.
Любые мысли о том, как это сделать? Любая помощь приветствуется:
Public Sub sortColumn()
Dim rng As Range
Dim i As Integer
Dim J As Integer
Dim Temp
Dim nams As Variant
Dim F
Dim Dex As Integer
Dim Arr As Variant
nams = Array(Worksheets("Sheet1").Range("A1:A350").Value2)
Set rng = Worksheets("Sheet2").Range("B1:JS1")
For i = 1 To rng.Columns.Count
For J = i To rng.Columns.Count
For F = 0 To UBound(nams)
If nams(F) = rng(J) Then Dex = F: Exit For
Next F
If F < i Then
Temp = rng.Columns(i).value
rng(i).Resize(rng.Rows.Count) = rng.Columns(J).value
rng(J).Resize(rng.Rows.Count) = Temp
End If
Next J
Next i
End Sub
Над кодом, как указано выше, результаты в «Sub сценария из диапазона». Я проверял имена диапазонов, и они действительны. Ниже графики показывают, что я работаю с:
Вы можете создать собственный список, основанный на листе один, два рода листа слева направо, а затем удалить пользовательский список, который вы только что создали. Вдоль тех же строк, что и [this] (http://stackoverflow.com/questions/6100944/code-an-excel-vba-sort-with-a-custom-order-and-a-value-containing-commas) –
Когда вы создаете собственный список, список остается статичным. Значения на листе1, к сожалению, постоянно меняются, – Singularity20XX
Каждый раз, когда вы запускаете код, он будет искать лист и создать новый пользовательский список на основе того, что там есть. Затем, когда вы отсортировали лист два, он удаляется. загрузите все в массив, передайте этот массив в пользовательский список. Он будет меняться каждый раз, когда он будет запущен. –