Excel - Come ordinare ed eliminare il valore ridondante?

Problema

Ho cercato di ordinare i dati dei pazienti nel nostro lavoro quotidiano in laboratorio come di seguito:

 "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 28 112254 metamfo 45 154878 metamfo 48 124569 metamfo 

dove questi dati sono a metà ancora tra l'ordinamento altrimenti la prima colonna sarà casuale dove voglio ottenere la fine dell'ordinamento sulla base della colonna A in ordine ascendente ma che è sulla base della colonna C. Se c'è un valore in la colonna A ripetuta con un valore diverso nella colonna CI vorrebbe che fosse ordinata come

 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 

In tal caso, trovare il campione sarebbe piuttosto semplice. Potete per favore aiutarmi.

Soluzione

Ecco la macro che lo farebbe:

 Sub sortAndRemove () Dim lRow As Long Dim sExtNum As String Dim sBarCode As String Cells.Seleziona Selection.Sort _ Key1: = Range ("A2"), _ Order1: = xlAscending, _ Key2: = Range ("B2"), _ Ordine2: = xlAscendente, _ Chiave3: = Intervallo ("C2"), _ Ordine3: = xlAscendente, _ Intestazione: = xlSi, _ OrdineCustom: = 1, _ MatchCase: = False, _ Orientamento: = xlTopToBottom, _ DataOption1: = xlSortNormal, _ DataOption2: = xlSortNormal, _ DataOption3: = xlSortNormal lRow = 2 sExtNum = Celle (lRow, "A") sBarCode = Celle (lRow, "B") Do While (Celle (lRow, "A") "" ) Se celle (lRow + 1, "A") = sExtNum E (celle (lRow + 1, "B") = sBarCode) Then If Cells (lRow, "C") "" Then Cells (lRow, "C") = Celle (lRow, "C") e ", " e Celle (lRow + 1, "C") Righe (lRow + 1). Elimina celle Else (lRow, "C") = Celle (lRow + 1, "C ") Righe (lRow + 1) .Elimina fine Se Else lRow = lRow + 1 sExtNum = Celle (lRow, " A ") sBarCode = Celle (lRow, " B ") End If Loop Cells.Seleziona Selection.Sort _ Key1: = Range ("C2"), _ Order1: = xlAscending, _ Key2: = Range ("A2"), _ Order2: = xlAscending, _ Key3: = Range ("B2"), _ Order3: = xlAscending, _ Header: = xlYes, _ OrderCustom: = 1, _ MatchCase: = False, _ Orientation: = xlTopToBottom, _ DataOption1: = xlSortNormal, _ DataOption2: = xlSortNormal, _ DataOption3: = xlIntortNormal Range (" A2 "). Seleziona End Sub 

Nota

Grazie a rizvisa1 per questo suggerimento sul forum.

Articolo Precedente Articolo Successivo

I Migliori Consigli