Función Split
La función Split divide una cadena por un delimitador especificado y devuelve un array. Es extremadamente útil para procesar datos CSV y analizar cadenas delimitadas.
Sintaxis básica
Split(expresion, [delimitador], [limite], [comparar])
Parámetros
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| expresion | String | Sí | La cadena a dividir |
| delimitador | String | No | El delimitador (predeterminado espacio) |
| limite | Long | No | Número máximo de divisiones (sin límite si se omite) |
| comparar | VbCompareMethod | No | Método de comparación de cadenas |
Valor de retorno
Un array de cadenas (índice basado en 0)
Uso básico
División simple
split_basico.bas
Sub SplitEjemploBasico()
Dim texto As String
Dim partes() As String
' Dividir cadena separada por comas
texto = "manzana,banana,naranja,uva"
partes = Split(texto, ",")
' Mostrar resultados
Dim i As Long
For i = LBound(partes) To UBound(partes)
Debug.Print i & ": " & partes(i)
Next i
' Salida:
' 0: manzana
' 1: banana
' 2: naranja
' 3: uva
End Sub
チェック
La función Split devuelve un array basado en 0. LBound(partes) siempre devuelve 0. Procesamiento de datos CSV
split_csv.bas
Sub ProcesarDatosCSV()
Dim lineaCSV As String
Dim campos() As String
' Línea CSV (típicamente leída de archivo)
lineaCSV = "Juan Pérez,Ventas,Madrid,jperez@ejemplo.com"
' Dividir por coma
campos = Split(lineaCSV, ",")
' Escribir en celdas
Range("A1").Value = campos(0) ' Nombre
Range("B1").Value = campos(1) ' Departamento
Range("C1").Value = campos(2) ' Ubicación
Range("D1").Value = campos(3) ' Email
End Sub
Limitar el número de divisiones
split_limite.bas
Sub SplitConLimite()
Dim texto As String
Dim partes() As String
texto = "2025-10-20-Lunes-Festivo"
' Dividir solo las primeras 3 veces (el 4to elemento contiene el resto)
partes = Split(texto, "-", 3)
Debug.Print partes(0) ' 2025
Debug.Print partes(1) ' 10
Debug.Print partes(2) ' 20-Lunes-Festivo
End Sub
チェック
El tercer parámetro limita el número de divisiones. El texto restante permanece combinado en el último elemento.
División por espacio
split_espacio.bas
Sub DividirPorEspacio()
Dim texto As String
Dim palabras() As String
texto = "Hola Mundo desde VBA"
' Dividir por espacio (delimitador omitido)
palabras = Split(texto)
Dim i As Long
For i = LBound(palabras) To UBound(palabras)
Debug.Print palabras(i)
Next i
' Salida:
' Hola
' Mundo
' desde
' VBA
End Sub
Ejemplos prácticos
Extraer extensión de archivo
split_extension_archivo.bas
Function ObtenerExtensionArchivo(rutaArchivo As String) As String
Dim partes() As String
partes = Split(rutaArchivo, ".")
If UBound(partes) > 0 Then
ObtenerExtensionArchivo = partes(UBound(partes))
Else
ObtenerExtensionArchivo = ""
End If
End Function
Sub ProbarObtenerExtension()
Debug.Print ObtenerExtensionArchivo("documento.xlsx") ' xlsx
Debug.Print ObtenerExtensionArchivo("archivo.tar.gz") ' gz
Debug.Print ObtenerExtensionArchivo("sinextension") ' (vacío)
End Sub
Contar palabras
split_contar_palabras.bas
Function ContarPalabras(texto As String) As Long
Dim palabras() As String
Dim textoLimpio As String
' Remover espacios extra
textoLimpio = Trim(texto)
If Len(textoLimpio) = 0 Then
ContarPalabras = 0
Exit Function
End If
' Dividir por espacio
palabras = Split(textoLimpio, " ")
ContarPalabras = UBound(palabras) + 1
End Function
Sub ProbarContarPalabras()
Debug.Print ContarPalabras("Hola Mundo") ' 2
Debug.Print ContarPalabras("El rápido zorro marrón") ' 4
Debug.Print ContarPalabras("") ' 0
End Sub
Trabajando con la función Join
Split y Join son funciones complementarias. Join combina elementos de array de vuelta en una cadena:
split_y_join.bas
Sub SplitYJoin()
Dim texto As String
Dim partes() As String
texto = "manzana,banana,naranja"
' Dividir
partes = Split(texto, ",")
' Modificar
partes(1) = "BANANA"
' Unir de vuelta con diferente delimitador
Debug.Print Join(partes, " | ") ' manzana | BANANA | naranja
End Sub
Resumen
La función Split es esencial para el análisis de cadenas en VBA:
- Devuelve un array basado en 0
- Predeterminado a delimitador de espacio si se omite
- Usa el parámetro limite para controlar el número de divisiones
- Combina con Join para manipulación de cadenas de ida y vuelta
- Perfecta para procesamiento de CSV, TSV y parámetros de URL
Domina Split junto con Join para capacidades completas de manipulación de cadenas.
#VBA
#Split
#Operaciones de cadenas
#Array