Daftar Isi
Ingin menangani spasi dengan cara yang paling efektif? Gunakan ekspresi reguler untuk menghapus semua spasi dalam sel, mengganti beberapa spasi dengan satu karakter, memangkas spasi di antara angka saja, dan banyak lagi.
Apa pun data input yang Anda gunakan, Anda tidak akan menemukan dataset tanpa spasi. Dalam kebanyakan kasus, spasi itu baik - Anda menggunakannya untuk memisahkan berbagai informasi secara visual agar lebih mudah dipahami. Namun, dalam beberapa situasi, spasi ekstra dapat mengacaukan rumus Anda dan membuat lembar kerja Anda hampir tidak terkelola.
Mengapa menggunakan ekspresi reguler untuk memangkas spasi di Excel?
Sebelum kita menyelami seluk-beluk penggunaan ekspresi reguler untuk menghapus spasi di lembar kerja Excel, saya ingin membahas pertanyaan yang muncul di benak kita sejak awal - mengapa kita membutuhkan regex ketika Excel sudah memiliki fungsi TRIM?
Untuk memahami perbedaannya, mari kita lihat apa yang dianggap sebagai spasi dalam setiap kasus:
- Fungsi TRIM built-in hanya bisa menghapus karakter ruang yang memiliki nilai 32 dalam sistem ASCII 7-bit.
- Ekspresi reguler dapat mengidentifikasi beberapa bentuk spasi yang berbeda seperti spasi ( ), tab (\t), carriage return (\r), dan baris baru (\n). karakter spasi (\s) yang cocok dengan semua jenis ini dan sangat membantu untuk membersihkan data input mentah.
Dengan mengetahui secara persis apa yang terjadi di balik layar, akan jauh lebih mudah untuk mencari solusi, bukan?
Cara mengaktifkan ekspresi reguler di Excel
Ini adalah fakta yang terkenal bahwa Excel out-of-the-box tidak mendukung ekspresi reguler. Untuk mengaktifkannya, Anda perlu membuat fungsi VBA kustom. Untungnya, kami sudah memilikinya, bernama RegExpReplace . tunggu, mengapa "replace" sementara kita berbicara tentang menghapus? Dalam bahasa Excel, "remove" hanyalah kata lain untuk "replace with an empty string" :)
Untuk menambahkan fungsi ke Excel Anda, cukup salin kodenya dari halaman ini, tempelkan di editor VBA, dan simpan file Anda sebagai buku kerja berkemampuan makro (.xlsm).
Berikut ini sintaks fungsi untuk referensi Anda:
RegExpReplace(teks, pola, penggantian, [instance_num], [match_case])Tiga argumen pertama diperlukan, dua argumen terakhir bersifat opsional.
Di mana:
- Teks - string asli untuk dicari.
- Pola - regex yang akan dicari.
- Penggantian - teks yang akan diganti. Untuk hapus ruang putih , Anda akan mengatur argumen ini ke salah satu:
- string kosong ("") untuk memangkas semua spasi
- ruang karakter (" ") untuk mengganti beberapa spasi dengan karakter spasi tunggal
- Instance_num (opsional) - nomor instance. Dalam kebanyakan kasus, Anda akan menghilangkannya untuk mengganti semua instance (default).
- Match_case (opsional) - nilai Boolean yang menunjukkan apakah akan mencocokkan (TRUE) atau mengabaikan (FALSE) kasus teks. Untuk spasi, ini tidak relevan dan oleh karena itu dihilangkan.
Untuk informasi lebih lanjut, silakan lihat fungsi RegExpReplace.
Cara menghapus spasi dengan regex - contoh
Dengan fungsi RegExpReplace ditambahkan ke buku kerja Anda, mari kita tangani skenario yang berbeda satu per satu.
Hapus semua spasi menggunakan regex
Untuk menghapus semua spasi dalam string, Anda cukup mencari karakter spasi, termasuk spasi, tab, carriage return, dan line feed, dan menggantinya dengan string kosong ("").
Pola : \s+
Penggantian : ""
Dengan mengasumsikan string sumber berada di A5, rumus di B5 adalah:
=RegExpReplace(A5, "\s+", "")
Untuk mempermudah pengaturan polanya, kamu bisa memasukkan regexnya dalam cell yang sudah ditentukan sebelumnya dan memberikannya ke rumusnya dengan menggunakan referensi absolut seperti $A$2, sehingga alamat cellnya tidak akan berubah ketika menyalin rumusnya ke bawah kolom.
=RegExpReplace(A5, $A$2, "")
Hapus lebih dari satu spasi
Untuk menghapus spasi ekstra (yaitu lebih dari satu spasi berurutan), gunakan regex \s+ yang sama tetapi ganti kecocokan yang ditemukan dengan satu karakter spasi.
Pola : \s+
Penggantian : " "
=RegExpReplace(A5, "\s+", " ")
Harap perhatikan bahwa rumus ini menyimpan satu karakter spasi tidak hanya di antara kata-kata tetapi juga di awal dan akhir string, yang tidak baik. Untuk menghilangkan spasi di depan dan di belakang, sarangkan rumus di atas ke dalam fungsi RegExpReplace lain yang menghapus spasi dari awal dan akhir:
=RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+
Regex untuk menghapus spasi di depan dan di belakang
Untuk mencari spasi di awal atau akhir baris, gunakan jangkar start ^ dan end $.
Memimpin spasi:
Pola : ^[\s]+
Mengekor spasi:
Pola : [\s]+$
Memimpin dan trailing spasi:
Pola : ^[\s]+
Regex mana pun yang Anda pilih, ganti kecocokan dengan tidak ada.
Penggantian : ""
Misalnya, untuk menghilangkan semua spasi di awal dan di akhir string di A5, rumusnya adalah:
=RegExpReplace(A5, "^[\s]+
Seperti yang ditunjukkan pada tangkapan layar di bawah ini, ini hanya menghilangkan spasi di depan dan di belakang. Spasi di antara kata-kata tetap utuh sehingga menciptakan tampilan visual yang menyenangkan bagi mata pembaca.
Hapus spasi ekstra tetapi pertahankan jeda baris
Saat bekerja dengan string multi-baris, Anda mungkin ingin menghilangkan spasi ekstra tetapi mempertahankan jeda baris. Untuk melakukan ini, alih-alih karakter spasi \s, cari spasi [ ] atau spasi dan tab [\t ]. Pola terakhir berguna saat sumber data Anda diimpor dari sumber lain, misalnya editor teks.
Dalam dataset di bawah ini, misalkan Anda ingin memangkas semua spasi terdepan/terbelakang dan semua kecuali satu spasi di antara spasi, menjaga beberapa baris tetap utuh. Untuk memenuhi tugas tersebut, Anda memerlukan dua fungsi RegExpReplace yang berbeda.
Fungsi pertama menggantikan beberapa spasi dengan karakter spasi tunggal.
=RegExpReplace(A5, " +", " ")
Yang lainnya menghilangkan spasi dari awal dan akhir baris:
=RegExpReplace(A5, "^ +
Cukup sarangkan saja kedua fungsi itu satu sama lain:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +
Dan Anda akan mendapatkan hasil yang sempurna:
Regex untuk mengganti beberapa spasi dengan satu karakter
Jika Anda ingin menghapus semua spasi dari string dan mengganti setiap kelompok spasi berurutan dengan karakter tertentu, inilah yang perlu Anda lakukan:
Pertama, gunakan regex ini untuk memangkas spasi di depan dan di belakang:
=RegExpReplace(A8, "^[\s]+
Kemudian, sajikan fungsi di atas ke teks argumen RegExpReplace lain yang menggantikan satu atau lebih spasi berurutan dengan karakter yang Anda tentukan, misalnya tanda hubung:
Pola : \s+
Penggantian : -
Dengan mengasumsikan string sumber berada di A8, rumusnya mengambil bentuk ini:
=RegExpReplace(RegExpReplace(A8, "^[\s]+
Atau Anda dapat memasukkan pola dan penggantian di sel terpisah seperti yang ditunjukkan pada tangkapan layar:
Regex untuk menghapus baris kosong
Inilah pertanyaan yang sering ditanyakan oleh pengguna yang memiliki banyak baris dalam satu sel: "Ada banyak baris kosong di sel saya. Apakah ada cara untuk menghilangkannya selain menelusuri setiap sel dan menghapus setiap baris secara manual?" Jawabannya: Itu mudah!
Untuk mencocokkan baris kosong yang tidak memiliki satu karakter pun dari awal ^ baris saat ini hingga baris berikutnya \n, regexnya adalah:
Pola : ^\n
Jika baris kosong visual Anda berisi spasi atau tab, gunakan ekspresi reguler ini:
Pola : ^[\t] *\n
Cukup ganti regex dengan string kosong menggunakan rumus ini, dan semua baris kosong akan hilang sekaligus!
=RegExpReplace(A5, $A$2, "")
Menghapus spasi dengan RegEx Tools
Contoh-contoh di atas telah menunjukkan hanya sebagian kecil dari kemungkinan-kemungkinan indah yang disediakan oleh regex. Sayangnya, tidak semua fitur ekspresi reguler klasik tersedia dalam VBA.
Untungnya, RegEx Tools yang disertakan dengan Ultimate Suite kami bebas dari keterbatasan ini karena diproses oleh mesin RegEx Microsoft .NET. Hal ini memungkinkan Anda membuat pola yang lebih canggih yang tidak didukung oleh VBA RegExp. Di bawah ini Anda akan menemukan contoh ekspresi reguler tersebut.
Regex untuk menghapus spasi di antara angka
Dalam string alfanumerik, misalkan Anda ingin menghapus spasi di antara angka saja, sehingga string seperti "A 1 2 B" menjadi "A 12 B".
Untuk mencocokkan spasi di antara dua digit apa pun, Anda bisa menggunakan look-around berikut ini:
Pola : (?<=\d)\s+ (?=\d)
Untuk membuat rumus berdasarkan regex di atas, berikut adalah dua langkah mudah untuk dilakukan:
- Pada Data Ablebits tab, di tab Teks kelompok, klik Alat Regex .
- Pada Alat Regex panel, pilih sumber data, masukkan regex Anda, pilih Hapus opsi, dan tekan Hapus .
Untuk mendapatkan hasil sebagai formula, bukan nilai, ingatlah untuk menaruh tanda centang pada Sisipkan sebagai formula kotak centang.
Sebentar lagi, Anda akan melihat AblebitsRegexHapus disisipkan dalam kolom baru di sebelah kanan data asli.
Alternatifnya, Anda bisa memasukkan regex dalam suatu cell, misalnya A5, dan menyisipkan rumusnya secara langsung ke dalam cell dengan menggunakan perintah Fungsi Sisipkan kotak dialog, di mana AblebitsRegexHapus dikategorikan di bawah AblebitsUDFs .
Karena fungsi ini dirancang khusus untuk menghapus string, fungsi ini hanya membutuhkan dua argumen - string input dan regex:
=AblebitsRegexHapus(A5, $A$2)
Itulah cara menghapus spasi di Excel menggunakan ekspresi reguler. Saya berterima kasih telah membaca dan berharap dapat melihat Anda di blog kami minggu depan!
Unduhan yang tersedia
Hapus spasi dengan regex - contoh (.xlsm file)
Ultimate Suite - versi percobaan (file .exe)