Có hàm nào để rút gọn công thức file Lương tháng của e ko? (1 người xem)

Người dùng đang xem chủ đề này

phucbugis

Thành viên tích cực
Tham gia
22/6/13
Bài viết
1,270
Được thích
982
Mình muốn đơn giản công thức từ cột H -> cột M sheet ngày công.
Nếu điều kiện trong range P4 -> P7 (sheet ngaycong) càng nhiều thì công thức các cột trên càng dài ra. !$@!!
Có ai biết hàm nào xử lý nó tốt hơn ko?

File kem theo:
Pass: abc
http://www.mediafire.com/?2x7qi59vgsr23jx
 
Lần chỉnh sửa cuối:
Mình muốn đơn giản công thức từ cột H -> cột M sheet ngày công.
Nếu điều kiện trong range P4 -> P7 (sheet ngaycong) càng nhiều thì công thức các cột trên càng dài ra. !$@!!
Có ai biết hàm nào xử lý nó tốt hơn ko?

Thanks !


File kem theo:
Pass: abc
http://www.mediafire.com/?2x7qi59vgsr23jx

Tôi làm 1 mẫu ví dụ, bạn tự "phăng" nha!
Tại cell H4, công thức của bạn là:
Mã:
=SUMIFS(tbl_HDLD[12],tbl_HDLD[2],C4,tbl_HDLD[15],C4&[COLOR=#ff0000]$P$4[/COLOR])+SUMIFS(tbl_HDLD[12],tbl_HDLD[2],C4,tbl_HDLD[15],C4&[COLOR=#ff0000]$P$5[/COLOR])
Có thể sửa thành:
Mã:
=SUMPRODUCT(SUMIFS(tbl_HDLD[12],tbl_HDLD[2],C4,tbl_HDLD[15],C4&[COLOR=#ff0000]$P$4:$P$5[/COLOR]))
Chổ màu đỏ ấy bạn muốn kéo dài bao nhiêu cell tùy ý
 
oh, đơn giản và dễ hiểu nữa. ^^ /-*+/
Thanks ndu96081631
user-online.png
Ăn cùng GPE, Ở cùng G
 
Ah... cái này nói ngoài lề 1 chút (nhân xem file của bạn)
Trong file tôi thấy có hàm DemCN như vầy:
Mã:
Public Function DemCN(startDate As Date, EndDate As Date)
    Dim i, Dem
    Dim date1 As Date
    i = EndDate - startDate
    For i = 0 To EndDate - startDate Step IIf((EndDate - startDate) >= 0, 1, -1)
    date1 = startDate + i
    If WorksheetFunction.Weekday(date1, 1) = 1 Then Dem = Dem + 1
    Next i
    DemCN = Dem
End Function
Thấy hơi... buồn cười!
Đếm CN thì cần quái gì cái For.. Next nhỉ? Tôi làm vầy:
Mã:
Public Function DemCN(startDate As Date, EndDate As Date)
    DemCN = Int((EndDate - startDate - ((EndDate - 1) Mod 7) + 7) / 7)
End Function
Hoặc viết rõ ra 1 chút:
Mã:
Public Function DemCN(startDate As Date, EndDate As Date)
  Dim lCount As Long, lTmp As Long
  lCount = EndDate - startDate + 1
  lTmp = (EndDate - 1) Mod 7
  DemCN = Int((lCount - lTmp + 6) / 7)
End Function
và còn rất nhiều hàm khác cũng.... Ẹc... Ẹc...
vân... vân...
(chẳng hạn chả ai lại đi dùng Application.VLookup trong VBA trong khi ta có Find Method làm tốt việc này)
 
oh, cái hàm demCN em dùng cũng lâu. Ko nhớ là của ai. Chứ lập function trong VBA -> e còn rất gà.

E tập tành từ khi ko biết gì về VBA, rồi đến việc Record Macro -> dựa vào các hàm đơn giản đó, rồi thêm "mắm, muối" vào !$@!! -> rất mơ hồ.

Còn hàm Application.VL -> Find Method là ntn vậy a ndu96081631 ?

Thanks!
 
oh, cái hàm demCN em dùng cũng lâu. Ko nhớ là của ai. Chứ lập function trong VBA -> e còn rất gà.

E tập tành từ khi ko biết gì về VBA, rồi đến việc Record Macro -> dựa vào các hàm đơn giản đó, rồi thêm "mắm, muối" vào !$@!! -> rất mơ hồ.
Bạn dùng quá trời hiệu ứng + các hàm API
Tôi nói thật lòng là tôi cũng không thể làm được những hiệu ứng như vậy (rất hoành tráng)... nên khó tin rằng bạn "gà" VBA


Còn hàm Application.VL -> Find Method là ntn vậy a ndu96081631 ?

Thanks!

Find Method là phương thức tìm kiếm (nếu làm bằng tay là Ctrl + F để tìm đấy)
Viết ra code VBA dùng Find Method, bạn có thể tham khảo topic này:
http://www.giaiphapexcel.com/forum/...p-về-phương-thức-tìm-kiếm-FIND-(-Find-Method)
Nến nhớ rằng:
- Application.Vlookup sẽ xuất hiện lỗi trong trường hợp không tìm thấy nên bắt buộc bạn phải bẫy lỗi bằng dòng lệnh On Error Resume Next ở đầu code
- Trong khi với Find Method, bạn chỉ cần 1 câu IF nho nhỏ (chẳng hạn là If Not rFind is Nothing then) thì dù có cái vụ không tìm thấy cũng chẳng lỗi gì
 
a ndu96081631 chỉ vẻ rất chu đáo. Thanks a lần nữa :-= !
 

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

Back
Top Bottom