Ganti Teks Dalam Sel - Petua Excel

Isi kandungan

Jean mengemukakan soalan Excel minggu ini:

Saya cuba menukar buku harga pembekal di Excel agar sepadan dengan kod UPC mereka ke sistem kod UPC kami. Buku harga mereka mempunyai lajur di Excel dengan rangkaian nombor, misalnya. 000004560007 ATAU cel000612004. Apa yang perlu saya buat adalah dua kali ganda. Saya perlu mengeluarkan tiga sifar pertama tanpa menghapus 0 angka lain di dalam sel. Seterusnya, saya perlu menambahkan kod 3 digit "upc" sebelum digit angka pertama di dalam sel. Ini akan menjadi keperluan berterusan. Saya perlu melatih beberapa orang untuk menggunakan sistem Excel.

Kedengarannya Jean sudah mempertimbangkan untuk menggunakan Edit-Replace untuk menyingkirkan ketiga-tiga nol tersebut. Ini tidak akan berjaya kerana melakukan penggantian suntingan pada "000004560007" akan menyebabkan kedua-dua kejadian 000 hilang.

Mula-mula saya ingin mencadangkan agar Jean memasukkan lajur sementara di sebelah kod harga semasa, menulis formula untuk melakukan transformasi, kemudian menggunakan Edit-Salin, Edit-PasteSpecial-Nilai untuk menyalin formula kembali ke atas kod harga asal.

Fungsi REPLACE () yang kurang didokumentasikan akan melakukan muslihat dalam kes ini. Saya kecewa dengan pelaksanaan REPLACE (). Saya fikir ia akan meminta teks tertentu untuk diganti, tetapi sebaliknya meminta pengguna untuk mengetahui kedudukan watak yang akan diganti. REPLACE akan menggantikan sebahagian rentetan teks dengan rentetan baru. Empat argumen yang anda sampaikan ke fungsi adalah sel yang mengandungi teks lama, kedudukan watak dalam teks lama yang ingin anda ganti, jumlah watak yang akan diganti, dan teks baru yang akan digunakan.

Anggapan ringkas saya adalah bahawa ketiga-tiga angka nol mewakili permulaan kod UPC dalam rentetan. Oleh itu, tidak perlu mencari watak angka pertama dalam sel. Setelah formula menemui tiga sifar, ia dapat menggantikan ketiga nol itu dengan rentetan "upc".

Untuk mengetahui lokasi kejadian pertama "000" dalam teks, anda akan menggunakan formula ini:

=FIND(A2,"000")

Formula yang perlu dimasukkan oleh Jean dalam sel B2 adalah:

=REPLACE(A2,FIND("000",A2),3,"upc")

Pemikiran saya adalah agar penganalisis harga menyoroti pelbagai sel dan kemudian menggunakan makro ini. Makro akan menggunakan gelung dengan "Untuk setiap sel dalam Pemilihan" pada awalnya. Dengan gelung ini, "sel" menjadi pemboleh ubah julat khas. Anda boleh menggunakan cell.address atau cell.value atau cell.row untuk mencari alamat, nilai atau baris sel semasa dalam gelung. Inilah makro:

Public Sub Jean() ' This macro will replace the first occurrence of "000" ' in each selected cell with the string "upc" ' copyright 1999 www.MrExcel.com For Each cell In Selection cell.Value = Replace(cell.Value, "000", "upc", 1, 1, vbTextCompare) Next cell End Sub

Perhatikan bahawa ini adalah makro jenis yang merosakkan. Apabila pengguna menyoroti pelbagai sel dan menjalankan makro, sel tersebut akan diubah. Tidak perlu dikatakan bahawa anda ingin menguji makro anda pada data ujian secara menyeluruh sebelum anda melepaskannya pada data pengeluaran sebenar. Apabila anda mempunyai situasi seperti Jean di mana anda akan selalu diminta untuk mengubah lajur menggunakan formula yang rumit, menulis makro sederhana seperti yang digambarkan di sini boleh menjadi alat yang berkesan dan menjimatkan masa.

Artikel menarik...