Chào Anh/Chị và các bạn,
Em đang gặp vấn đề khi xử lý 20.000 Data.
Cụ thể: Em cần tìm giá trị theo 2 điều kiện
- Cách cũ: Em đã dùng
1. AGGREGATE(14,6,(<Condition 1>)*(<Condition 2>)*(<Kết quả>),1)
=> Máy chạy không nổi
2. {VLOOKUP(<Criteria 1> & <Criteria 2> ,CHOOSE({1,2},<Criteria_range 1>&<Criteria_range 2>, <Kết quả>),2,0)}
=> 5p cho 1.000 Data
3. INDEX kết hợp MATCH
INDEX(<Kết quả> , MATCH( 1 , INDEX((<Condition 1>)*(<Condition 2>),0),0)
=> 3p cho 1.000 Data
INDEX(<Kết quả> , MATCH( 1 , (<Condition 1>)*(<Condition 2>),0))
=> 2p cho 1.000 Data
=> 43p cho 20.000 Data
Vấn đề: File khá nặng và mỗi lần mở / Hide / Filter thì nó chạy tính toán mất thời gian.
- Cách mới của cũ: Em dùng VBA để Paste Value cho nhẹ.
=> 1h12p Cho 20.000 Data
Vấn đề: Data em nối bằng Query để khi cập nhật thì nó có dữ liệu cho Sheet thống kê.
Đoạn code và file đính kèm như sau:
Dim i As Integer
Dim j As Integer
i = 2
j = 2
'Check ID
Do While Sheets("STATISTIC").Cells(i, j).Value <> ""
'Chen Cong thuc vao O C2
Sheets("STATISTIC").Cells(i, j + 1).FormulaArray = _
"=IFNA(INDEX(Revenue[Revenue],MATCH(1,(Revenue[ID]=RC2)*(Revenue[CK]=R1C),0)),""-"")"
'Copy C2
Cells(i, j + 1).Copy
'Paste
Range("D" & i & ":" & "W" & i).Select
'Range("W" & i).Activate
ActiveSheet.Paste
'Paste Value
Range("C" & i & ":" & "W" & i) = Range("C" & i & ":" & "W" & i).Value
i = i + 1
Loop
Application.CutCopyMode = False
Cells(1, 1).Select
MsgBox "Done"
End Sub
[File đính kèm là Excel 3 sheet: Statistic (Chứa Form) , Data (Tham chiếu), 20000Data]
Mong mọi người chỉ điểm, Thanks All !!!!!
Em đang gặp vấn đề khi xử lý 20.000 Data.
Cụ thể: Em cần tìm giá trị theo 2 điều kiện
- Cách cũ: Em đã dùng
1. AGGREGATE(14,6,(<Condition 1>)*(<Condition 2>)*(<Kết quả>),1)
=> Máy chạy không nổi
2. {VLOOKUP(<Criteria 1> & <Criteria 2> ,CHOOSE({1,2},<Criteria_range 1>&<Criteria_range 2>, <Kết quả>),2,0)}
=> 5p cho 1.000 Data
3. INDEX kết hợp MATCH
INDEX(<Kết quả> , MATCH( 1 , INDEX((<Condition 1>)*(<Condition 2>),0),0)
=> 3p cho 1.000 Data
INDEX(<Kết quả> , MATCH( 1 , (<Condition 1>)*(<Condition 2>),0))
=> 2p cho 1.000 Data
=> 43p cho 20.000 Data
Vấn đề: File khá nặng và mỗi lần mở / Hide / Filter thì nó chạy tính toán mất thời gian.
- Cách mới của cũ: Em dùng VBA để Paste Value cho nhẹ.
=> 1h12p Cho 20.000 Data
Vấn đề: Data em nối bằng Query để khi cập nhật thì nó có dữ liệu cho Sheet thống kê.
Đoạn code và file đính kèm như sau:
Dim i As Integer
Dim j As Integer
i = 2
j = 2
'Check ID
Do While Sheets("STATISTIC").Cells(i, j).Value <> ""
'Chen Cong thuc vao O C2
Sheets("STATISTIC").Cells(i, j + 1).FormulaArray = _
"=IFNA(INDEX(Revenue[Revenue],MATCH(1,(Revenue[ID]=RC2)*(Revenue[CK]=R1C),0)),""-"")"
'Copy C2
Cells(i, j + 1).Copy
'Paste
Range("D" & i & ":" & "W" & i).Select
'Range("W" & i).Activate
ActiveSheet.Paste
'Paste Value
Range("C" & i & ":" & "W" & i) = Range("C" & i & ":" & "W" & i).Value
i = i + 1
Loop
Application.CutCopyMode = False
Cells(1, 1).Select
MsgBox "Done"
End Sub
[File đính kèm là Excel 3 sheet: Statistic (Chứa Form) , Data (Tham chiếu), 20000Data]
Mong mọi người chỉ điểm, Thanks All !!!!!
File đính kèm
Lần chỉnh sửa cuối: