Dùng hàm countif làm sao loại bỏ những phiếu trùng?

Thảo luận trong 'Ứng dụng Excel' bắt đầu bởi heroic, 29 Tháng ba 2006.

10,583 lượt xem

  1. heroic

    heroic Thành viên sơ cấp

    Bài viết:
    56
    Đã được thích:
    0
    Nơi ở:
    vn
    Nhờ các cao thủ giải cho em bài này:
    Cột B của em là các số phiếu nhập và xuất
    PN1/03 mặt hàng A
    PN1/03 mặt hàng B
    PN2/03 mặt hàng A
    PN2/03 mặt hàng B
    PN2/03 mặt hàng C
    PX1/03 mặt hàng A
    PX1/03 mặt hàng B
    PX1/03 mặt hàng C

    Em muốn biết hiện thời là phiếu nhập, hoặc phiếu xuất là số mấy rồi nếu không có sự trùng phiếu nhập thì em dùng hàm
    COUNTIF(RANGE,"PN"&"*") là OK biết hiện là phiếu nhập mấy. Vậy bây giờ em phải làm sao để nó chỉ tính những phiếu nhập cùng tên là 1 giá trị thôi. Như bảng trên thì phiếu nhập tiếp theo sẽ là phiếu thứ 3 ??????
    Mong các cao thủ giải đáp dùm em.
     
    #1
  2. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Bạn có thể dùng Validation để hạn chế nhập mã-phiếu trùng. Cách này đã có rất nhiều người dùng và cũng đã post đâu đó trên box này.
    Bạn chọn cả cột A, vào Data - Validation, mục Allow chọn là Custom, sau đó nhập vào: =COUNTIF(A:A,A2)<=1
     
    #2
  3. heroic

    heroic Thành viên sơ cấp

    Bài viết:
    56
    Đã được thích:
    0
    Nơi ở:
    vn
    Vấn đề là lấy STT

    Cảm ơn Adam_tran nhưng vẫn đề của mình là mình muốn Ô trên cùng hiển thị số phiếu hiện thời là mấy? để mình nhập phiếu tiếp theo. Còn trùng phiếu thì mình vẫn phải nhập trùng, vì cùng một phiếu có nhiều mặt hàng khác nhau mà.
     
    #3
  4. adam_tran

    adam_tran Steel Partner

    Bài viết:
    1,373
    Đã được thích:
    32
    Nơi ở:
    Goooogle
    Nếu đánh số chỉ là 1, 2, 3 thì bạn dùng hàm Max là xong chứ gì ????
     
    #4
  5. HongViet

    HongViet Thành viên thân thiết

    Bài viết:
    286
    Đã được thích:
    10
    Nơi ở:
    Đà nẵng
    :angel:
    Theo cách thô thiển nhất là tạo cột phụ:
    =VALUE(IF(LEFT($A6; 2) = "pN"; MID($A6; 3; FIND("/"; $A6; 3)- 3); 0))
    Xong mới dùng hàm = 1 + MAX() trên cột phụ đó được:friend:
     
    Last edited: 29 Tháng ba 2006
    #5
  6. Đào Việt Cường

    Đào Việt Cường Moderator

    Bài viết:
    400
    Đã được thích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Khánh Hòa
    Dear HongViet,
    --------------
    Bác HongViet ơi, theo em hiểu thì heroic không muốn dùng cột phụ(?). Đơn giản là vì chỉ cần biết số phiếu nhập/xuất hiện hành đang là số mấy thôi.
    Như vậy, tại một Header cell, công thức tính toán phải là một Array Formula. Công thức của em như thế này có được không: (giả sử cột Số chứng từ là vùng SoCT)
    {="PN"&MAX(IF(LEFT(SoCT;2)="PN";VALUE(MID(SoCT;3;FIND("/";SoCT)-3));0))+1&"/03"}
    Mọi người góp ý thêm nhé!
     
    Last edited: 29 Tháng ba 2006
    #6
  7. handung107

    handung107 Thành viên thân thiết

    Bài viết:
    576
    Đã được thích:
    13
    Nơi ở:
    VN
    #7
  8. heroic

    heroic Thành viên sơ cấp

    Bài viết:
    56
    Đã được thích:
    0
    Nơi ở:
    vn
    Đúng là chỉ lấy số thứ tự thôi!

    Vấn đề của em chỉ là lấy Max của phiếu nhập hiện tại thôi. Nhưng em chưa biết làm sao??????????? Ý hiểu của Anh Cường là đúng vấn đề em cần giải đáp nhưng em làm thử không được. Em chưa biết sử dụng công thức mảng.
    hu hu!!!!!!!!???????????????????? Có cách nào viết công thức Max đó đơn giản hơn không chỉ giúp em với....
     
    #8
  9. Đào Việt Cường

    Đào Việt Cường Moderator

    Bài viết:
    400
    Đã được thích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Khánh Hòa
    Dear heroic,
    ------------
    Bạn tham khảo file đính kèm xem có đúng ý bạn không nhé!
    Chúc bạn thành công!
     
    Last edited: 3 Tháng tư 2006
    #9
  10. quocnghia

    quocnghia Thành viên sơ cấp

    Bài viết:
    64
    Đã được thích:
    0
    Mình xin nâng cấp một chút ! mong bạn bỏ wa !
     

    Các file đính kèm:

    • NX1.rar
      Kích thước:
      2.6 KB
      Đọc:
      402
    #10
  11. heroic

    heroic Thành viên sơ cấp

    Bài viết:
    56
    Đã được thích:
    0
    Nơi ở:
    vn
    Thanks for all

    Mình đã làm được rồi, Cám ơn A.Cường và tất cả mọi người đã góp ý:
    Mình đang viết một form nhập liệu, vì muốn nó hiện lên trên form STT của các phiếu muốn nhập nên dùng cách tính của A.Cường rồi lấy giá trị đó gán lên Label để biết đang làm việc ở phiếu STT là mấy để nhập liệu phiếu tiếp theo.
    hiện công việc thế là OK. Còn vấn đề nào thì sẽ hỏi thêm mọi người!
    Nhưng nếu A.Cường giải thích thêm một chút về công thức nữa, em làm được nhưng chưa hiểu lắm.
    {="PN"&MAX(IF(LEFT(SoCT;2)="PN";VALUE(MID(SoCT;3;FIND("/";SoCT)-3));0))+1&"/03"}

    đoạn FIND("/";SoCT) này có thêm để làm gì? nói chung là còn LƠTƠMƠ!

    Ghi chú: Với VD mẫu của A.Cường và quocnghia sẽ giúp cho các member rất nhiều, vì thường gặp khi làm việc trong kế toán.
     
    #11
  12. Đào Việt Cường

    Đào Việt Cường Moderator

    Bài viết:
    400
    Đã được thích:
    3
    Giới tính:
    Nam
    Nơi ở:
    Khánh Hòa
    Dear heroic,
    -----------
    Để hiểu về công thức có nhiều hàm nồng nhau như công thức ở ví dụ trên, bạn nên "bổ" công thức đó ra thành các thành phần nhỏ hơn. Ví dụ ở đây bạn chưa hiểu FIND("/";SoCT) bạn phải hiểu được ý nghĩa của nó đối với hàm MID:
    FIND("/";SoCT) chỉ ra vị trí của ký tự "/" trong chuỗi SoCT (tính từ trái qua phải). Bạn phải FIND("/";SoCT) - 3 để xác định chính xác số ký tự (độ lớn LEN) của số phiếu cần lấy! Thành phần này đóng vai trò là num_chars của hàm MID.
    Để kiểm chứng điều này, hãy khảo sát một vài ví dụ:
    =FIND("/";"PN1/03");
    =FIND("/";"PN301/03")
    kết hợp với hàm MID:
    =MID("PN301/03";3;FIND("/";"PN301/03")-3))
    Để MAX được các MID thì các MID phải convert thành giá trị (hàm VALUE).
    Cuối củng để có được tập hợp các VALUE(MID) chúng ta sử dụng công thức mảng (ấn tổ hợp Ctrl + Shift + Enter). MAX của {VALUE(MID)} chúng ta sẽ tìm được số lớn nhất!
    Một cách có kinh nghiệm hơn là bạn có thể "kiểm toán" công thức thông qua công cụ Formula Auditing. Công cụ này cho phép chúng ta khảo sát cụ thể một công thức bằng phương thức "Evaluate" từng thành phần! Bạn chọn công cụ này từ View/Toolbars/Formula Auditing.
    Chúc bạn có thể ứng dụng tốt hơn ở các yêu cầu khác!
     
    Last edited: 30 Tháng ba 2006
    #12
  13. phoenixking

    phoenixking Thành viên sơ cấp

    Bài viết:
    11
    Đã được thích:
    0
    Nơi ở:
    thành phố hồ chí minh
    Sao bạn không thư sư dụng hàm nay xem =IF(cột B<>"",IF(cột B="B",COUNTIF(cột B:cột B),"")). bạn hãy nhấn F4 ở "cột B" thứ 2 :--->>cột B:$cột B<<---
    Have a fun
     
    Last edited: 14 Tháng bảy 2006
    #13
  14. Bình_OverAC

    Bình_OverAC Over Abnormal / Crazy

    Bài viết:
    845
    Đã được thích:
    7
    Nơi ở:
    Nha Trang
    Công thức của phoenixking không có phần giải thích cho rõ:
    Giả sử:
    - Cột B là cột chứa các dử liệu về số phiếu và dử liệu này bắt đầu từ ô B2,
    - Cách tính số phiếu trùng tính đến Ô Bn (n là số): =Countif($B$2:Bn,Bn)
    Nếu sử dụng validation (kiểm soát nhập liệu) có thể dùng công thức thế này (trong tùy chọn custom của validation) để ngăn không cho nhập trùng: = countif($B$2:Bn,Bn)>

    Thân.
     
    #14

Chia sẻ trang này