EDITAR
Com base nos seus comentários, isso é o que você está procurando, pois você pode definir o limite (a diferença entre dois números que cria um novo 'grupo')
Sub Button1_Click()
Dim threshold As Double
threshold = 0.4 ' UPDATE THIS AS YOU SEE FIT
Dim column As Integer
column = 66 ' assumes the next column is B. 65 = A, 66=B, 67= C etc
Dim aRow As Integer
aRow = 1 ' The starting row where the data is
Dim otherRow As Integer
otherRow = aRow
Dim previousCol As Integer
previousCol = 64
Do While (True)
If (column = 90) Then
previousCol = previousCol + 1
column = 65
End If
If (Range("A" & aRow).Value = "") Then
Exit Do
End If
If (aRow <> 1) Then
If Range("A" & aRow).Value - Range("A" & aRow - 1).Value >= threshold Then
otherRow = 1
column = column + 1
End If
End If
If (previousCol < 65) Then
Range(Chr(column) & otherRow).Value = Range("A" & aRow).Value
Else
Range(Chr(previousCol) & Chr(column) & otherRow).Value = Range("A" & aRow).Value
End If
aRow = aRow + 1
otherRow = otherRow + 1
Loop
End Sub
A única diferença agora é que você pode definir o limite no código (veja acima), mas ele não remove mais os valores originais da coluna A (veja a captura de tela abaixo). Você pode remover isso manualmente, eu acho.
O acima também é limitado à coluna ZZ, que oferece cerca de 700 colunas
Respostaanteriorparahistórico:
Estamacrofazoquevocêquer
SubButton1_Click()DimcolumnAsIntegercolumn=66DimaRowAsIntegeraRow=1DimotherRowAsIntegerotherRow=1DimcurrentAsIntegercurrent=-99DoWhile(True)If(Range("A" & aRow).Value = "") Then
Exit Do
End If
If (current < 0) Then
current = Split(Range("A" & aRow), ".")(0)
End If
If (Split(Range("A" & aRow), ".")(0) <> current) Then
current = Split(Range("A" & aRow), ".")(0)
otherRow = 1
column = column + 1
End If
Range(Chr(column) & otherRow).Value = Range("A" & aRow).Value
Range("A" & aRow).Value = "" 'Clear A column
otherRow = otherRow + 1
aRow = aRow + 1
Loop
End Sub
Antes
Depois
Então, as coisas para observar sobre isso são:
- Ele assumiu que a coluna A tem todo o conteúdo e que haverá células vazias (a célula vazia indicará o final da lista)
- Divide no decimal (.). Se nenhum decimal estiver presente, ele será tratado como N.0
- A coluna A se torna uma coluna vazia, mas suponho que não seja difícil excluir a coluna depois ... Ou, de acordo com o código, você pode comentar a linha
Range("A" & aRow).Value = "" 'Clear A column
, que manterá a coluna A como - No exemplo dado, você tem 3 entradas por grupo de números (3 iniciaram com 1.N, 3 iniciaram com 3.N e 3 iniciaram com 8.N). Isso não precisa ser em grupos de 3
- Ele assume que sua lista já está classificada