Kiểm tra xem văn bản ô Excel có phải là số chỉ sử dụng công thức không


13

Tôi phải tìm hiểu xem văn bản các ô của tôi có phải là một giá trị số hay không và muốn sử dụng một phương thức phi VBA thanh lịch không cản trở trạng thái hoặc giá trị hiện tại của nó.

Những gì tôi đã tìm thấy là ISNUMBER()hàm chỉ hoạt động nếu các ô được định dạng số hoặc không có khoảng trắng nếu định dạng văn bản, ví dụ:

số làm ví dụ văn bản

Trong ba lần đầu tiên tôi đã sử dụng =ISNUMBER(...)và nỗ lực cuối cùng của tôi là =ISNUMBER(TRIM(...)).

Phương pháp duy nhất tôi đã sử dụng không sử dụng VBA là ghi đè các giá trị hiện tại của tôi bằng cách sử dụng văn bản vào các cột sau đó sử dụng =ISNUMBER()hàm.

Lưu ý: Tôi thành thạo với VBA và Excel và hiểu rằng tôi có thể tạo một hàm do người dùng xác định. Nhưng tôi không muốn vì điều này áp đặt một bảng tính yêu cầu macro hoặc một bổ trợ được cài đặt, điều mà tôi có thể và đã thực hiện trong một số trường hợp.

Tôi sẽ đánh giá cao bất kỳ lời khuyên, suy nghĩ nào (ngay cả khi họ nói với tôi rằng không thể thực hiện được) hoặc các giải pháp VBA (tuy nhiên sẽ không được đánh dấu là câu trả lời).


4
FWIW một thay thế cho ISNUMBERlà hiếm khi được sử dụng N. Một cái gì đó như thế này=NOT(ISERR(N(--A1)))
brettdj

1
@brettdj cảm ơn vì điều đó! Đối với một câu trả lời sử dụng số lượng từ thiện ít nhất và nhanh chóng và bẩn thỉu tôi đã có =N(-A1). Cũng không biết rằng đã tồn tại.
glh

Mục đích của dấu gạch ngang ở phía trước tham chiếu ô là gì? Và tại sao mỗi bạn có một số dấu gạch ngang khác nhau?
youcantryreachingme

Câu trả lời:


30

Hãy thử nhân giá trị ô với 1, sau đó chạy IsNumbervà các Trimhàm, ví dụ:

=IsNumber(Trim(A1)*1)


2
+1 cho tốc độ và một anwser tốt. Nó thật tệ khi mọi thứ ở ngay trước mặt bạn nhưng bạn không thể nhìn thấy chúng!
glh

1
Ngoài ra tôi đã phát hiện ra rằng bạn thậm chí không cần sử dụng trim. Trân trọng
glh

2
@glh đôi khi chỉ cần một đôi mắt khác để xem những gì ngay trước mặt bạn. :)
David Zemens

5

Giả sử giá trị bạn muốn chuyển đổi là trong A1, bạn có thể sử dụng công thức sau:

=ISNUMBER(VALUE(TRIM(CLEAN(A1)))

Ở đây các chức năng dọn dẹp và cắt xén đang loại bỏ khoảng trắng và không có ký tự in được. Giá trị hàm chuyển đổi một chuỗi thành một số và với chuỗi được chuyển đổi, chúng ta có thể kiểm tra xem giá trị đó có phải là một số không.


3
+1. Vì nhanh và bẩn, tôi thích =VALUE(A1)dữ liệu của mình sẽ không cần CLEAN(). Tôi không biết VALUE()chức năng tồn tại. Chỉ cần lưu ý TRIM()không có gì là không gian được bỏ qua anyway.
glh

3

Các ngắn nhất câu trả lời tôi đã có cho câu hỏi của tôi là:

=N(-A1)

Cảm ơn brettdj


2

Tôi biết bài đăng này đã cũ nhưng tôi thấy nó rất hữu ích trong trường hợp này tôi đã có một công thức trả về (333), mặc dù đó là một số và ISNUMBER sẽ nói đó là một số mặc dù tôi không muốn có câu trả lời nếu có các ký tự khác với chữ số. Sau đây làm việc cho tôi.

=IF(AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))),"Is Number","")

Nó hoạt động nếu có BẤT K character ký tự nào ngoài chữ số. Nếu bạn chỉ muốn sai, hãy bỏ IF

=AND(ISNUMBER(--(MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1))))

Như David Zemens đã nói

=IsNumber(Trim(A1)*1)

Hoạt động nhưng nếu có dấu "-" hoặc số nằm trong ngoặc đơn thì nó sẽ cho biết đó là số.

Tôi hy vọng điều này sẽ giúp bạn hoặc người khác.


0

nếu bất cứ ai cần lọc các ô chứa bất kỳ thứ gì không phải là số:

=AND(SUMPRODUCT(--ISNUMBER(--MID(A1,ROW(INDIRECT("1:"&LEN(A1))),1)))=LEN(A1),A1<>"")

số thập phân và kết quả phủ định FALSE

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.