Dear Admin
mình dùng record macro ghi lại của công thức Sumifs.. nhưng khi chạy thì mình phải bấm 2 lần nó mới chạy ra đúng đc
cho mình hỏi nếu viết code cho lệnh sumifs thì viết như thế nào á..
dưới đây là dòng lệnh mà mình ghi lại được....
Rất mong sự giúp đỡ từ chuyên gia
ActiveCell.FormulaR1C1 = _
"=SUMIFS(Data_NhapXuat!R2C12:R6673C12,Data_NhapXuat!R2C7:R6673C7,DanhMuc!RC[-4],Data_NhapXuat!R2C5:R6673C5,DanhMuc!RC[4],Data_NhapXuat!R2C16:R6673C16,DanhMuc!R1C12)"
Range("F2").Select
ActiveCell.FormulaR1C1 = _
"=SUMIFS(Data_NhapXuat!R2C12:R6673C12,Data_NhapXuat!R2C7:R6673C7,DanhMuc!RC[-5],Data_NhapXuat!R2C5:R6673C5,DanhMuc!RC[3],Data_NhapXuat!R2C16:R6673C16,DanhMuc!R1C13)"
Range("G2").Select
ActiveCell.FormulaR1C1 = "=RC[-3]+RC[-2]-RC[-1]"
Range("E2:G2").Select
Selection.AutoFill Destination:=Range("E2:G2184")
Range("E2:G2184").Select
ActiveWorkbook.Save
Để viết công thức (hàm excel) trong VBA thì bạn nên dùng phương pháp như sau:
Cách 1: Dùng Range(...).Formula thay vì FormulaR1C1. Khi đó công thức nhập như đoạn text, ví dụ như sau:
Range("F2").Formula = "=SUMIFS(Data_NhapXuat!$C$7:$C$600, Data_NhapXuat!$A$7:$A$600, DanhMuc!$B$1, ..."
Cách 2: Sử dụng WorksheetFunction để gọi hàm trong VBA
Range("F2").Value = Application.WorksheetFunction.SUMIFS(Sheets("Data_NhapXuat").Range("C7:C600"), Sheets("Data_NhapXuat").Range("A7:A600"), Sheets("DanhMuc").Range("B1"), ...)
không nên dùng phương pháp record macro để gán công thức vì code đó khó sử dụng.
thanks Chuyên gia