File Excel chạy chậm khi dùng code dò tìm với 2 điều kiện

Liên hệ QC

concangua

Thành viên mới
Tham gia
15/8/07
Bài viết
3
Được thích
1
Mình có sử dụng code dò tìm giá trị với hai điều kiện sưu tầm được trên PC Word nhưng khi đưa vào sử dụng thì mình thấy vào dự liệu rất chậm.

Không biết lý do gì? Bảng tính của mình chỉ có khoảng 1000 dòng và 10 sheet thôi. sao lại chậm nhỉ.

Làm ơn chỉ giúp.
 
Cái này bạn phải đưa code lên mọi người mới tìm ra chỗ chưa hợp lý và sửa cho bạn chứ nói chay thì biết nó như thế nào.
 
Dưới đây là code tôi sưu tầm được. Các bạn xem giúp.

Function FindTwoCondition(Table As Range, Val1 As Variant, Val1Occrnce As Integer, Val2 As Variant, Val2Col As Integer, ResultCol As Integer)
'Table la bang du lieu
'Val1 Dieu kien thu nhat
'Val1Occrnce gia tri thu n cua dieu kien trong cot
'Val2 dieu kien thu hai
'Val2Col cot thu n cua dieu kien thu 2
'ResultCol cot thu n can tim

Dim i As Integer, iCount As Integer
Dim rCol As Range

For i = 1 To Table.Rows.Count
If Table.Cells(i, 1) = Val1 And Table.Cells(i, Val2Col) = Val2 Then
iCount = iCount + 1
End If

If iCount = Val1Occrnce Then
FindTwoCondition = Table.Cells(i, ResultCol)
Exit For
End If
Next i
End Function
 
concangua đã viết:
Dưới đây là code tôi sưu tầm được. Các bạn xem giúp.

Function FindTwoCondition(Table As Range, Val1 As Variant, Val1Occrnce As Integer, Val2 As Variant, Val2Col As Integer, ResultCol As Integer)
'Table la bang du lieu
'Val1 Dieu kien thu nhat
'Val1Occrnce gia tri thu n cua dieu kien trong cot
'Val2 dieu kien thu hai
'Val2Col cot thu n cua dieu kien thu 2
'ResultCol cot thu n can tim

Dim i As Integer, iCount As Integer
Dim rCol As Range

For i = 1 To Table.Rows.Count
If Table.Cells(i, 1) = Val1 And Table.Cells(i, Val2Col) = Val2 Then
iCount = iCount + 1
End If

If iCount = Val1Occrnce Then
FindTwoCondition = Table.Cells(i, ResultCol)
Exit For
End If
Next i
End Function

Đây là hàm tìm phần tử thứ n ở bảng thỏa mãn ở 2 hàng khác nhau.

Đây là vòng lặp bình thường, tuy nhiên mình không biết là nó có nhanh hơn vòng lặp For each không vì for each dùng offset rất nhanh.

Tuy nhiên nếu dùng quá nhiều hàm này thì đúng là chậm thật (hàm nào dùng vòng lặp mà chẳng thế)

Bạn có thể đưa File VD của bạn lên, biết đâu lại có giải pháp khác hay hơn.

Thân!
 
Trời, chỉ có khoảng 1000 dòng và 10 Sheet chậm là đương nhiên. Máy của bác cấu hình như nào vậy?
 
Lần chỉnh sửa cuối:
Web KT
Back
Top Bottom