Text to Columns di VBA Excel Tanpa Ribet

Pernahkah kalian mengimpor data dari file CSV, sistem absensi, atau aplikasi lain, tetapi seluruh isi data justru masuk ke satu kolom?

Sebagai contoh, data berikut berada di kolom A.

A
Andi,Jakarta,90
Budi,Bandung,85
Citra,Surabaya,95

Padahal yang diinginkan adalah:

NamaKotaNilai
Andi Jakarta 90
Budi Bandung 85
Citra Surabaya 95

Melakukan pemisahan secara manual tentu tidak efisien, terutama jika data terdiri dari ribuan baris. Untungnya, VBA menyediakan metode Text to Columns yang dapat membagi isi satu kolom menjadi beberapa kolom secara otomatis.


Apa Itu Text to Columns?

TextToColumns adalah metode pada objek Range yang digunakan untuk memisahkan isi sel berdasarkan karakter pemisah (delimiter) atau berdasarkan posisi karakter dengan lebar tertentu (fixed width).

Metode ini sama seperti fitur Text to Columns yang tersedia pada tab Data di Excel, tetapi dijalankan melalui kode VBA.


Sintaks Dasar

Sintaks sederhananya adalah:

Range.TextToColumns Destination, DataType

Parameter yang paling sering digunakan meliputi:

  • Destination → lokasi hasil pemisahan.

  • DataType → jenis pemisahan (xlDelimited atau xlFixedWidth).

  • Comma → menggunakan koma sebagai pemisah.

  • Semicolon → menggunakan titik koma sebagai pemisah.

  • Tab → menggunakan tab sebagai pemisah.

  • Space → menggunakan spasi sebagai pemisah.

  • Other → menggunakan karakter pemisah lain.

  • OtherChar → karakter yang digunakan jika Other=True.


Memisahkan Data Berdasarkan Koma

Misalkan data berada pada kolom A.

Sub PisahDenganKoma()

    Range("A1:A10").TextToColumns _
        Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        Comma:=True

End Sub

Hasilnya:

SebelumSesudah
Andi,Jakarta,90 Andi | Jakarta | 90

Memisahkan Data Berdasarkan Titik Koma

Jika data dipisahkan menggunakan titik koma:

Andi;Jakarta;90

Gunakan:

Sub PisahSemicolon()

    Range("A1:A20").TextToColumns _
        Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        Semicolon:=True

End Sub

Memisahkan Data Berdasarkan Spasi

Sub PisahSpasi()

    Range("A1:A20").TextToColumns _
        Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        Space:=True

End Sub

Teknik ini sering digunakan ketika mengolah data hasil ekspor dari aplikasi tertentu.


Menggunakan Karakter Pemisah Sendiri

Misalkan data menggunakan tanda pagar (#).

Andi#Jakarta#90

Gunakan:

Sub PisahKarakter()

    Range("A1:A20").TextToColumns _
        Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        Other:=True, _
        OtherChar:="#"

End Sub

Menggunakan Fixed Width

Selain delimiter, TextToColumns juga mendukung pemisahan berdasarkan posisi karakter.

Contoh data:

ANDI      JAKARTA     90

Gunakan:

Range("A1").TextToColumns _
    Destination:=Range("A1"), _
    DataType:=xlFixedWidth

Untuk metode Fixed Width, biasanya diperlukan pengaturan posisi pemisah sesuai struktur data yang digunakan.


Studi Kasus

Misalkan Anda menerima data pelanggan berikut.

P001,Andi,Jakarta,08123456789
P002,Budi,Bandung,08129876543
P003,Citra,Surabaya,08127778888

Seluruh data berada pada kolom A.

Dengan satu perintah berikut:

Sub ImportPelanggan()

    Range("A1:A100").TextToColumns _
        Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        Comma:=True

End Sub

Data langsung dipisahkan menjadi empat kolom tanpa perlu menggunakan rumus atau memotong teks secara manual.


TextToColumns vs Split

TextToColumnsSplit
Langsung memisahkan data pada worksheet Memecah teks menjadi array di memori
Cocok untuk mengolah data pada lembar kerja Cocok untuk pemrosesan data di dalam kode VBA
Tidak memerlukan perulangan tambahan Biasanya digunakan bersama array

Jika tujuan Anda adalah memisahkan data yang sudah berada di worksheet, TextToColumns umumnya menjadi pilihan yang lebih praktis.


Kesalahan yang Sering Terjadi

Salah Menentukan Delimiter

Misalnya data dipisahkan dengan koma, tetapi kode menggunakan:

Semicolon:=True

Akibatnya, data tidak akan terpisah sebagaimana mestinya.

Pastikan karakter pemisah sesuai dengan format data.


Data Tujuan Tidak Kosong

TextToColumns akan mengisi beberapa kolom sekaligus.

Jika kolom di sebelah kanan sudah berisi data, data tersebut dapat tertimpa.

Periksa area tujuan sebelum menjalankan makro.


Menggunakan Fixed Width pada Data Delimited

Gunakan:

  • xlDelimited untuk data yang dipisahkan karakter tertentu.

  • xlFixedWidth untuk data yang dipisahkan berdasarkan posisi karakter.

Memilih tipe yang salah akan menghasilkan pemisahan yang tidak sesuai.


Tips Praktis

💡 Gunakan TextToColumns untuk memproses data hasil impor dari CSV atau aplikasi lain.

💡 Pastikan karakter pemisah sesuai dengan format data.

💡 Periksa kolom di sebelah kanan agar data penting tidak tertimpa.

💡 Gunakan Split() jika hasil pemisahan akan diproses di dalam variabel array, bukan langsung di worksheet.

💡 Uji makro pada salinan data sebelum dijalankan pada data asli.


Ringkasan

ParameterFungsi
Destination Menentukan lokasi hasil pemisahan
xlDelimited Memisahkan berdasarkan delimiter
xlFixedWidth Memisahkan berdasarkan posisi karakter
Comma:=True Pemisah koma
Semicolon:=True Pemisah titik koma
Space:=True Pemisah spasi
OtherChar Pemisah khusus

Kesimpulan

TextToColumns merupakan metode yang sangat membantu ketika Anda perlu memisahkan data yang masih berada dalam satu kolom menjadi beberapa kolom. Dengan menentukan jenis pemisah yang sesuai, proses yang biasanya dilakukan secara manual dapat diselesaikan hanya dengan beberapa baris kode VBA. Teknik ini sangat berguna saat mengolah data hasil impor, file CSV, maupun laporan dari sistem lain.

Hubungi Kami

Kantor Berkreasi
Alamat :
Pens Sky Venture - Sukolilo Surabaya
Karangrejo Tmur 17 Surabaya

Email : kantor.berkreasi@gmail.com
WA : wa.me/6287761589881  
(Support  Mbak Ana)

Tim Pengembang

Dr. Rojabi Azharghany, M.Si, S.Sos
Dr. H. Agus Sulthoni Imami, S.Psi. M.Pd.I.
Ali Ishaq, M.Pd.
Didik Rahwiniyanto, S.Si., M.Pd.
Mujiburrohman, M.Pd.
Mohammad Zikky, S.ST, M.T
Amien sawedi, S.Pd.
Didik P Wicaksono, M.Pd.