2015-10-07 4 views
-3

Я пытаюсь разработать, казалось бы, легкую задачу, и если бы у меня было время и преданность делу, я бы, вероятно, смог ее решить сам.Сортировка столбца, основанная на значениях в столбце

Однако из-за нехватки времени и отсутствия тщательного VBA и/или знание Excel, я застрял со следующим:

первенствовать распространения листа с 1 колонке (C в моем случае) с данными. Строка 1 содержит заголовок, строка 2. Строка 3 по 655 содержат данные в следующем формате:

1.25L Soft Drinks - 7 Up 
1.25L Soft Drinks - Coke 
1.25L Soft Drinks# - 7 Up 
1.25L Soft Drinks# - Coke 

В основном все данные в колонке C содержит дубликат, будучи единственной разницей # тегов. Мне очень хотелось бы сортировать столбец C таким образом, чтобы на странице были отображены продукты без ввода, отсортированы в алфавитном порядке, а продукты с # отображаются внизу, также отсортированы в алфавитном порядке. Приятно иметь пустую строку между набором данных с # и набором данных w/o #.

Я уверен, что аналогичные коды или другие методы были разработаны раньше, но после 3 довольно раздражающих и тратящих время на поиск в Интернете, мой босс действительно не хочет, чтобы я продолжал :(Я должен был бы это сделать несколько раз, поэтому я с нетерпением жду кода VBA.

+1

Добавить вспомогательный столбец с чем-то вроде '= IF (ISERROR (FIND ("#", C3)), 1,2)' Сортировать по этой колонке, а затем ваши данные в ColC. –

ответ

0

Вы можете запустить пользовательские данные Range.Sort method, добавив вспомогательный столбец, который определяет, существует ли символ хеш-символа в описании Использовать это как основной ключ сортировки и столбец C в качестве вторичного ключа сортировки.

Sub hash_sort() 
    With Worksheets("Sheet1") '<~~ set this properly 
     With .Cells(1, 1).CurrentRegion 
      With .Resize(.Rows.Count - 1, .Columns.Count + 1).Offset(1, 0) 
       .Columns(.Columns.Count).Cells.Formula = "=isnumber(find(char(35), C2))" 
       .Cells.Sort Key1:=.Columns(.Columns.Count), Order1:=xlAscending, _ 
          Key2:=.Columns(3), Order2:=xlAscending, _ 
          Orientation:=xlTopToBottom, Header:=xlYes 
       .Columns(.Columns.Count).EntireColumn.Delete 
      End With 
     End With 
    End With 
End Sub 

Столбец «помощник» немедленно удаляется после выполнения его цели.

Custom Sort on Hashmark with helper column

+0

Привет @Jeeped, Спасибо за решение! –

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