Giúp đỡ về lập công thức dò tìm

Liên hệ QC

Kaidne

Thành viên mới
Tham gia
13/12/16
Bài viết
13
Được thích
2
Mình có một file chi phí của các chi nhánh trong công ty, mình lập thành các sheet riêng, các chỉ tiêu mình không thay đổi. Mình muốn tham chiếu các số tổng theo từng tháng qua bảng so sánh (sheet đầu tiên). Bình thường thì mình dùng vlookup cũng được nhưng do các dòng chỉ tiêu bên sheet chi nhánh của mình luôn thay đổi nên công thức luôn bị sai, phải chỉnh lại. Mình cần các bạn giúp mình một công thức nào tối ưu cho vấn đề này. Do mình muốn trình bày đẹp nên bảng tính của mình hơi màu mè, các bạn đừng chê nhé. Xin cám ơn
 

File đính kèm

  • Dữ liệu tạm ứng TT 2018.xlsx
    271.8 KB · Đọc: 21
Mình có một file chi phí của các chi nhánh trong công ty, mình lập thành các sheet riêng, các chỉ tiêu mình không thay đổi. Mình muốn tham chiếu các số tổng theo từng tháng qua bảng so sánh (sheet đầu tiên). Bình thường thì mình dùng vlookup cũng được nhưng do các dòng chỉ tiêu bên sheet chi nhánh của mình luôn thay đổi nên công thức luôn bị sai, phải chỉnh lại. Mình cần các bạn giúp mình một công thức nào tối ưu cho vấn đề này. Do mình muốn trình bày đẹp nên bảng tính của mình hơi màu mè, các bạn đừng chê nhé. Xin cám ơn
Nếu máy bạn đủ nhanh, công thức ở ô C7 sheet EXPENSE ANALYSIS sẽ như sau:
Mã:
=IFERROR(INDIRECT(C$6&"!R"&MATCH(1,INDEX((INDIRECT(C$6&"!B:B",TRUE)="Subtotal")*(ROW(INDIRECT(C$6&"!B:B",TRUE))>MATCH($B7,INDIRECT(C$6&"!B:B",TRUE),0)),),0)&"C"&MATCH($B$5,INDIRECT(C$6&"!5:5",TRUE),0),FALSE),"")
 
Lần chỉnh sửa cuối:
Nếu máy bạn đủ nhanh, công thức ở ô C7 sheet EXPENSE ANALYSIS sẽ như sau:
Mã:
=IFERROR(INDIRECT(C$6&"!R"&MATCH(1,INDEX((INDIRECT(C$6&"!B:B",TRUE)="Subtotal")*(ROW(INDIRECT(C$6&"!B:B",TRUE))>MATCH($B7,INDIRECT(C$6&"!B:B",TRUE),0)),),0)&"C"&MATCH($B$5,'VT1'!$5:$5,0),FALSE),"")
Cám ơn bạn, mình đã thử và máy đã treo, core i3 3.7GHZ ram 4gb
 
Cám ơn bạn, mình đã thử và máy đã treo, core i3 3.7GHZ ram 4gb
Đó là điều tuyệt vời nhất của công thức khi cái gì cũng muốn hoàn hảo trong mọi trường hợp.
Excel đã sinh ra công thức để giải quyết những vấn đề đơn giản, còn tự động tham chiếu đến các sheet khác rồi lại còn dò tìm dữ liệu.... thì chắc nên dùng VBA - công cụ lập trình trong excel. Nếu bạn post bài này sang khu lập trình, có lẽ sẽ giúp ích được cho bạn. Nhưng post như vậy đồng nghĩa bạn không hiểu lắm về nó và sau này khi cấu trúc thay đổi, có thể việc thực thi sẽ không còn chính xác.
 
chắc kêu sếp cho lên core i9, ram 16gb để đu theo công thức, kaka
MÌnh nghĩ nên có 1 file masterdata thống kê các chi phí của các bộ phận trong 1 sheet, xong dùng pivot và slicer xử lý để lên báo cáo.
File quá nặng do bạn để tô màu những phần không cần thiết.
 
