Excel - Как отсортировать и удалить избыточное значение?

вопрос

Я пытался отсортировать данные о наших пациентах в нашей повседневной работе в лаборатории, как показано ниже:

 "sample external no" "barcode" "assay" 4 321456 amf 9 125487 amf 10 155886 amf 15 162533 amf 45 154878 amf 48 124569 amf 1 750122 bupo 5 156453 bupo 6 145896 bupo 10 155886 bupo 11 114456 bupo 13 357456 bupo 15 162533 bupo 17 789456 bupo 18 158456 bupo 45 154878 bupo 48 124569 bupo 1 750122 canno 5 156453 canno 8 159456 canno 20 145698 canno 25 123456 canno 45 154878 canno 48 124569 canno 1 750122 metamfo 2 112563 metamfo 15 162533 metamfo 45 12 154 454 697 694 45694 metamfo 

где эти данные наполовину делаются по-прежнему в процессе сортировки, в противном случае первый столбец будет случайным, где я хочу получить конец сортировки на основе столбца A в порядке возрастания, но это на основе столбца C. Если есть значение в столбец A, повторенный с другим значением в столбце CI, хотел бы, чтобы он сортировался как

 4 321456 amf 9 125487 amf 10 155886 amf, bupo, 15 162533 amf, bupo, metamfo 45 154878 amf, bupo, canno, metamfo 48 124569 amf, bupo, canno, metamfo 1 750122 bupo, canno, metamfo 5 156453 bupo, canno 6 145896 bupo 11 114456 bupo 13 357456 bupo 17 789456 bupo 18 158456 bupo 8 159456 canno 20 145698 canno 25 123456 canno 2 112563 metamfo 28 112254 metamfo 

Если это так, найти образец будет довольно легко. Не могли бы вы мне помочь.

Решение

Вот макрос, который сделает это:

 Sub sortAndRemove () Dim lRow As Long Dim sExtNum As String Dim sBarCode As String Cells.Select Selection.Sort _ Key1: = Range ("A2"), _ Order1: = xlAscending, _ Key2: = Range ("B2"), _ Order2: = xlAscending, _ Key3: = Range ("C2"), _ Order3: = xlAscending, _ Заголовок: = xlYes, _ OrderCustom: = 1, _ MatchCase: = False, _ Ориентация: = xlTopToBottom, _ DataOption1: = xlSortNormal, _ DataOption2: = xlSortNormal, _ DataOption3: = xlSortNormal lRow = 2 sExtNum = Ячейки (lRow, "A") sBarCode = Ячейки (lRow, "B") Делают Пока (Ячейки (lRow, "A") "" ) Если ячейки (lRow + 1, «A») = sExtNum And (Ячейки (lRow + 1, «B») = sBarCode) Тогда если ячейки (lRow, «C») »« Тогда ячейки (lRow, «C») = Клетки (lRow, "C") & ", " & Cells (lRow + 1, "C") Строки (lRow + 1). Удалите остальные клетки (lRow, "C") = Клетки (lRow + 1, "C ") Rows (lRow + 1). Удалить конец, если еще lRow = lRow + 1 sExtNum = Cells (lRow, " A ") sBarCode = Cells (lRow, " B ") End If Loop Cells.Select Selection.Sort _ Key1: = Диапазон ("C2"), _ Порядок1: = xlAscending, _ Key2: = Диапазон ("A2"), _ Порядок2: = xlAscending, _ Key3: = Диапазон ("B2"), _ Order3: = xlAscending, _ Заголовок: = xlYes, _ OrderCustom: = 1, _ MatchCase: = False, _ Ориентация: = xlTopToBottom, _ DataOption1: = xlSortNormal, _ DataOption2: = xlSortNormal, _ DataOption3: = xlSorNor A2 "). Выберите End Sub 

Заметка

Спасибо rizvisa1 за этот совет на форуме.

Предыдущая статья Следующая статья

Лучшие советы