Hola a todos 🙂
Qué tal estáis?, espero que bien!. Esta semana he tenido varias consultas, algunas han sido bastante complejas y otras interesante por lo extraño de lo que me pedían. Una de ellas es el motivo de este post.
Y como digo en el título, lo que me pedían era poder segmentar una serie de contenidos (numéricos) de varias celdas e ir colocando cada uno de los números en la siguiente celda, por ejemplo imaginad que tenéis en una celda la siguiente cifra:
«10000» y se pide segmentar este número (incluidos los ceros) en las siguientes celdas a la derecha, es decir:
Aunque desconozco la finalidad de este trabajo y no logro identificar su utilidad, está claro que para ese lector sí era importante. Así que desarrollé un pequeño proceso para automatizarlo. Esta es la macro:
Sub SEGMENTAR()
'Definimos variables
Dim i As Integer, j As Integer, n As Integer
Dim sDat As String, fin As Double
With Sheets("SEGMENTAR")
'contamos el rango de los contenidos a segmentar
fin = Application.CountA(.Range("A:A"))
'iniciamos el primer bucle para seleccionar cada contenido
For n = 2 To fin
'iniciamos un segundo bucle que cuente y extraiga cada parte del contenido de la celda
For i = Len(.Cells(n, 1)) To 1 Step -1
sDat = Mid(.Cells(n, 1), i, 1)
'iniciamos un tercer bucle para colocar el segmento extraido en la celda a la derecha
For j = 1 To i
.Cells(n, j + 1) = sDat
Next j
Next i
Next n
End With
End Sub
Y una vez que aplicamos el código a las celdas de la columna «A», segmentaremos cada uno de los contenidos.
Este es un ejemplo:
Lógicamente funciona tanto con datos numéricos como con datos alfanuméricos. En este ejemplo, he tenido que transformar los datos numéricos en texto a partir de la cifra en «A12», de lo contrario el dato se mostraría en notación científica (a partir de cifras mayores o iguales a 12 dígitos) y no quedaría muy estético (podéis echar un vistazo a los límites de Excel).
Este ha sido el post de hoy y como me ha parecido interesante lo comparto con todos vosotros 🙂
Descarga el archivo pulsando en: SEGMENTAR EL CONTENIDO DE UNA CELDA