Bạn tham khảo file này cho nhẹ nhàng nhé. Dùng VBA. Bạn chỉ cần thay đổi giá trị tháng của bạn là được. Nhớ bật Macro nhé (không biết thì tra google giùm à)
 

File đính kèm

  • Dữ liệu tạm ứng TT 2018.xlsm
    264.8 KB · Đọc: 18
Mình có một file chi phí của các chi nhánh trong công ty, mình lập thành các sheet riêng, các chỉ tiêu mình không thay đổi. Mình muốn tham chiếu các số tổng theo từng tháng qua bảng so sánh (sheet đầu tiên). Bình thường thì mình dùng vlookup cũng được nhưng do các dòng chỉ tiêu bên sheet chi nhánh của mình luôn thay đổi nên công thức luôn bị sai, phải chỉnh lại. Mình cần các bạn giúp mình một công thức nào tối ưu cho vấn đề này. Do mình muốn trình bày đẹp nên bảng tính của mình hơi màu mè, các bạn đừng chê nhé. Xin cám ơn
Gửi bạn, xem thử được chưa, không cần gán kết quả lên đầu hàng:
PHP:
=VLOOKUP("Subtotal",INDIRECT(C$6&"!B"&MATCH($B7,INDIRECT(C$6&"!B1:B200"),0)&":R200"),MATCH($B$5,INDIRECT(C$6&"!B5:R5"),0),0)
Hoặc do bạn đã để kết quả ngang hàng với kết quả dò:
PHP:
=INDEX(INDIRECT(C$6&"!B"&MATCH($B7,INDIRECT(C$6&"!B1:B200"),0)&":R200"),1,MATCH($B$5,INDIRECT(C$6&"!B5:R5"),0))
PHP:
=OFFSET(INDIRECT(C$6&"!A"&MATCH($B7,INDIRECT(C$6&"!B1:B200"),0)),,MATCH($B$5,INDIRECT(C$6&"!B5:R5"),0))
 
Lần chỉnh sửa cuối:
Bạn tham khảo file này cho nhẹ nhàng nhé. Dùng VBA. Bạn chỉ cần thay đổi giá trị tháng của bạn là được. Nhớ bật Macro nhé (không biết thì tra google giùm à)
cám ơn bạn nhiều nghe, để mình test thử. Hôm giờ mình bận quá chưa lên xem.
 
Gửi bạn, xem thử được chưa, không cần gán kết quả lên đầu hàng:
PHP:
=VLOOKUP("Subtotal",INDIRECT(C$6&"!B"&MATCH($B7,INDIRECT(C$6&"!B1:B200"),0)&":R200"),MATCH($B$5,INDIRECT(C$6&"!B5:R5"),0),0)
Hoặc do bạn đã để kết quả ngang hàng với kết quả dò:
PHP:
=INDEX(INDIRECT(C$6&"!B"&MATCH($B7,INDIRECT(C$6&"!B1:B200"),0)&":R200"),1,MATCH($B$5,INDIRECT(C$6&"!B5:R5"),0))
PHP:
=OFFSET(INDIRECT(C$6&"!A"&MATCH($B7,INDIRECT(C$6&"!B1:B200"),0)),,MATCH($B$5,INDIRECT(C$6&"!B5:R5"),0))
Cảm ơn các bạn đã giúp mình. thành thật cám ơn
 
...
 
Lần chỉnh sửa cuối:
Bạn tham khảo file này cho nhẹ nhàng nhé. Dùng VBA. Bạn chỉ cần thay đổi giá trị tháng của bạn là được. Nhớ bật Macro nhé (không biết thì tra google giùm à)
Bạn ơi, cho mình hỏi chút, nếu mình thêm một cột vào bảng tổng thì macro phải sửa lại như thế nào, bạn chỉ mình với, bên mình có mấy chi nhánh thêm vào.
 
Mã:
For i = 3 To 16
Thêm chi nhánh thì thay số 16 thành số nào đó. số 16 là số của cột P thôi bạn. Nếu dữ liệu đến cột Q thì nó là 17, tương tự....
 
Web KT
Back
Top Bottom