Rút gọn công thức SUMIFS nhiều sheet

Chia sẻ bởi:hands
★★★★★
Quảng cáo

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
Khóa học SprinGO phù hợp

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
★★★★★ 5 ★ 1 👤 2 ▥ 0
Quảng cáo

Bạn nên đọc

2 Responses

  1. hands says:

    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

  2. hands says:

    Bác ndu ơi
    Công thức này nó có 1 số hạn chế, ví dụ khi mình cho dữ liệu từ I6: I10 nó sẽ không hiểu, hay khi mình tăng sheet thì mình phải điều chỉnh vùng dữ liệu bằng thủ công chứ công thức nó không tự điều chỉnh được, vậy mình có cách gì khắc phục được không anh?

    Đang tập tành cốt kiếc, viết cho bạn xem thử

Leave a Reply

Your email address will not be published. Required fields are marked *

Quảng cáo

Cũ vẫn chất

Xem thêm