Tính tổng số tiền các sheet theo điều kiện

Liên hệ QC
Tôi tuân thủ nội quy khi đăng bài

charactor5566

Thành viên mới
Tham gia
7/1/23
Bài viết
37
Được thích
3
Em muốn tính tổng số tiền phụ cấp của các sheet mà những người có tổng trên 10 triệu. Em cộng kiểu từng sheet với nhau lâu quá. Anh/chị xem có công thức giúp em với ạ. Em cảm ơn.
 

File đính kèm

Em muốn tính tổng số tiền phụ cấp của các sheet mà những người có tổng trên 10 triệu. Em cộng kiểu từng sheet với nhau lâu quá. Anh/chị xem có công thức giúp em với ạ. Em cảm ơn.
Tìm cách gộp các hết lại với nhau xong rồi pivot sẽ dễ kiểm soát hơn bạn ạ
 
Em muốn tính tổng số tiền phụ cấp của các sheet mà những người có tổng trên 10 triệu. Em cộng kiểu từng sheet với nhau lâu quá. Anh/chị xem có công thức giúp em với ạ. Em cảm ơn.
Em muốn tính tổng số tiền phụ cấp của các sheet mà những người có tổng trên 10 triệu. Em cộng kiểu từng sheet với nhau lâu quá. Anh/chị xem có công thức giúp em với ạ. Em cảm ơn.
Bạn thử công thức
Bạn thử công thức tại D7

D7=IF(SUMPRODUCT(SUMIF(INDIRECT("'"&$I$2:$I$5&"'!B:B"),B7,INDIRECT("'"&$I$2:$I$5&"'!D:D")))>=10^6,SUMPRODUCT(SUMIF(INDIRECT("'"&$I$2:$I$5&"'!B:B"),B7,INDIRECT("'"&$I$2:$I$5&"'!D:D"))),0)
 

File đính kèm

Kết quả đúng rồi, cảm ơn bạn. Nhưng lại thêm cột phụ à bạn. Nếu nhiều file tên sheet ghi khác nhau thì lại phải nhập tay cột phụ. Mà dưới 10 triệu là 0 mà bạn. Bạn để >=10^6 nên dưới 10 triệu nó vẫn giữ nguyên.
 
Kết quả đúng rồi, cảm ơn bạn. Nhưng lại thêm cột phụ à bạn. Nếu nhiều file tên sheet ghi khác nhau thì lại phải nhập tay cột phụ. Mà dưới 10 triệu là 0 mà bạn. Bạn để >=10^6 nên dưới 10 triệu nó vẫn giữ nguyên.
Vậy bạn nên đưa thêm điều kiện là hàm ngắn thôi và không dùng cột phụ.
 
Kết quả đúng rồi, cảm ơn bạn. Nhưng lại thêm cột phụ à bạn. Nếu nhiều file tên sheet ghi khác nhau thì lại phải nhập tay cột phụ. Mà dưới 10 triệu là 0 mà bạn. Bạn để >=10^6 nên dưới 10 triệu nó vẫn giữ nguyên.
Nếu bạn không muốn cột phụ thì tạo Name là dc mà, đưa tên các Sheet vào Name thì không cần cột phụ nữa.
 
Kết quả đúng rồi, cảm ơn bạn. Nhưng lại thêm cột phụ à bạn. Nếu nhiều file tên sheet ghi khác nhau thì lại phải nhập tay cột phụ. Mà dưới 10 triệu là 0 mà bạn. Bạn để >=10^6 nên dưới 10 triệu nó vẫn giữ nguyên.
Bạn chỉnh lại

D7=IF(SUMPRODUCT(SUMIF(INDIRECT("'"&Name&"'!B:B"),B7,INDIRECT("'"&Name&"'!D:D")))>=10^7,SUMPRODUCT(SUMIF(INDIRECT("'"&Name&"'!B:B"),B7,INDIRECT("'"&Name&"'!D:D"))),0)

Bạn xem chi tiết trong file
 

File đính kèm

Không dùng cột phụ thì đây:

Mã:
=TEXT(SUMPRODUCT(SUMIF(INDIRECT("'T"&TEXT(ROW($A$9:$A$12),"00")&"-2022"&"'!B7:B30"),B7,INDIRECT("'T"&TEXT(ROW($A$9:$A$12),"00")&"-2022"&"'!D7"))),"[<10000000]\0;0,000")
 
