Funciones de cadena

La manipulación de cadenas es una habilidad esencial al trabajar con datos en VBA. Ya sea analizando archivos CSV, validando entrada de usuario o formateando datos, frecuentemente necesitarás dividir, buscar, extraer y reemplazar texto.

Este artículo cubre las funciones de cadena más utilizadas en VBA, desde el uso básico hasta aplicaciones prácticas.

Cuándo necesitas manipulación de cadenas

La manipulación de cadenas es necesaria en muchos escenarios del mundo real:

  • Procesamiento de datos CSV: Dividir cadenas separadas por comas en arrays
  • Análisis de rutas de archivo: Extraer nombres de archivo o carpeta de rutas
  • Validación de datos: Verificar si cadenas específicas están presentes
  • Análisis de correo electrónico: Separar nombre de usuario y dominio
  • Formateo de direcciones: Extraer componentes de estado, ciudad o código postal
  • Datos de longitud fija: Leer caracteres específicos de posiciones conocidas

Resumen de funciones de cadena

Aquí están las principales funciones de cadena disponibles en VBA:

FunciónPropósitoTipo de retorno
SplitDividir cadena por delimitadorArray
JoinCombinar array en cadenaString
InStrEncontrar posición de subcadenaLong
InStrRevEncontrar posición desde el finalLong
MidExtraer desde posición especificadaString
LeftExtraer desde el principioString
RightExtraer desde el finalString
ReplaceReemplazar textoString
TrimEliminar espacios inicial/finalString
LenObtener longitud de cadenaLong

Función Split: Dividir cadenas

Sintaxis básica

Split(Cadena, [Delimitador], [Límite], [Comparar])

La función Split divide una cadena en cada delimitador y devuelve un array.

Uso básico

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 cero. LBound(partes) siempre devuelve 0.

Procesar datos CSV

split_csv.bas
Sub ProcesarDatosCSV()
    Dim csvLine As String
    Dim fields() As String

    ' Línea CSV (típicamente leída de archivo)
    csvLine = "Juan García,Ventas,Nueva York,juan@ejemplo.com"

    ' Dividir por coma
    fields = Split(csvLine, ",")

    ' Salida a celdas
    Range("A1").Value = fields(0)  ' Nombre
    Range("B1").Value = fields(1)  ' Departamento
    Range("C1").Value = fields(2)  ' Ubicación
    Range("D1").Value = fields(3)  ' Email
End Sub

Función Join: Combinar arrays

Sintaxis básica

Join(Array, [Delimitador])

Join es lo opuesto a Split—combina elementos de array en una sola cadena con un delimitador.

join_basico.bas
Sub JoinEjemploBasico()
    Dim frutas() As Variant
    Dim resultado As String

    ' Definir array
    frutas = Array("manzana", "banana", "naranja")

    ' Unir con coma
    resultado = Join(frutas, ",")
    Debug.Print resultado  ' manzana,banana,naranja

    ' Unir con espacio
    resultado = Join(frutas, " ")
    Debug.Print resultado  ' manzana banana naranja
End Sub

Función InStr: Encontrar posición de texto

Sintaxis básica

InStr([Inicio], Cadena, CadenaBuscar, [Comparar])

InStr encuentra la posición de una subcadena dentro de una cadena. Devuelve 0 si no se encuentra.

instr_basico.bas
Sub InStrEjemploBasico()
    Dim texto As String
    Dim pos As Long

    texto = "Hola Mundo"

    ' Encontrar "Mundo"
    pos = InStr(texto, "Mundo")
    Debug.Print pos  ' 6

    ' Encontrar "mundo" (sensible a mayúsculas por defecto)
    pos = InStr(texto, "mundo")
    Debug.Print pos  ' 0 (no encontrado)

    ' Búsqueda sin distinguir mayúsculas
    pos = InStr(1, texto, "mundo", vbTextCompare)
    Debug.Print pos  ' 6
End Sub

Funciones Left y Right

Función Left

Extrae caracteres desde el principio de una cadena.

left_ejemplo.bas
Sub LeftEjemplo()
    Dim texto As String
    texto = "Hola Mundo"

    Debug.Print Left(texto, 4)   ' Hola
    Debug.Print Left(texto, 1)   ' H
End Sub

Función Right

Extrae caracteres desde el final de una cadena.

right_ejemplo.bas
Sub RightEjemplo()
    Dim texto As String
    texto = "Hola Mundo"

    Debug.Print Right(texto, 5)  ' Mundo
    Debug.Print Right(texto, 1)  ' o
End Sub

Función Mid: Extraer subcadenas

Sintaxis básica

Mid(Cadena, Inicio, [Longitud])

Mid extrae una subcadena desde una posición especificada.

mid_basico.bas
Sub MidEjemploBasico()
    Dim texto As String

    texto = "Hola Mundo"

    ' Extraer desde posición 6
    Debug.Print Mid(texto, 6)      ' Mundo

    ' Extraer 4 caracteres desde posición 1
    Debug.Print Mid(texto, 1, 4)   ' Hola
End Sub

Función Replace

Sintaxis básica

Replace(Cadena, Buscar, ReemplazarCon, [Inicio], [Cantidad], [Comparar])
replace_basico.bas
Sub ReplaceEjemploBasico()
    Dim texto As String

    texto = "Hola Mundo"

    ' Reemplazar "Mundo" con "VBA"
    Debug.Print Replace(texto, "Mundo", "VBA")  ' Hola VBA

    ' Reemplazar todos los espacios con guiones bajos
    texto = "Hola Mundo Como Estas"
    Debug.Print Replace(texto, " ", "_")  ' Hola_Mundo_Como_Estas
End Sub

Funciones Trim

VBA proporciona tres funciones de recorte:

FunciónPropósito
TrimEliminar espacios inicial y final
LTrimEliminar solo espacios iniciales
RTrimEliminar solo espacios finales
trim_ejemplo.bas
Sub TrimEjemplo()
    Dim texto As String
    texto = "   Hola Mundo   "

    Debug.Print "[" & Trim(texto) & "]"   ' [Hola Mundo]
    Debug.Print "[" & LTrim(texto) & "]"  ' [Hola Mundo   ]
    Debug.Print "[" & RTrim(texto) & "]"  ' [   Hola Mundo]
End Sub

Resumen

Las funciones de cadena de VBA son herramientas esenciales para el procesamiento de texto:

FunciónCaso de uso principal
SplitAnalizar datos delimitados
JoinCombinar elementos de array
InStrEncontrar posición de texto
MidExtraer subcadenas
Left/RightExtraer desde los extremos
ReplaceSustitución de texto
TrimLimpiar espacios en blanco
LenObtener longitud de cadena

Domina estas funciones para manejar cualquier tarea de manipulación de cadenas eficientemente en VBA.

#VBA #Manipulación de cadenas #Split #InStr #Mid