Cara terbaik untuk menghapus nol terkemuka dari nilai non-numerik di Excel

13

Saya memiliki banyak sel dalam lembar Excel, menggunakan 9 karakter 0-9 dan AZ, yang memiliki beberapa angka awalan:

000000123 
000001DA2 
0000009Q5
0000L210A
0000014A0
0000A5500
00K002200

Saya ingin menghapus nol depan sehingga nilainya menjadi:

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

Bagaimana saya melakukan ini dalam formula Excel? Saya lebih suka menghindari penggunaan makro VBA.

Chris Farmer
sumber
Jika Anda memiliki beberapa kendala lagi pada data, saya mungkin dapat menemukan solusi yang lebih spesifik.
Lance Roberts
Terima kasih. Nilai memiliki angka nol di depan sehingga totalnya adalah 9 karakter. Selain itu, nilainya adalah string angka 0-9 dicampur dengan huruf kapital AZ. Ada kemungkinan bahwa trailing nol ada dan itu adalah bagian dari nilai aktual dan tidak boleh dipangkas.
Chris Farmer
Secara eksplisit, tidak pernah ada ruang yang tersemat. Hanya 0-9 dan AZ.
Chris Farmer
Diedit untuk menyertakan contoh nol yang tertinggal
Chris Farmer
@ Chris, saya bisa melakukannya jika kita tahu jumlah maksimum nol yang akan pernah muncul tertanam dalam string, atau tertinggal setelah (meskipun itu akan menjadi rumus yang panjang).
Lance Roberts

Jawaban:

14

Inilah solusi yang intensif sel tetapi benar.

Masukkan data Anda di kolom A.

Di B1, masukkan formula:

=IF(
    LEFT(A1) = "0" ,
    RIGHT(A1, LEN(A1)-1),
    A1)

Ini memeriksa nol awal tunggal dan menghapusnya.

Salin rumus ini ke kanan sebanyak kolom karena ada karakter dalam data Anda (9, dalam hal ini, sehingga Anda akan pergi ke kolom J). Salin ke bawah untuk setiap baris data.

Kolom terakhir berisi data Anda, tanpa nol di depan.

Isaac Moses
sumber
Setelah banyak upaya dalam hal ini, ini adalah satu-satunya versi yang akan bekerja tanpa menggunakan VBA.
Skamradt
Komentar oleh @Richard: Saya suka solusi Isaac. Jika lebih dari satu nol di depan, terus menyalin dari sel yang berisi rumusnya dan menempelkan nilai hanya ke sel asli: setiap kali akan menghapus nol di depan lainnya (jika ada).
Ivo Flipse
8

Rumus berikut tidak membutuhkan sel tambahan juga tidak harus dimasukkan sebagai rumus array:

=RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(A1&" ","0",""),1),A1&" ")+1)

Jika nol tunggal akan dikembalikan untuk string seperti 0atau 00, rumus berikut dapat digunakan:

=IF(A1="","",RIGHT(A1,LEN(A1)-FIND(LEFT(SUBSTITUTE(LEFT(A1,LEN(A1)-1)&" ","0",""),1),LEFT(A1,LEN(A1)-1)&" ")+1))
Andreas Flueckiger
sumber
Jawaban ini berfungsi dengan beberapa nol di awal dan tampaknya merupakan jawaban paling lengkap dan paling sederhana yang disebutkan di sini.
Peter
5

Ini adalah masalah sulit yang harus dilakukan dengan fungsi lembar kerja. Berikut ini akan melakukan trik, tetapi hanya jika nol yang tidak mengarah hanya datang satu per satu, dan tidak ada nol tertinggal, dan tidak ada ruang yang tertanam.

Ini mengganti semua nol dengan spasi, memotongnya (semua kecuali ruang tunggal tertanam), lalu menggantikan kembali nol.

=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")
Lance Roberts
sumber
Mengapa hanya jika nol yang tidak memimpin hanya datang satu per satu ? Dan bagaimana dengan =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))(berharap CLEANakan menghapus Tab; jika tidak; gunakan beberapa nilai lain di CHAR)
Arjan
@ Arjan, saya menguji TRIM dan itu menggantikan beberapa ruang tertanam dengan satu ruang, tapi saya akan meneliti info Anda sekarang dan melihat apa yang bisa saya temukan. (Saya menggunakan 2003).
Lance Roberts
Fungsi CLEAN menyimpan ruang yang disematkan, tetapi juga menyimpan semua kecuali ruang utama pertama.
Lance Roberts
Saya menambahkan BERSIH untuk menghapus CHAR (9) saya menambahkan; menggunakan CLEAN pada nilai TRIMmed seharusnya tidak memiliki spasi utama ...?
Arjan
Ya, tetapi ketika CHAR (9) ditambahkan (untuk setiap nol), itu menambahkan dirinya sendiri ke nol terkemuka juga. Saya melihat bahwa Anda hanya menggunakannya untuk menyimpan nol yang tertinggal dan saya akan memasukkannya ke dalam jawabannya.
Lance Roberts
5

Solusi ini berfungsi untuk nilai input yang semuanya persis sembilan karakter.

Pertama-tama atur tabel sepuluh baris tetap yang berisi angka-angka berikut diformat sebagai teks.

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

Katakanlah tabelnya ada di sel A1 sampai 'A10

katakanlah nilai input Anda di sel B1 dan sel hasil Anda adalah C1

Gunakan rumus berikut dalam sel C1

= KANAN (B1, MATCH (B1, $ A $ 1: $ A $ 10,1) -1)

Kije
sumber
Pintar! Adapun parameter ketiga dalam MATCHfungsi: 1 = menemukan nilai terbesar kurang dari atau sama dengan lookup_value
Arjan
4

Untuk data dalam A1, gunakan rumus berikut:

= KANAN (A1, LEN (A1) -MAX ((FINDB (REPT ("0", ROW (A $ 1: A $ 100)), A1 & "-" & REPT ("0", 100)) = 1) * ROW (A $ 1: A $ 100)))

memasukkan dengan Ctrl + Shift + Enter. Ini berfungsi untuk string hingga 100 karakter.

Toc
sumber
Wow! Beberapa catatan kecil: Ctrl-Shift-Enter (Cmd-Shift-Return pada Mac) membuat rumus array. Rekatkan rumus seperti biasa, tetapi alih-alih Enter tekan Ctrl-Shift-Enter untuk menyimpannya. Kemudian akan ditampilkan di antara kurung kurawal. Dalam OpenOffice.org pada Mac, saya tidak bisa menyeret ke bawah rumus untuk baris berikutnya (karena akan menghasilkan beberapa rumus super array kemudian). Tapi salin & tempel tidak berfungsi, jadi saya yakin ada beberapa jalan pintas juga. Dan OpenOffice.org tidak tahu FINDB; menggunakan FIND tampaknya bekerja juga.
Arjan
Solusi elegan!
wilson