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ámetroTipoRequeridoDescripción
expresionStringLa cadena a dividir
delimitadorStringNoEl delimitador (predeterminado espacio)
limiteLongNoNúmero máximo de divisiones (sin límite si se omite)
compararVbCompareMethodNoMé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