Nhờ giải thích hàm Len() sai chỗ nào

  • Thread starter Thread starter le tin
  • Ngày gửi Ngày gửi
Liên hệ QC

le tin

Học mãi
Tham gia
22/10/07
Bài viết
722
Được thích
560
Chào các bạn
Vui lòng xem giúp tôi hàm Len() cho kết quả không như yêu cầu
Cảm ơn
 

File đính kèm

ban thử lại bằng hàm này xem =IF(B1-INT(B1)=0,0,LEN((B1-LEN(INT(B1))))-2)
 
Hàm Len() thực hiện việc đếm ký tự trong chuỗi, để công thức trả về đúng số ký tự bạn phải chuyển nó về text

=IF(B1-INT(B1)=0,0,LEN(TEXT(B1-INT(B1),"General")))-2)
Hàm trả về 1
(Giá trị ô là 0.8 - 3 ký tự - trừ đi 2 còn 1)

To thanh_tks:
Bạn xem lại chút giả sử ô B1 là 18.8 thì kết quả của bạn có vấn đề rồi
 
Lần chỉnh sửa cuối:
Vấn đề ở đây là vì sao con 8 nó không chịu .
Như 8,88 -> 15 , 8,8 -> 15
 
Vấn đề ở đây là vì sao con 8 nó không chịu .
Như 8,88 -> 15 , 8,8 -> 15
Vấn đề ở chổ Excel tính toán theo kiểu của nó
B1 = 8.8
Int(B1) = 8
đến đây thì chưa có gì sai, nhưng nếu
B1 - INT(B1) thì có vấn đề
Lý ra kết quả phải là 0.8, nhưng bạn thử bôi đen đoạn này trên thanh Formula rồi bấm F9 xem, nó ra kết quả = 0.800000000000001
Còn rất nhiều trường hợp cho kết quả sai nữa, ví dụ số 2.01, 3.01 hoặc 4.01
Vấn đề này đã từng bàn trên diển đàn rồi... và cả các trang nước ngoài cũng có người thắc mắc ---> Cách tốt nhất là hãy biến nó thành TEXT rồi dùng các hàm xử lý chuổi mà làm
 
Vấn đề ở chổ Excel tính toán theo kiểu của nó
B1 = 8.8
Int(B1) = 8
đến đây thì chưa có gì sai, nhưng nếu
B1 - INT(B1) thì có vấn đề
Lý ra kết quả phải là 0.8, nhưng bạn thử bôi đen đoạn này trên thanh Formula rồi bấm F9 xem, nó ra kết quả = 0.800000000000001
Còn rất nhiều trường hợp cho kết quả sai nữa, ví dụ số 2.01, 3.01 hoặc 4.01
Vấn đề này đã từng bàn trên diển đàn rồi... và cả các trang nước ngoài cũng có người thắc mắc ---> Cách tốt nhất là hãy biến nó thành TEXT rồi dùng các hàm xử lý chuổi mà làm
Như vậy muốn lấy phần thập phân của 1 số thì dùng hàm nào vậy bạn
 
dùng hàm TRUNC để cắt lấy phần thập phân theo yêu cầu (vd = trunc(123,45;1) kq 123,4
 
Như vậy muốn lấy phần thập phân của 1 số thì dùng hàm nào vậy bạn
Bạn dùng theo cách của anh Sealand có gì không ổn sao? Tôi thấy được mà!
Còn không thì dùng thử công thức này:
PHP:
=IF(INT(B1)=B1,0,LEN(TEXT(B1,"@"))-FIND(".",TEXT(B1,"@"),1))
 
Như vậy muốn lấy phần thập phân của 1 số thì dùng hàm nào vậy bạ

Tại sao không dùng hàm Mod cho đơn giản nhỉ. Lấy phần dư của 1 số chia cho 1 là phần thập phân mà

Ví dụ:=MOD(14.863563,1)=0.863563
 
Thực lòng tôi không hiểu bạn ra sao nữa! Chẳng có lý gì bạn bảo tôi sai chứ. Sai là sai ở bạn nhấn F9 để định trị cho hàm đó và bỏ hàm Mod của tôi đi.
Nếu bạn gõ công thức ô A1=MOD(14.863563,1)
Ô B1 bạn gõ 1 hằng số 0.863563
Ô C1 bạn gõ =A1-B1
Tôi đã định dạng đến 30 số thập phân mà chả thấy số lẻ nào, thậm chí nhấn F9 cũng chả thấy gì.Như vậy những số 9 đằng sau đi đâu mất?
 
Lần chỉnh sửa cuối:
Thực lòng tôi không hiểu bạn ra sao nữa! Chẳng có lý gì bạn bảo tôi sai chứ. Sai là sai ở bạn nhấn F9 để định trị cho hàm đó và bỏ hàm Mod của tôi đi.
Nếu bạn gõ công thức ô A1=MOD(14.863563,1)
Ô B1 bạn gõ 1 hằng số 0.863563
Ô C1 bạn gõ =A1-B1
Tôi đã định dạng đến 30 số thập phân mà chả thấy số lẻ nào, thậm chí nhấn F9 cũng chả thấy gì.Như vậy những số 9 đằng sau đi đâu mất?
Tôi có nói bạn sai đâu , ý là hàm này cũng không nhìn số chính xác (ở đây là 0.863563)
Tôi thử dùng Mod hay Int đều nhìn thấy là 0.863562999999999 nhưng khi tính toán thì lại là 0.863563 nên kết quả A1-B1=0 . Tôi thắc mắc vì điều lạ này mới biết , sợ lỡ 1 lúc nào đó nó trừ kiểu khác thì rối tung .
Có lẽ hiểu như bạn NDU nói ở trên : Excel tính toán theo kiểu của nó
Cảm ơn
 
Thực lòng tôi không hiểu bạn ra sao nữa! Chẳng có lý gì bạn bảo tôi sai chứ. Sai là sai ở bạn nhấn F9 để định trị cho hàm đó và bỏ hàm Mod của tôi đi.
Nếu bạn gõ công thức ô A1=MOD(14.863563,1)
Ô B1 bạn gõ 1 hằng số 0.863563
Ô C1 bạn gõ =A1-B1
Tôi đã định dạng đến 30 số thập phân mà chả thấy số lẻ nào, thậm chí nhấn F9 cũng chả thấy gì.Như vậy những số 9 đằng sau đi đâu mất?
Dùng Mod không được đâu anh à... nó cũng sẽ bị lổi y chang hàm INT
Như ví dụ của bạn Letin, MOD(14.863563,1) lý ra = 0.863563 ... tức độ dài của phần thập phân lý ra là = 6 ---> Nhưng thực chất không phải vậy, Excel nó tính kết quả MOD(14.863563,1) = 0.863562999999999 ---> Tức độ dài phần thập phân lúc này là = 15 ---> SAI QUÁ TRỜI LUÔN
Vì thế em mới đề xuất chuyển Num sang Text trước khi tính toán
 
Dùng công thức này cũng được nè:
Mã:
=LEN(B1)-LEN(INT(B1))-(INT(B1)<>B1)
 
Web KT

Bài viết mới nhất

Back
Top Bottom