Cách tốt nhất để xóa các số 0 đứng đầu khỏi giá trị không phải là số trong Excel


13

Tôi có nhiều ô trong một bảng Excel, sử dụng 9 ký tự 0-9 và AZ, có một số số không có tiền tố:

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

Tôi muốn xóa các số 0 đứng đầu để các giá trị trở thành:

123 
1DA2 
9Q5
L210A
14A0
A5500
K002200

Làm thế nào tôi có thể làm điều này trong một công thức Excel? Tôi muốn tránh sử dụng macro VBA.


Nếu bạn có thêm một vài điều trái ngược với dữ liệu, tôi có thể đưa ra một giải pháp cụ thể hơn.
Lance Roberts

Cảm ơn. Các giá trị có các số 0 đứng đầu để có tổng cộng 9 ký tự. Ngoài ra, các giá trị là các chuỗi chữ số 0-9 được trộn với chữ in hoa AZ. Có thể là một số 0 tồn tại và nó là một phần của giá trị thực và không nên cắt bớt.
Nông dân Chris

Để được rõ ràng, không bao giờ có không gian nhúng. Chỉ cần 0-9 và AZ.
Nông dân Chris

Được chỉnh sửa để bao gồm những ví dụ không có dấu đó
Chris Farmer

@Chris, tôi có thể làm điều đó nếu chúng ta biết số lượng số 0 tối đa sẽ xuất hiện được nhúng trong chuỗi hoặc theo sau (mặc dù đó sẽ là một công thức dài).
Lance Roberts

Câu trả lời:


14

Đây là một giải pháp chuyên sâu về tế bào nhưng đúng.

Đặt dữ liệu của bạn vào cột A.

Trong B1, đặt công thức:

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

Điều này kiểm tra một số 0 duy nhất và loại bỏ nó.

Sao chép công thức này sang bên phải nhiều cột như có thể có các ký tự trong dữ liệu của bạn (9, trong trường hợp này, vì vậy bạn sẽ đi ra cột J). Sao chép nó xuống cho mỗi hàng dữ liệu.

Cột cuối cùng chứa dữ liệu của bạn, tước các số không hàng đầu.


Sau nhiều lần thử, đây là phiên bản duy nhất sẽ hoạt động mà không cần dùng đến VBA.
skamradt

Nhận xét của @Richard: Tôi thích giải pháp của Isaac. Nếu có nhiều hơn một số 0 đứng đầu, hãy tiếp tục sao chép từ các ô có chứa công thức của mình và chỉ dán các giá trị vào các ô ban đầu: mỗi lần sẽ loại bỏ một số 0 khác (nếu có).
Ivo Flipse

8

Công thức sau đây không cần các ô bổ sung cũng như không phải nhập dưới dạng công thức mảng:

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

Nếu một số 0 duy nhất sẽ được trả về cho các chuỗi như 0hoặc 00, công thức sau có thể được sử dụng:

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

Câu trả lời này hoạt động với nhiều số 0 đứng đầu và dường như là câu trả lời đầy đủ và đơn giản nhất được đề cập ở đây.
Peter

5

Đây là một vấn đề khó khăn để làm với một chức năng bảng tính. Những điều sau đây sẽ thực hiện thủ thuật, nhưng chỉ khi các số 0 không dẫn đầu chỉ xuất hiện một lần duy nhất và không có các số 0 ở cuối và không có khoảng trắng được nhúng.

Nó thay thế tất cả các số không bằng các khoảng trắng, cắt chúng (tất cả trừ các không gian đơn được nhúng), sau đó thay thế các số 0.

=SUBSTITUTE(TRIM(SUBSTITUTE(A1,"0"," "))," ","0")

Tại sao chỉ khi các số không dẫn đầu chỉ đến một lần ? Và những gì về =CLEAN(SUBSTITUTE(TRIM(SUBSTITUTE(A1 & CHAR(9),"0"," "))," ","0"))(hy vọng CLEANsẽ loại bỏ Tab; nếu không; sử dụng một số giá trị khác trong CHAR)
Arjan

@Arjan, tôi đã thử TRIM và nó đã thay thế nhiều không gian được nhúng bằng một không gian duy nhất, nhưng tôi sẽ nghiên cứu thông tin của bạn ngay bây giờ và xem những gì tôi có thể tìm thấy. (Tôi đang sử dụng 2003).
Lance Roberts

Hàm SẠCH lưu các không gian nhúng, nhưng cũng lưu tất cả trừ không gian đầu tiên.
Lance Roberts

Tôi đã thêm SẠCH để xóa CHAR (9) tôi đã thêm; sử dụng SẠCH trên giá trị TRIMmed không nên có khoảng trắng hàng đầu ...?
Arjan

Có, nhưng khi CHAR (9) được thêm vào (cho mỗi số 0), nó cũng tự thêm vào các số 0 đứng đầu. Tôi thấy rằng bạn chỉ sử dụng nó để lưu các số 0 ở cuối và tôi sẽ kết hợp nó vào câu trả lời.
Lance Roberts

5

Giải pháp này hoạt động cho các giá trị đầu vào có tất cả chín ký tự.

Đầu tiên thiết lập một bảng mười hàng cố định có chứa các số sau được định dạng dưới dạng văn bản.

000000000

000000001

000000010

000000100

000001000

000010000

000100000

001000000

010000000

100000000

Hãy nói rằng bảng nằm trong các ô từ A1 đến 'A10

giả sử giá trị đầu vào của bạn nằm trong ô B1 và ​​ô kết quả của bạn là C1

Sử dụng công thức sau trong ô C1

= QUYỀN (B1, MATCH (B1, $ A $ 1: $ A $ 10,1) -1)


Thông minh! Đối với tham số thứ ba trong MATCHhàm: 1 = tìm giá trị lớn nhất nhỏ hơn hoặc bằng lookup_value
Arjan

4

Đối với dữ liệu trong A1, sử dụng công thức sau:

= RIGHT (A1, LEN (A1) -MAX ((FINDB (REPT ("0", ROW (A $ 1: A $ 100)), A1 & "-" & REPT ("0", 100)) = 1) * ROW (1 đô la Úc: 100 đô la Úc))

nhập bằng Ctrl + Shift + Enter. Nó không hoạt động cho chuỗi lên đến 100 ký tự.


Một số lưu ý nhỏ: Ctrl-Shift-Enter (Cmd-Shift-Return trên máy Mac) tạo ra một công thức mảng. Dán công thức như bình thường, nhưng thay vì nhấn nhấn Ctrl-Shift-Enter để lưu nó. Sau đó nó sẽ hiển thị giữa các dấu ngoặc nhọn. Trong OpenOffice.org trên máy Mac, tôi không thể kéo xuống công thức cho các hàng tiếp theo (vì nó sẽ mang lại một số công thức siêu mảng sau đó). Nhưng sao chép và dán không hoạt động, vì vậy tôi chắc chắn cũng có một số phím tắt. Và OpenOffice.org không biết FINDB; sử dụng FIND dường như cũng hoạt động.
Arjan

Giải pháp tao nhã!
wilson
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.