2015-10-15 4 views
0

Я использую этот код:Сортировка по конкретному столбцу

Sub CopyUniqueCityList() 

Dim rCityList As Range 

With Sheets("MasterSheet") 
    With .Range(.Range("F1"), .Range("F1").End(xlDown)) 
     .AdvancedFilter Action:=xlFilterInPlace, Unique:=True 
     Set rCityList = .SpecialCells(xlCellTypeVisible) 
    End With 
    .ShowAllData 
End With 

Dim ws As Worksheet 
For Each ws In Worksheets 

    If ws.Visible = xlSheetVisible And ws.Name <> "MasterSheet" Then 

     rCityList.Copy ws.Range("F1") 

    End If 

Next 

End Sub 

получить уникальный список скопированный на разных листах. Все это прекрасно работает. (Спасибо Scott ... :-))

В любом случае, теперь я пытаюсь сортировать по этому уникальному списку.

Я пытаюсь сделать сортировку в порядке, но должен ли я пытаться использовать С?

В любом случае, я продолжаю получать ошибки. Я начал с записи макроса и добрался до:

ws.Range("F1:F").Sort key1:=Columns(6), order1:=xlAscending, Header:=xlYes 

, но сорт продолжает ускользать от меня.

ответ

0

Во-первых, «F1: F» не является допустимым диапазоном. Либо используйте «F: F» для всего столбца, либо «F1: F100» для части столбца.

Кроме того, где у вас есть ws.Range («F: F») ..., вы действительно хотите, чтобы вся таблица сортировалась, а не только столбец, который вы сортируете. Например, если у вас есть столбец справа, который вы хотите отсортировать по столбцу F, используйте тот же код, но начните с ws.Range («F: G») ...

Если вы положите это в блоке «С» это будет выполняться только по основному листу. Я предполагаю, что вы хотите его в For Loop, который будет выполняться один раз для каждого листа, кроме MasterSheet

+0

Вы правы, я действительно не хочу, чтобы это было сделано на главной странице. Я использовал ваше предложение и все еще получаю сообщение об ошибке: ссылка на сортировку недействительна. Убедитесь, что он находится в пределах данных, которые вы хотите отсортировать, и первый поле «Сортировка» не совпадает с пробелом. – okmred

+0

Хорошо, вы оба помогли решить проблему. Я добавил следующее для ... и tada ... это сработало. ws.Range («F: H»). Ключ сортировки1: = ws.Columns («F»), order1: = xlAscending, Header: = xlYes Не уверен, как дать вам оба кредита ?? Спасибо ребятам! – okmred

0

Попробуйте заменить ключ1: = Столбцы (6) с ключом1: = ws.Columns ("F1").

Не имеет значения здесь, но если предположить, что ваши данные в столбце F не имеют ничего другого под ним, вы можете использовать VBA для поиска последней строки в столбце F с данными. Похож -> ws.Range («F1: F» & ws.Cells (ws.Rows.Count, «F»). End (xlUp) .Row).

+0

Это было частью проблемы. Key1: = ws.Columns ("F1"). ....Смотри ниже. Благодаря!! – okmred

Смежные вопросы