Rút gọn công thức SUMIFS nhiều sheet
KÍnh gửi: Anh/em diễn đàn
File quản lý của em bao gồm nhiều cutting list, mỗi cutting list là 1 sheet nên sheet tổng hợp sẽ link các cutting list lại với nhau do đó công thức quá dài dòng và phúc tạp:=SUMIFS('cutting list no.19'!R:R,'cutting list no.19'!C:C, "="&B101, 'cutting list no.19'!E:E, "="&C101)+SUMIFS('cutting list no.20'!R:R,'cutting list no.20'!C:C, "="&B101, 'cutting list no.20'!E:E, "="&C101)+SUMIFS('cutting list no.21'!R:R,'cutting list no.21'!C:C, "="&B101, 'cutting list no.21'!E:E, "="&C101)+SUMIFS('cutting list no.22'!R:R,'cutting list no.22'!C:C, "="&B101, 'cutting list no.22'!E:E, "="&C101)+SUMIFS('cutting list no.23'!R:R,'cutting list no.23'!C:C, "="&B101, 'cutting list no.23'!E:E, "="&C101)Tuy nhiên về nội dung thì giống nhau chỉ lặp đi lặp lại thôi, ý em muốn nhờ anh/em diễn đàn viết giùm em đoạn code hoặc có cách nào rút gọn công thức trên giúp em để cho đơn giản và gọn nhẹ hơn. Em cảm ơn nhiều.
1. Giả sử liệt kê tên của tất cả các sheet con vào 1 vùng, ví dụ ta Gõ vào ùng I6:I8 (sheet tổng hợp nha) tên của các sheet con (phải gõ đúng tên từng sheet con.)
cutting list no.15
cutting list no.21
cutting list no.22
2. Công thức tại D7
D7 =SUMPRODUCT(SUMIFS(INDIRECT("'"&[COLOR=#ff0000][B]$I$6:$I$8[/B][/COLOR]&"'!J:J"),INDIRECT("'"&[B][COLOR=#ff0000]$I$6:$I$8[/COLOR][/B]&"'!C:C"),"="&B7,INDIRECT("'"&[COLOR=#ff0000][B]$I$6:$I$8[/B][/COLOR]&"'!E:E"),"="&C7))
3. Nếu file thật của bạn có nhiều hơn 3 sheet con như ví dụ thì bạn cứ liệt kê hết tên các sheet con vào 1 vùng như tôi nói, rồi sửa công thức trên ở vùng màu đỏ ($I$6:$I$8) theo cái vùng tên sheet mới của bạn đã liệt kê
D7 =SUMPRODUCT(SUMIFS(INDIRECT("'"&[COLOR=#ff0000][B]$I$6:$I$8[/B][/COLOR]&"'![B][COLOR=#0000cd]J:J[/COLOR][/B]"),INDIRECT("'"&[B][COLOR=#ff0000]$I$6:$I$8[/COLOR][/B]&"'![B][COLOR=#0000cd]C:C[/COLOR][/B]"),"="&B7,INDIRECT("'"&[COLOR=#ff0000][B]$I$6:$I$8[/B][/COLOR]&"'![B][COLOR=#0000cd]E:E[/COLOR][/B]"),"="&C7))Thêm 1 chuyện rất quan trọng: Cho dù hàm SUMIFS có nhanh nhưng tham chiếu cái kiểu nguyên cột (như chỗ màu xanh) thì chỉ tổ phí tài nguyên hệ thống, dẫn đến file bị chậm đi rất nhiều
Tóm lại:
– Dữ liệu đến đâu thì tham chiếu đến nấy, có thể cho dư ra một ít nhưng tuyệt đối không nên tham chiếu nguyên cột
– Excel 2007 trở về sau này, nguyên 1 cột là tương đương với 1,048,576 dòng dữ liệu đấy các bạn à. Bắt Excel tính toán với khối lượng khủng khiếp thế kia thì có mà… đói
www.giaiphapexcel.com/diendan/threads/r%C3%BAt-g%E1%BB%8Dn-c%C3%B4ng-th%E1%BB%A9c-sumifs-nhi%E1%BB%81u-sheet.104604/
Xây dựng Lương 3P, KPI cho Doanh nghiệp
Làm thế nào để trả lương cho nhân viên chính xác nhất? Đây là một trong những câu hỏi khó trong quản trị nhân...
Xem khóa học
Thêm đoạn sau để lấy tên các sheet cho nhanh:
Sub get_name_sheet()
Dim i, n, t As Integer
n = Worksheets.Count
t = 6
For i = 1 To n
Sheets("tonghop").Range("I" & t).Value = Sheets(i).Name
t = t + 1
Next
End Sub
Đang tập tành cốt kiếc, viết cho bạn xem thử