Isi kandungan
Ingin mengendalikan ruang putih dengan cara yang paling berkesan? Gunakan ungkapan biasa untuk mengalih keluar semua ruang dalam sel, menggantikan berbilang ruang dengan satu aksara, memangkas ruang antara nombor sahaja dan banyak lagi.
Mana-mana data input yang anda gunakan, anda tidak akan menemui set data tanpa ruang. Dalam kebanyakan kes, ruang putih adalah baik - anda menggunakannya untuk memisahkan cebisan maklumat yang berbeza secara visual untuk menjadikannya lebih mudah untuk dilihat. Walau bagaimanapun, dalam sesetengah situasi, ia mungkin menjadi jahat - ruang tambahan boleh merosakkan formula anda dan menjadikan lembaran kerja anda hampir tidak terurus.
Mengapa menggunakan ungkapan biasa untuk memangkas ruang putih dalam Excel?
Sebelum kita menyelami seluk beluk penggunaan ungkapan biasa untuk mengalih keluar ruang putih dalam lembaran kerja Excel, saya ingin menjawab soalan yang terlintas di fikiran mula-mula - mengapa kita memerlukan regex apabila Excel sudah mempunyai TRIM fungsi?
Untuk memahami perbezaannya, mari lihat apa yang dianggap ruang putih dalam setiap kes:
- Fungsi TRIM terbina dalam hanya boleh menanggalkan aksara ruang yang mempunyai nilai 32 dalam sistem ASCII 7-bit.
- Ungkapan biasa boleh mengenal pasti beberapa bentuk ruang putih yang berbeza seperti ruang ( ), tab (\t), carriage return (\r) dan baharu baris (\n). Selain itu, terdapat aksara ruang putih (\s) yang sepadan dengan semua jenis ini dan sangat membantu untuk membersihkan input mentahdata.
Mengetahui apa yang berlaku di sebalik tabir, lebih mudah untuk mencari penyelesaian, bukan?
Bagaimana untuk mendayakan ungkapan biasa dalam Excel
Ia adalah fakta yang diketahui bahawa Excel yang luar biasa tidak menyokong ungkapan biasa. Untuk membolehkannya, anda perlu mencipta fungsi VBA tersuai. Nasib baik, kami sudah mempunyai satu, bernama RegExpReplace . Tunggu, mengapa "menggantikan" semasa kita bercakap tentang mengalih keluar? Dalam bahasa Excel, "alih keluar" hanyalah perkataan lain untuk "ganti dengan rentetan kosong" :)
Untuk menambah fungsi pada Excel anda, hanya salin kodnya dari halaman ini, tampalkannya dalam editor VBA , dan simpan fail anda sebagai buku kerja yang didayakan makro (.xlsm).
Berikut ialah sintaks fungsi untuk rujukan anda:
RegExpReplace(teks, corak, penggantian, [instance_num] , [match_case])Tiga argumen pertama diperlukan, dua argumen terakhir adalah pilihan.
Di mana:
- Teks - rentetan asal ke cari dalam.
- Corak - regex untuk dicari.
- Penggantian - teks untuk diganti. Untuk mengalih keluar ruang putih , anda akan menetapkan hujah ini sama ada:
- rentetan kosong ("") untuk memangkas semua ruang sepenuhnya
- ruang aksara (" ") untuk menggantikan berbilang ruang dengan satu aksara ruang
- Instance_num (pilihan) - nombor contoh. Dalam kebanyakan kes, anda akan meninggalkannya untuk menggantikan semua keadaan(lalai).
- Match_case (pilihan) - nilai Boolean yang menunjukkan sama ada untuk memadankan huruf besar (BENAR) atau mengabaikan (FALSE). Untuk ruang putih, ia tidak relevan dan oleh itu ditinggalkan.
Untuk maklumat lanjut, sila lihat fungsi RegExpReplace.
Cara mengalih keluar ruang putih dengan regex - contoh
Dengan Fungsi RegExpReplace ditambahkan pada buku kerja anda, mari kita atasi senario yang berbeza satu demi satu.
Alih keluar semua ruang putih menggunakan regex
Untuk mengalih keluar semua ruang dalam rentetan, anda hanya mencari sebarang aksara ruang putih, termasuk ruang, tab, pemulangan gerabak dan suapan baris, dan gantikannya dengan rentetan kosong ("").
Corak : \s+
Penggantian : ""
Dengan mengandaikan rentetan sumber berada dalam A5, formula dalam B5 ialah:
=RegExpReplace(A5, "\s+", "")
Untuk memudahkan pengurusan corak anda , anda boleh memasukkan regex dalam sel yang dipratentukan dan membekalkannya kepada formula menggunakan rujukan mutlak seperti $A$2, jadi alamat sel akan kekal tidak berubah apabila menyalin formula ke bawah lajur.
=RegExpReplace(A5, $A$2, "")
Alih keluar lebih daripada satu ruang putih
Untuk mengalih keluar ruang putih tambahan (iaitu lebih daripada n satu ruang berturut-turut), gunakan regex yang sama \s+ tetapi gantikan padanan yang ditemui dengan satu aksara ruang.
Corak : \s+
Penggantian : " "
=RegExpReplace(A5, "\s+", " ")
Sila ambil perhatian bahawa formula ini mengekalkan satu aksara ruang bukan sahaja antaradi bawah set data, katakan anda ingin memangkas semua ruang depan/belakang dan semua kecuali satu ruang di antara, memastikan berbilang baris tetap utuh. Untuk memenuhi tugasan, anda memerlukan dua fungsi RegExpReplace yang berbeza.
Fungsi pertama menggantikan berbilang ruang dengan satu aksara ruang.
=RegExpReplace(A5, " +", " ")
Fungsi yang satu lagi memotong ruang. dari permulaan dan penghujung baris:
=RegExpReplace(A5, "^ +| +$", "")
Hanya sarangkan dua fungsi satu sama lain:
=RegExpReplace(RegExpReplace(A5, " +", " "), "^ +| +$", "")
Dan anda akan mendapat hasil sempurna:
Regex untuk menggantikan berbilang ruang dengan satu aksara
Sekiranya anda ingin mengalih keluar semua ruang daripada rentetan dan menggantikan setiap kumpulan ruang berturut-turut dengan watak tertentu, ini yang anda perlu lakukan:
Mula-mula, gunakan regex ini untuk memangkas ruang putih di hadapan dan di belakang:
=RegExpReplace(A8, "^[\s]+|[\s]+$", "")
Kemudian, sajikan fungsi di atas kepada argumen teks RegExpReplace lain yang menggantikan satu atau lebih ruang putih berturut-turut dengan aksara yang anda tentukan, mis. tanda sempang:
Corak : \s+
Penggantian : -
Dengan mengandaikan rentetan sumber berada dalam A8, formula mengambil bentuk ini:
=RegExpReplace(RegExpReplace(A8, "^[\s]+|[\s]+$", ""), "\s+", "-")
Atau anda boleh memasukkan corak dan penggantian dalam sel berasingan seperti yang ditunjukkan dalam tangkapan skrin:
Regex untuk mengalih keluar baris kosong
Berikut ialah soalan yang sering ditanya oleh pengguna yang mempunyai berbilang baris dalam satu sel: "Terdapat banyak baris kosong dalam sel saya. Adakah terdapat sebarang cara untuk mendapatkanmenyingkirkannya selain daripada melalui setiap sel dan memadam setiap baris secara manual?" Jawapannya: Itu mudah!
Untuk memadankan baris kosong yang tidak mempunyai satu aksara dari permulaan ^ baris semasa sehingga ke baris seterusnya \n, regex ialah:
Corak : ^\n
Jika garisan kosong secara visual anda mengandungi ruang atau tab, gunakan ungkapan biasa ini:
Corak : ^[\t ]*\n
Hanya gantikan regex dengan rentetan kosong menggunakan formula ini dan semua baris kosong akan hilang sekaligus!
=RegExpReplace(A5, $A$2, "")
Mengalih keluar ruang putih dengan Alat RegEx
Contoh di atas telah menunjukkan hanya sebahagian kecil kemungkinan hebat yang disediakan oleh regex. Malangnya, bukan semua ciri ungkapan biasa klasik tersedia dalam VBA.
Nasib baik, Alat RegEx yang disertakan dengan Suite Ultimate kami bebas daripada pengehadan ini kerana ia diproses oleh enjin .NET RegEx Microsoft. Ini membolehkan anda membina corak yang lebih canggih yang tidak disokong oleh VBA RegExp. Belo w anda akan menemui contoh ungkapan biasa tersebut.
Regex untuk mengalih keluar ruang antara nombor
Dalam rentetan abjad angka, katakan anda ingin mengalih keluar ruang putih antara nombor sahaja, jadi rentetan seperti "A 1 2 B" menjadi "A 12 B".
Untuk memadankan ruang putih antara mana-mana dua digit, anda boleh menggunakan lihat sekeliling berikut:
Corak : (?<=\d)\s+(?=\d)
Untuk mencipta formula berasaskanpada regex di atas, berikut ialah dua langkah mudah untuk dilakukan:
- Pada tab Ablebits Data , dalam kumpulan Teks , klik Regex Alat .
- Pada anak tetingkap Alat Regex , pilih data sumber, masukkan regex anda, pilih Alih keluar pilihan, dan tekan Alih Keluar .
Untuk mendapatkan hasil sebagai formula, bukan nilai, ingat untuk meletakkan tanda dalam kotak semak Sisipkan sebagai formula .
Sebentar lagi, anda akan melihat fungsi AblebitsRegexRemove disisipkan dalam lajur baharu di sebelah kanan data asal.
Sebagai alternatif, anda boleh memasukkan regex dalam beberapa sel , sebut A5 dan masukkan formula terus dalam sel menggunakan kotak dialog Insert Function , dengan AblebitsRegexRemove dikategorikan di bawah AblebitsUDFs .
Memandangkan fungsi ini direka khas untuk mengalih keluar rentetan, ia memerlukan hanya dua argumen - rentetan input dan regex:
=AblebitsRegexRemove(A5, $A$2)
Begitulah cara untuk mengalih keluar ruang dalam Excel menggunakan ungkapan biasa. Saya mengucapkan terima kasih kerana membaca dan berharap dapat berjumpa anda di blog kami minggu depan!
Muat turun yang tersedia
Alih keluar ruang kosong dengan regex - contoh (fail .xlsm)
Suite Ultimate - versi percubaan (fail .exe)
perkataan tetapi juga pada permulaan dan akhir rentetan, yang tidak baik. Untuk menyingkirkan ruang putih di hadapan dan di belakang, sarangkan formula di atas ke dalam fungsi RegExpReplace lain yang memisahkan ruang dari permulaan dan akhir: =RegExpReplace(RegExpReplace(A5, "\s+", " "), "^[\s]+|[\s]+$", "")
Regex ke alih keluar ruang putih di hadapan dan di belakang
Untuk mencari ruang putih di permulaan atau penghujung baris, gunakan sauh mula ^ dan tamat $.
Ruang putih terkemuka :
Corak : ^[\s]+
ruang putih mengekor :
Corak : [\s ]+$
Mendahului dan mengekor ruang kosong:
Corak : ^[\s]+