La funció SPLIT a VBA (Excel)

La funció SPLIT a VBA ens permet dividir una cadena de text, a partir d’un delimitador indicat, i col·locar els diferents fragments en una matriu (de base 0)

Aquesta funció té aquests 4 arguments:

  • Expressió: És la cadena de text (o la referència al rang on està aquesta cadena de text) que volem dividir en diferents parts.
  • Delimitador (opcional): És el caràcter (o cadena de text) que exclourem i ens servirà per delimitar les diferents parts de la cadena original. Si aquest argument s’omet, s’utilitzarà per defecte l’espai.
  • Límit (opcional): És el número de subcadenes que es retornaran. Per defecte el valor és -1 (retorna totes les cadenes). El valor 0 generaria un error i el valor 1, no faria cap divisió.
  • Comparar (opcional): És un número que serveix per indicar si es distingeixen entre majúscules i minúscules, o no.
    • 0: Distingeix entre majúscules i minúscules.
    • 1: No distingeix entre majúscules i minúscules
    • -1: En cas que haguem utilitzat prèviament la instrucció OPTION COMPARE, agafa el valor que en aquesta instrucció haguem configurat.

Exemple

En aquest exemple partim d’aquest full on a la cel·la A1 tenim un text on hi apareixen diferents coixinets # (bé, ara queda més cool dir “hastags”

Per mostrar les diferents opcions de la funció SPLIT per entendre bé el seu funcionament. Arribarem aquí:

I per aconseguir-ho, ho farem mitjançant aquest codi:

Sub FuncioSplit()

    Dim Fila As Integer
    Dim Columna As Integer
    
    On Error Resume Next

    For Fila = 2 To 7
    
        For Columna = 3 To 9
            Cells(Fila, Columna) = Split(Range("A1"), "#", Cells(Fila, 2))(Cells(1, Columna))
        Next
    
    Next

End Sub

Explicació del exemple

  • Mitjançant 2 bucles, un per les files i l’altre per les columnes, recorrem totes les cel·les del rang C2:G7.
  • A la Columna B hi trobem els valors que serviran pel tercer argument de la funció SPLIT, el que determina el número de “trossos” que volem de la cadena. Comencem pel valor -1 (tants trossos com delimitadors hi hagi), passem al 1 (el 0 donaria un error), seguim amb el 2, etc
  • A la Fila 1 posem el número d’element de la matriu que volem mostrar. Excel treballa amb matrius de base 0 i per tant el primer element és el 0, on hi anirà el primer tros.
  • Perquè la cel·la C2 apareix buida? En aquesta cel·la la fórmula seria: Split (Range(“A1”), “#”,-1),(0) és a dir, li estem demanat a Excel que faci tants trossos com sigui necessaris del Rang A1, utilitzant coma delimitador el #, i que ens mostri el primer tros (que és el 0). Com en aquest cas, abans del primer # no hi ha res, per això surt en blanc. Si la frase fos “Vull#dividir#aquesta#frase” (en comptes de “#Vull#dividir#aquesta#frase”), a la cel·la C2 hi tindríem “Vull”

Fitxer per entendre bé el funcionament de SPLIT a VBA

Pots descarregar-te aquest fitxer més complet que l’exemple anterior, on podràs “jugar” amb diferents frases i delimitadors amb l’objectiu d’entendre a la perfecció com treballa aquesta funció.

Aplicació pràctica de la funció SPLIT

Si vols veure un exemple pràctic de per què et pot servir la funció SPLIT, pots veure aquest post:

Lletra d’una columna a partir del número a Excel amb VBA – Excel.cat

Feu un comentari