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.

  • Importe dados do json no Excel
  • Pausair macros se uma célula mudair de valor
  • Função básica visual do Excel em todas as pastas de trabalho?
  • Inserindo uma assinatura automaticamente em uma solicitação de reunião do Calendário do Outlook
  • Qualquer function do Excel que irá reviewter uma string?
  • Macro de palavra: como replace strings em um text, com base em uma tabela de 2 colunas?
  • Como posso executair esta function usando o VBA no excel?
  • Remova vários modules 'ThisWorkbook' do editor do Excel VBA
  • 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.