Hoy pondré un ejemplo del uso de la función SPLIT en nuestras macros. Se trata de responder a la cuestión planteada por un lector:
Lo que haremos será evaluar la celda en cuestión, de tal forma que mediante la función SPLIT, separemos los diferentes valores existentes en la celda, asignándolos posteriormente a elementos de una matriz o Array.
La última parte de la macro consistirá en añadirle el texto " - IUYDHN", y sustituir los últimos dígitos del valor principal.
Sabiendo que nuestros datos se encuentran en la 'Hoja1' y que la celda a evaluar es la A1, el código a incluir en un módulo del Editor de VBA (Alt+F11) será:
El resultado será el esperado al ejecutar la macro, ya que en las columnas anexas nos dispone los valores de texto correctos:
| ...Mi problema es el siguiente en una celda me vota un dato separado por comas (2654500543210,211,213,214) lo que he realizo hasta el momento es evaluar el largo y decirme cuantos items hay, en este caso serian 4, lo que quiero hacer es que al encontrar mas de 1 item me inserte una fila por cada item nuevo con los mismos datos que hay en la misma fila y coloque un nuevo registro quedando de la siguiente forma 2654500543210 - IUYDHN 2654500543211 - IUYDHN 2654500543212 - IUYDHN 2654500543213 - IUYDHN |
Lo que haremos será evaluar la celda en cuestión, de tal forma que mediante la función SPLIT, separemos los diferentes valores existentes en la celda, asignándolos posteriormente a elementos de una matriz o Array.
La última parte de la macro consistirá en añadirle el texto " - IUYDHN", y sustituir los últimos dígitos del valor principal.
Sabiendo que nuestros datos se encuentran en la 'Hoja1' y que la celda a evaluar es la A1, el código a incluir en un módulo del Editor de VBA (Alt+F11) será:
Sub separar()
Dim cadena As String, n As Long
Dim matriz() As String
Dim i As Long, izq As Long
'cadena será el contenido de la celda a evaluar
cadena = Range("A1").Value
'asignamos cada parte como un elemento de la matriz
'la función SPLIT devuelve una matriz que contiene un número especificado de subcadenas
'obtenidas o delimitadas por el operador dado
matriz = Split(Trim(cadena), ",")
'contamos el número total de elementos
n = UBound(matriz) + 1
izq = Len(matriz(0)) - 3
'obtenemos en las celdas siguientes los textos obtenidos
For i = 1 To n
If i = 1 Then
Range("A1").Offset(0, i + 1).Value = matriz(i - 1) & " - IUYDHN"
Else
Range("A1").Offset(0, i + 1).Value = Left(matriz(0), izq) & matriz(i - 1) & " - IUYDHN"
End If
Next
End Sub
El resultado será el esperado al ejecutar la macro, ya que en las columnas anexas nos dispone los valores de texto correctos:







0 comentarios:
Publicar un comentario en la entrada