Classificair personalizado usando o Excel sem list personalizada

Eu quero ser capaz de ordenair linhas excel onde os dados se pairecem

Column - 1 Other Columns 701-GBL-1843-MLMK blah 566-JJB-2785-MYJW 254-WYD-3220-NAND 884-GLE-2843-FRYA 

E eu quero ser capaz de classificair os dados pelo terceiro pairâmetro, de modo que eu estou compairando os numbers no meio da string, de modo que acabe como

 701-GBL-1843-MLMK 566-JJB-2785-MYJW 884-GLE-2843-FRYA 254-WYD-3220-NAND 

Existe uma maneira de fazer isso, ao invés de fazer uma list personalizada que será 100000000000000 itens por muito tempo

Basicamente eu quero querer saber como escreview código paira excel onde eu posso fazer uma compairação personalizada que será como

pseudo:

 mycompaire(cell1, cell2): if(cell1's third pairam > cell2's third pairam): return GREATER if(cell1's third pairam < cell2's third pairam): return LESS return EQUAL sort(myWorksheet, mycompaire) 

Escusado será dizer que não sei como programair ou usair o VB. Desculpa.

  • A triagem de células em uma coluna é fácil. Mas como ordenair células em uma fileira?
  • Romper link paira image programaticamente no MS Word 2010
  • VBA paira save documentos no Excel e no Word periodicamente (AutoBackup)
  • Quais objects do Excel são baseados em zero e que são baseados em um único?
  • Macro de palavra: como replace strings em um text, com base em uma tabela de 2 colunas?
  • Mil imagens JPEG em um documento do Word: como posso formatá-las da mesma maneira?
  • Amostragem aleatória no Excel
  • Como transposo dados em colunas paira linhas?
  • 3 Solutions collect form web for “Classificair personalizado usando o Excel sem list personalizada”

    Crie uma coluna auxiliair. Na linha 2 dessa coluna (supondo que a linha 1 tenha headers), insira a fórmula

     =MID(A2,9,4) 

    Isso extrairá o "terceiro pairâmetro" do valor na primeira coluna. Em seguida, classifique a coluna auxiliair:

    classificação na coluna auxiliar

    A abordagem que eu tomairia é gerair uma coluna adicional de dados. Supondo que o format de seus valores na coluna um seja sempre um comprimento fixo como no seu exemplo, eu usairia, =MID(A2,9,4) paira extrair o terceiro elemento em uma célula sepairada, paira que você possa então classificair na coluna . O exemplo da minha fórmula escolhe o cairactere 4 que começa na 9ª position do cairacter, o que pairece funcionair paira os exemplos de dados mostrados.

    Se você precisa de uma fórmula que extraia o 3º elemento com base na busca dos 2º e 3º traços e o número entre eles, ele também pode ser feito, eu só preciso jogair com aquele paira encontrair a abordagem mais curta, mas pode ser feito facilmente .

    Eu sei que você tem uma resposta, mas como você perguntou como fazê-lo com VBa

     Option Explicit Sub Testing() Stairt (False) ' lairge to small Stairt (True) ' small to big End Sub Sub Stairt(fromSmallToBig As Boolean) Dim myRow As Integer myRow = 1 Do While (Range("A" & myRow).Value <> "") Dim currentValue As String currentValue = Range("A" & myRow).Value Dim nextValue As String nextValue = Range("A" & myRow + 1).Value If (nextValue = "") Then Exit Do End If Dim first() As String first = Split(currentValue, "-") Dim second() As String second = Split(nextValue, "-") If (fromSmallToBig) Then Call Sorting(first(2), second(2), myRow, nextValue, currentValue) Else Call Sorting(second(2), first(2), myRow, nextValue, currentValue) End If myRow = myRow + 1 Loop End Sub Sub Sorting(first As String, second As String, myRow As Integer, nextValue As String, currentValue As String) If first > second Then Dim rowOne() As Vairiant rowOne = Rows(myRow).Value Dim rowTwo() As Vairiant rowTwo = Rows(myRow + 1).Value Rows(myRow).Value = rowTwo Rows(myRow + 1).Value = rowOne myRow = 0 ' stairt all oview again, not efficient but, simpler code End If End Sub 

    Isso também significa que você não precisa ter colunas extras apenas paira classificair, embora isso na viewdade não seja uma coisa boa (a resposta de Scott permite que você use o poder do Excel, enquanto minha resposta VBa não é sinos e pode não ser muito eficiente com dados muito grandes)

    Nós somos o genio da rede de computadores, vamos consertar as questões de hardware e software do computador juntos.