Nhờ làm nhẹ file và thay code chạy nhanh hơn (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

babyheomoi

Thành viên thường trực
Tham gia
22/9/13
Bài viết
396
Được thích
91
Chào các a/c!
Hiện e có 1 vấn đề cần nhờ a/c giúp:
E đang làm báo cáo,file khá nặng trên 20mb,với data gần 200.000 dòng.
E có làm code vba hàm vlookup, tuy nhiên vời data như vậy thì máy yếu hay bị treo và mỗi lần chạy code rất lâu.
code của e:
Columns("D:D").Select Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True

Columns("E:E").Select
Selection.NumberFormat = "General"
With Range("E3:E200000")
.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-1],HDVDATA!R[-1]C[1]:R[11997]C[9],2,FALSE),0)"
.Value = .Value
End With

Columns("E:E").ColumnWidth = 15.22

Range("E1").FormulaR1C1 = "=COUNTIF(R[1]C:R[199999]C,""PGD BTX-BDS310"")"
Range("E2").Select

ActiveWorkbook.Save


Do vậy e mong các a/c giúp e:
1. Thay code cho hàm vlookup để code chạy nhanh hơn.
2. Có các cách nào để làm nhẹ file hiện tại.

Thanks mọi ngươi trc

 
Chào các a/c!
Hiện e có 1 vấn đề cần nhờ a/c giúp:
E đang làm báo cáo,file khá nặng trên 20mb,với data gần 200.000 dòng.
E có làm code vba hàm vlookup, tuy nhiên vời data như vậy thì máy yếu hay bị treo và mỗi lần chạy code rất lâu.
code của e:
Columns("D:D").Select Selection.TextToColumns Destination:=Range("D1"), DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(1, 1), TrailingMinusNumbers:=True

Columns("E:E").Select
Selection.NumberFormat = "General"
With Range("E3:E200000")
.FormulaR1C1 = _
"=IFERROR(VLOOKUP(RC[-1],HDVDATA!R[-1]C[1]:R[11997]C[9],2,FALSE),0)"
.Value = .Value
End With

Columns("E:E").ColumnWidth = 15.22

Range("E1").FormulaR1C1 = "=COUNTIF(R[1]C:R[199999]C,""PGD BTX-BDS310"")"
Range("E2").Select

ActiveWorkbook.Save


Do vậy e mong các a/c giúp e:
1. Thay code cho hàm vlookup để code chạy nhanh hơn.
2. Có các cách nào để làm nhẹ file hiện tại.

Thanks mọi ngươi trc


Thì xóa bớt Data, chừa lại khoảng 100 dòng thôi rồi gởi lên đây, mới hiểu được bạn muốn làm gì.
Hoặc tìm chỗ nào đó Up file lên, cho đường link lên đây.
 
Upvote 0
Em gửi file lên mọi người xem giúp em nha!
Thanks

Gởi file mà chẳng nói gì về yêu cầu, lookup cái gì, ở đâu?
- Mò theo code LOOK gì đó của bạn:
PHP:
Public Sub CuChuoi()
Dim Dic As Object, sArr(), dArr(), I As Long, Dem As Long
Set Dic = CreateObject("Scripting.Dictionary")
With Sheets("DATA")
    sArr = .Range("F2", .Range("G2").End(xlDown)).Value2
End With
For I = 1 To UBound(sArr, 1)
    Dic.Item(sArr(I, 1)) = sArr(I, 2)
Next I
With Sheets("DU LIEU")
    sArr = .Range("D3", Range("D3").End(xlDown)).Value2
    ReDim dArr(1 To UBound(sArr, 1), 1 To 1)
    For I = 1 To UBound(sArr, 1)
        If Dic.Exists(sArr(I, 1)) Then
            Dem = Dem + 1
            dArr(I, 1) = Dic.Item(sArr(I, 1))
        End If
    Next I
    .Range("E3").Resize(I - 1) = dArr
    .Range("E1") = Dem
    .Columns("E:E").EntireColumn.AutoFit
End With
Set Dic = Nothing
End Sub
- Làm giảm dung lượng File: Tìm những lời khuyên trên GPE.
 

File đính kèm

Upvote 0
cám ơn bác bate, thật sự cái dic của bác lợi hại wa! Mà do em yếu kiến thức vba quá nên chưa học được cái này! Anh có thể giải thích sơ về các dòng trong code trên không? e cũng hiểu sơ sơ nhưng sợ lại sai khi vận dụng.
 
Upvote 0
Web KT

Bài viết mới nhất

Back
Top Bottom