Hàm Countif và định dạng dấu chấm, phẩy trong Control Panel

  • Thread starter Thread starter Ba Tê
  • Ngày gửi Ngày gửi
Liên hệ QC

Ba Tê

Cạo Rồi Khỏi Gội
Tham gia
5/5/09
Bài viết
12,124
Được thích
17,588
Giới tính
Nam
Nhờ các Bạn trên GPE góp ý dùm:
1. Trong Control Panel, nếu máy tính của mình định dạng số:
- Decimal symbol: dấu chấm
- Digit Grouping symbol: dấu phẩy.
Với công thức: Countif(A1:F1,"<6.5") sẽ cho kết quả đúng, nhưng khi copy sang máy khác có định dạng trong Control Panel khác đi:
- Decimal symbol: dấu phẩy
- Digit Grouping symbol: dấu chấm, thì công thức Countif trên sẽ cho kết quả sai, vì hiện giờ các số trong vùng A1:F1 là các số 6,5 - 6,4 (dấu phẩy).
Có cách nào để sử dụng countif(range,"số lẻ") trong mọi trường hợp định dạng Decimal chấm hoặc phẩy đều cho kết quả đúng?
2. Trong Code VBA, ví dụ có dòng lệnh sau:
With Application.WorksheetFunction
.CountIf(Range, "<6.5") hoặc
.CountIf(Range, "<6,5") cái nào là đúng trong tất cả các máy tính dù định dạng dấu chấm hoặc phẩy?
Rất mong được các Bạn nhiều kinh nghiệm giúp đỡ.
 
Nhờ các Bạn trên GPE góp ý dùm:
1. Trong Control Panel, nếu máy tính của mình định dạng số:
- Decimal symbol: dấu chấm
- Digit Grouping symbol: dấu phẩy.
Với công thức: Countif(A1:F1,"<6.5") sẽ cho kết quả đúng, nhưng khi copy sang máy khác có định dạng trong Control Panel khác đi:
- Decimal symbol: dấu phẩy
- Digit Grouping symbol: dấu chấm, thì công thức Countif trên sẽ cho kết quả sai, vì hiện giờ các số trong vùng A1:F1 là các số 6,5 - 6,4 (dấu phẩy).
Có cách nào để sử dụng countif(range,"số lẻ") trong mọi trường hợp định dạng Decimal chấm hoặc phẩy đều cho kết quả đúng?
2. Trong Code VBA, ví dụ có dòng lệnh sau:
With Application.WorksheetFunction
.CountIf(Range, "<6.5") hoặc
.CountIf(Range, "<6,5") cái nào là đúng trong tất cả các máy tính dù định dạng dấu chấm hoặc phẩy?
Rất mong được các Bạn nhiều kinh nghiệm giúp đỡ.
Theo mình để giải quyết bài toán này thì khỏi dùng VBA, khỏi cần định dạng trong Control Panel, mà nó sử dụng được cho các máy có định dạng khác nhau. Lấy 1 cell nào đó bạn gõ số 6.5 hay 6,5 (Theo định dạng máy của bạn) rồi sau đó tham chiếu đến cell đó.
VD: B1=6.5

=CountIf(Range,"<"&$B$1)

http://www.4shared.com/file/188512287/b1095acc/Doi_dinh_dang_so.html
 
