Kết quả 1 đến 7 của 7

Chủ đề: Phát hiện hạn chế hàm Countif

  1. #1
    tungbkhd Guest

    Phát hiện hạn chế hàm Countif

    Thưa các bác!

    Nguy hiểm quá, vì công việc nên em hay dùng countif để tìm xem có bị trùng lắp nội dung hay không. Nhưng em mới phát hiện ra lỗ hổng của hàm này.

    Xin lỗi trước nếu như cái phát hiện này quá cũ, nhưng em đã search GG rồi, chỉ có 1 nội dung tương tự, mà ví dụ của bác đó là "định dạng text cột A, A1 là 1/1, A2 là 1/13, countif vùng A1:A2, giá trị A1; kết quả là 2".
    Hiện tại em vừa cài office 2013 để xài, và cái ví dụ trên ko bị lỗi.

    Phát hiện của em như vầy, A1 là '222222222222222222, A2 là '222222222222222223 (chú ý khác nhau đúng cái đuôi; ở đây đang mặc định giá trị là text); tất nhiên em countif vùng A1:A2, giá trị A1; kết quả là 2. Các phép thử của em như sau:
    - =A1=A2, kết quả là False (đúng) [IMG]images/smilies/a18.gif[/IMG]
    - =Sumproduct((A1:a2=A1)*1), kết quả =1 (đúng) [IMG]images/smilies/a44.gif[/IMG]
    - Lần 3: em chèn thêm ký tự bất kỳ (X chẳng hạn) vào đầu chuỗi A1 và A2; dùng hàm Countif cũ, kết quả là 1 (đúng) [IMG]images/smilies/a08.gif[/IMG]

    Như vậy em đưa ra 1 giả thiết, với 1 chuỗi chỉ bao gồm toàn bộ các ký tự số, Countif sẽ biến chuỗi thành số; đồng thời Excel lại chuyển các số quá dài về dạng rút gọn, ở ví dụ của em là 2,22222E+17, nên vô tình cả 2 số, dù khác nhau 1 ít, bị làm tròn về dạng rút gọn như nhau, nên Countif coi là 1 giá trị, trả về kết quả sai. [IMG]images/smilies/a43.gif[/IMG]

    Có bác nào có thêm kinh nghiệm vụ này ko, em thực sự là thấy nguy hiểm vì công việc của em xử lý rất nhiều chuỗi, và nó cũng ko phải có quy luật nào, đặc biệt là dài, có số, có chữ, có cả nguyên số. [IMG]images/smilies/a43.gif[/IMG]

  2. #2
    duyhb1990 Guest
    Cái này chả phải hạn chế gì đâu. Theo tôi hiểu đó là "cái gì đó" mặc định. Bạn thử hàm len() với 2 chuỗi ký tự là 12 và '45. Kết quả đều bằng 2. Chức năng find cũng không tìm được ký tự ' đứng trước 1 dãy ký tự. Khi viết code VBA cũng gặp tình trạng khó nhằn với ký tự này.

  3. #3
    bichphuong Guest
    Mình đã đưa ra 1 giả thiết rồi mà, có thể coi là excel mặc định như vậy. Thế nên ko phải lúc nào cũng nhắm mắt đưa chân tin tưởng tuyệt đối vào hàm đúng ko [IMG]images/smilies/a06.gif[/IMG].

  4. #4
    Ngày tham gia
    Aug 2015
    Bài viết
    0
    Trích dẫn Gửi bởi toancvp
    Thưa các bác!

    Nguy hiểm quá, vì công việc nên em hay dùng countif để tìm xem có bị trùng lắp nội dung hay không. Nhưng em mới phát hiện ra lỗ hổng của hàm này.

    Xin lỗi trước nếu như cái phát hiện này quá cũ, nhưng em đã search GG rồi, chỉ có 1 nội dung tương tự, mà ví dụ của bác đó là "định dạng text cột A, A1 là 1/1, A2 là 1/13, countif vùng A1:A2, giá trị A1; kết quả là 2".
    Hiện tại em vừa cài office 2013 để xài, và cái ví dụ trên ko bị lỗi.

    Phát hiện của em như vầy, A1 là '222222222222222222, A2 là '222222222222222223 (chú ý khác nhau đúng cái đuôi; ở đây đang mặc định giá trị là text); tất nhiên em countif vùng A1:A2, giá trị A1; kết quả là 2. Các phép thử của em như sau:
    - =A1=A2, kết quả là False (đúng) [IMG]images/smilies/a18.gif[/IMG]
    - =Sumproduct((A1:a2=A1)*1), kết quả =1 (đúng) [IMG]images/smilies/a44.gif[/IMG]
    - Lần 3: em chèn thêm ký tự bất kỳ (X chẳng hạn) vào đầu chuỗi A1 và A2; dùng hàm Countif cũ, kết quả là 1 (đúng) [IMG]images/smilies/a08.gif[/IMG]

    Như vậy em đưa ra 1 giả thiết, với 1 chuỗi chỉ bao gồm toàn bộ các ký tự số, Countif sẽ biến chuỗi thành số; đồng thời Excel lại chuyển các số quá dài về dạng rút gọn, ở ví dụ của em là 2,22222E+17, nên vô tình cả 2 số, dù khác nhau 1 ít, bị làm tròn về dạng rút gọn như nhau, nên Countif coi là 1 giá trị, trả về kết quả sai. [IMG]images/smilies/a43.gif[/IMG]

    Có bác nào có thêm kinh nghiệm vụ này ko, em thực sự là thấy nguy hiểm vì công việc của em xử lý rất nhiều chuỗi, và nó cũng ko phải có quy luật nào, đặc biệt là dài, có số, có chữ, có cả nguyên số. [IMG]images/smilies/a43.gif[/IMG]
    vấn đề này đã được cảnh bảo rồi mà !
    nếu bạn help hàm countif ( ấn F1 từ excel) để ý kỹ sẽ có 1 phần có nội dung như sau :

    <div class="contentnote" style="border: 1px solid #21A14A;color:#E8F3FF;background-color:#28C25A;padding:0px;-moz-border-radius: 10px;
    border-radius: 10px;line-height: 1.5em;"> Thông tin: <div class="contentnote" style="border: 1px solid #28C25A;color:#21A14A;background-color:#DEFEE3;padding:10px;-moz-border-radius: 10px;
    border-radius: 5px;line-height: 1.5em;">"When counting text values, make sure the data doesn't contain leading spaces, trailing spaces, inconsistent use of straight and curly quotation marks, or nonprinting characters. In these cases, COUNTIF might return an unexpected value.
    You may need to remove trailing spaces in a cell after table values to get accurate results. Try using the CLEAN function or the TRIM function.
    "</div></div>

    ngày xưa mình cũng không có thói quen xem phần help , nhưng từ khi phải chịu trách nhiệm về kinh tế, với những sản phẩm mình làm ra , mình luôn luôn phải đọc kỹ hướng dẫn sử dung trước khi dùng !

  5. #5
    Ngày tham gia
    Aug 2015
    Bài viết
    1
    Wow, bác nói em mới để ý, đúng là có phần này thật [IMG]images/smilies/a01.gif[/IMG]. Lần tới chắc em cũng phải học theo bác, đọc kỹ hướng dẫn sử dụng mới được.

    Thank kiu các bác, em xin mạn phép Close topic! [IMG]images/smilies/a18.gif[/IMG]

  6. #6
    totinhte Guest
    Trích dẫn Gửi bởi hungpecc1
    vấn đề này đã được cảnh bảo rồi mà !
    nếu bạn help hàm countif ( ấn F1 từ excel) để ý kỹ sẽ có 1 phần có nội dung như sau :

    <div class="contentnote" style="border: 1px solid #21A14A;color:#E8F3FF;background-color:#28C25A;padding:0px;-moz-border-radius: 10px;
    border-radius: 10px;line-height: 1.5em;"> Thông tin: <div class="contentnote" style="border: 1px solid #28C25A;color:#21A14A;background-color:#DEFEE3;padding:10px;-moz-border-radius: 10px;
    border-radius: 5px;line-height: 1.5em;">"When counting text values, make sure the data doesn't contain leading spaces, trailing spaces, inconsistent use of straight and curly quotation marks, or nonprinting characters. In these cases, COUNTIF might return an unexpected value.
    You may need to remove trailing spaces in a cell after table values to get accurate results. Try using the CLEAN function or the TRIM function.
    "
    </div>
    </div>
    Em đã đọc phần Help như bác nói, đúng là có phần cảnh báo mà bác đề cập, nhưng ko thấy nói về vấn đề em đề cập đến, [IMG]images/smilies/a42.gif[/IMG]

  7. #7
    lamtolinh Guest
    Các bác xem xét tiếp giúp em đi ạ, [IMG]images/smilies/biggrin.png[/IMG]

Quyền viết bài

  • Bạn Không thể gửi Chủ đề mới
  • Bạn Không thể Gửi trả lời
  • Bạn Không thể Gửi file đính kèm
  • Bạn Không thể Sửa bài viết của mình
  •