Kami memiliki sekitar 3500 dokumen yang nama filenya harus digosok secara manual untuk menghapus karakter khusus seperti tanda kurung, titik dua, titik koma, koma, dll.
Saya memiliki file teks yang telah saya buang ke excel, dan saya mencoba membuat kolom yang menandai nama file untuk modifikasi jika menyertakan karakter khusus. Formula pseudocode akan menjadi
=IF (cellname contains [^a-zA-z_-0-9], then "1", else "0")
untuk menandai baris jika berisi karakter selain AZ, 0-9, - atau _, terlepas dari huruf besar atau kecil.
Adakah yang tahu sesuatu yang mungkin berhasil untuk saya? Saya ragu untuk kode dan if
pernyataan besar jika ada sesuatu yang cepat dan mudah.
Jawaban:
Tidak ada kode? Tapi ini sangat singkat dan mudah dan indah dan ... :(
Pola RegEx Anda
[^A-Za-z0-9_-]
digunakan untuk menghapus semua karakter khusus di semua sel.Edit
Ini sedekat mungkin dengan pertanyaan awal Anda.
Kode kedua adalah fungsi yang ditentukan pengguna
=RegExCheck(A1,"[^A-Za-z0-9_-]")
dengan 2 argumen. Yang pertama adalah sel untuk diperiksa. Yang kedua adalah pola RegEx untuk memeriksa. Jika pola cocok dengan salah satu karakter di sel Anda, itu akan mengembalikan 1 jika tidak 0.Anda dapat menggunakannya seperti rumus Excel normal lainnya jika Anda pertama kali membuka VBA editor dengan ALT+ F11, masukkan modul baru (!) Dan rekatkan kode di bawah ini.
Untuk pengguna baru di RegEx, saya akan menjelaskan pola Anda:
[^A-Za-z0-9_-]
sumber
=RegExReplace(cell)
tidak dikenali .... dan saya agak berkarat untuk membuat fungsi baru.Menggunakan sesuatu yang mirip dengan kode nixda, berikut adalah fungsi yang ditentukan pengguna yang akan mengembalikan 1 jika sel memiliki karakter khusus.
User Defined Functions (UDFs) sangat mudah dipasang dan digunakan:
Jika Anda menyimpan buku kerja, UDF akan disimpan bersamanya. Jika Anda menggunakan versi Excel di atas 2003, Anda harus menyimpan file sebagai .xlsm daripada .xlsx
Untuk menghapus UDF:
Untuk menggunakan UDF dari Excel:
= IsSpecial (A1)
Untuk mempelajari lebih lanjut tentang makro secara umum, lihat:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
dan
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
dan
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
untuk spesifik tentang UDF
Makro harus diaktifkan agar ini berfungsi !
sumber
If sCh Like "[0-9a-zA-Z ]" Or sCh = "_" Then
sehingga makro menganggap bahwa spasi adalah karakter yang valid?Berikut solusi pemformatan bersyarat yang akan menandai rekaman dengan karakter khusus.
Cukup terapkan aturan pemformatan bersyarat baru ke data Anda yang menggunakan rumus (sangat panjang) di bawah ini, di mana
A1
adalah catatan pertama di kolom nama file:Rumus ini memeriksa setiap karakter dari setiap nama file dan menentukan apakah kode ASCII-nya berada di luar nilai karakter yang diperbolehkan. Sayangnya, kode karakter yang diperbolehkan tidak semuanya bersebelahan, jadi itu sebabnya rumus harus menggunakan jumlah
SUMPRODUCT
s. Rumus mengembalikan jumlah karakter buruk yang ada. Setiap sel yang mengembalikan nilai lebih besar dari 0 ditandai.Contoh:
sumber
Saya menggunakan pendekatan berbeda untuk menemukan karakter khusus. Saya membuat kolom baru untuk masing-masing karakter yang diizinkan, dan kemudian menggunakan rumus seperti ini untuk menghitung berapa kali karakter yang diizinkan ada di setiap entri baris (Z2):
Kemudian saya menjumlahkan jumlah karakter yang diperbolehkan di setiap baris, dan kemudian membandingkannya dengan total panjang entri baris.
Dan akhirnya, saya mengurutkan pada kolom terakhir (BF2) untuk menemukan nilai negatif, yang membawa saya ke kolom yang perlu diperbaiki.
sumber