Nhờ các Bạn trên GPE góp ý dùm:
1. Trong Control Panel, nếu máy tính của mình định dạng số:
- Decimal symbol: dấu chấm
- Digit Grouping symbol: dấu phẩy.
Với công thức: Countif(A1:F1,"<6.5") sẽ cho kết quả đúng, nhưng khi copy sang máy khác có định dạng trong Control Panel khác đi:
- Decimal symbol: dấu phẩy
- Digit Grouping symbol: dấu chấm, thì công thức Countif trên sẽ cho kết quả sai, vì hiện giờ các số trong vùng A1:F1 là các số 6,5 - 6,4 (dấu phẩy).
Có cách nào để sử dụng countif(range,"số lẻ") trong mọi trường hợp định dạng Decimal chấm hoặc phẩy đều cho kết quả đúng?
2. Trong Code VBA, ví dụ có dòng lệnh sau:
With Application.WorksheetFunction
.CountIf(Range, "<6.5") hoặc
.CountIf(Range, "<6,5") cái nào là đúng trong tất cả các máy tính dù định dạng dấu chấm hoặc phẩy?
Rất mong được các Bạn nhiều kinh nghiệm giúp đỡ.
Thì bạn "né" mấy dấu ấy đi
Thay vì viết 6.5 hoặc 6,5 (mà ta ngầm hiểu rằng đó là sáu phẩy năm) thì có thể thay bằng 65/10 (sáu mươi lăm chia mười)
Ví dụ:
PHP:
=COUNTIF($A$1:$A$30,"<"&65/10)
Chắc bắp!
---------------------------------
Theo mình để giải quyết bài toán này thì khỏi dùng VBA, khỏi cần định dạng trong Control Panel, mà nó sử dụng được cho các máy có định dạng khác nhau. Lấy 1 cell nào đó bạn gõ số 6.5 hay 6,5 (Theo định dạng máy của bạn) rồi sau đó tham chiếu đến cell đó.
VD: B1=6.5

=CountIf(Range,"<"&$B$1)
Nếu thiết lập 1 UDF chả lẽ cũng phải tham chiếu đến 1 cell phụ sao? Không khả thi (đó là chưa nói người dùng muốn save UDF thành 1 Add-In)
 
Lần chỉnh sửa cuối:
Thì bạn "né" mấy dấu ấy đi
Thay vì viết 6.5 hoặc 6,5 (mà ta ngầm hiểu rằng đó là sáu phẩy năm) thì có thể thay bằng 65/10 (sáu mươi lăm chia mười)
Ví dụ:
PHP:
=COUNTIF($A$1:$A$30,"<"&65/10)
Chắc bắp!
---------------------------------

Nếu thiết lập 1 UDF chả lẽ cũng phải tham chiếu đến 1 cell phụ sao? Không khả thi (đó là chưa nói người dùng muốn save UDF thành 1 Add-In)
Rất đơn giản và hay cho 65/10, nhưng theo em thì dùng cell phụ để tham chiếu nó "cơ động" hơn, sau này muốn thay đổi điều kiện chỉ sửa cell phụ 1 phát là xong.
Như bài trên em đã nói là không dùng VBA, chỉ dùng hàm thôi thầy à.
 
Tôi thấy nếu copy hàm rồi past special ---> Funtion thì không thấy có vấn đề gì về định dạng chấm phẩy.
Chỉ khi thiết lập công thức thì cái định dạng kia mới sinh sự thôi
Còn cái dấu phẩy ở điều kiện "<6,5" bạn cứ gõ dấu chấm bên phím số là Excel khắc tự hiểu
 
Lần chỉnh sửa cuối:
Tôi thấy nếu copy hàm rồi past special ---> Funtion thì không thấy có vấn đề gì về định dạng chấm phẩy.
Chỉ khi thiết lập công thức thì cái định dạng kia mới sinh sự thôi
Còn cái dấu phẩy ở điều kiện "<6,5" bạn cứ gõ dấu chấm bên phím số là Excel khắc tự hiểu
Cái này còn tuỳ thuộc vào định dạng của máy như thế nào nữa bạn à, VD nếu máy bạn định dạng theo kiểu #,###.## thì gõ "<6.5" thì OK, nhưng ngược lại thì không được. Vì bạn nên nhớ là nếu điều kiện nằm trong " " thì nó là chuổi, mà chuổi thì không thể thay đổi tự động được.
 
Em có 2 sheet A & B, A bao gồm giá trị 1-3, B bao gồm giá trị 1-5, tức là trùng với A từ giá trị từ 1-3.

Em dùng hàm countif để lọc ra giá trị 4-5 (giá trị ko trùng nhau) mà ko ra. Các bác chỉ giáo cho em với =((
 
Web KT

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

Back
Top Bottom