... ... ... ... ...
Mã:
D7=Tinh
 
Em muốn tính tổng số tiền phụ cấp của các sheet mà những người có tổng trên 10 triệu. Em cộng kiểu từng sheet với nhau lâu quá. Anh/chị xem có công thức giúp em với ạ. Em cảm ơn.

Cell D7
Mã:
=LET(X,$F$2:$F$20,Y,FILTER(X,X<>0),KQ,SUMPRODUCT(SUMIF(INDIRECT("'"&Y&"'!B7:B1000"),$B7,INDIRECT("'"&Y&"'!D7:D1000"))),IF(KQ>10^7,KQ,""))

Cột phụ F :
F1 Sheet Cần Tính
F2 T09-2022
F3 T10-2022
F4 T11-2022
F5 T12-2022

Mình thấy trường hợp này nên xài cột phụ, để lỡ có muốn tính một hoặc vài tháng cố định thôi thì chỉ cần thêm/bớt tên Sheet ở cột phụ thôi chứ không cần phải sửa lại công thức.
 
Lần chỉnh sửa cuối:
Ngắn và nhanh vô địch luôn:
D7
=ngan(B7)

Điều kiện: Code này sẽ lùng tìm tên tại ô B7 trong cột B trong tất cả các sheet (ngoại trừ sheet TONG), nếu tìm thấy thì cộng dồn cột D. Sau đó nếu >10tr thì lấy.
Cách dùng:
Alt-F11 mở VBA editor, Insert/Module, copy code này vô. Lưu file dạng .xlsm
PHP:
Option Explicit
Function ngan(ByRef cell As Range) As Double
Dim f, ws As Worksheet
For Each ws In Sheets
    If ws.Name <> "TONG" Then
        Set f = ws.Columns("B").Find(cell)
        If Not f Is Nothing Then ngan = ngan + f.Offset(, 2)
    End If
Next
If ngan < 10000000 Then ngan = 0 Else ngan = ngan
End Function
 

File đính kèm

Ngắn và nhanh vô địch luôn:
D7
=ngan(B7)

Điều kiện: Code này sẽ lùng tìm tên tại ô B7 trong cột B trong tất cả các sheet (ngoại trừ sheet TONG), nếu tìm thấy thì cộng dồn cột D. Sau đó nếu >10tr thì lấy.
Cách dùng:
Alt-F11 mở VBA editor, Insert/Module, copy code này vô. Lưu file dạng .xlsm
PHP:
Option Explicit
Function ngan(ByRef cell As Range) As Double
Dim f, ws As Worksheet
For Each ws In Sheets
    If ws.Name <> "TONG" Then
        Set f = ws.Columns("B").Find(cell)
        If Not f Is Nothing Then ngan = ngan + f.Offset(, 2)
    End If
Next
If ngan < 10000000 Then ngan = 0 Else ngan = ngan
End Function
Siêu ngắn siêu nhanh thật.
 
Ngắn và nhanh vô địch luôn:
D7
=ngan(B7)

Điều kiện: Code này sẽ lùng tìm tên tại ô B7 trong cột B trong tất cả các sheet (ngoại trừ sheet TONG), nếu tìm thấy thì cộng dồn cột D. Sau đó nếu >10tr thì lấy.
Cách dùng:
Alt-F11 mở VBA editor, Insert/Module, copy code này vô. Lưu file dạng .xlsm
PHP:
Option Explicit
Function ngan(ByRef cell As Range) As Double
Dim f, ws As Worksheet
For Each ws In Sheets
    If ws.Name <> "TONG" Then
        Set f = ws.Columns("B").Find(cell)
        If Not f Is Nothing Then ngan = ngan + f.Offset(, 2)
    End If
Next
If ngan < 10000000 Then ngan = 0 Else ngan = ngan
End Function
Có cái rất dài nằm trong cái rất ngắn.
Thế này vẫn chưa ngắn lắm ví dụ D7=n(B7) thì sẽ ngắn hơn bác hả?
/*-*/
 
Web KT

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

Back
Top Bottom