Hà Hạnh
Hà Hạnh
Thảo luận 3 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 109 lượt xem

file em viết xong chạy bình thường nhưng sau khi excel thông báo cái gì đó liên

Thầy cho em hỏi. file em viết xong chạy bình thường nhưng sau khi excel thông báo cái gì đó liên quan đến merge, e chưa đọc kĩ nhấn yes thì nó hiện lên cái filling cell này và từ đó file rất chậm. Thầy giúp em xử lý với ạ
Thảo luận 3 câu trả lời
Lượt xem 109 lượt xem
Vỗ tay vỗ tay
Hà Hạnh 00:09 - Sep 21, 2021

Chào bạn bạn đọc bài viết sau nhé

https://gitiho.com/blog/huong-dan-cac...


Vỗ tay vỗ tay
Hà Hạnh 09:09 - Sep 22, 2021

em đã thử hết rồi nhưng nó vẫn bị chậm ạ. Thầy có thể xem giúp em xem đoạn code của em có bị lỗi chỗ nào ko ạ:

Application.ScreenUpdating = False

    Application.Calculation = xlCalculationManual

    Application.EnableEvents = False

    With Sheet1

        .Range("A5").CurrentRegion.Delete

        .Range("A5").Interior.ColorIndex = 3

        .Range("A5").Value = "HO TEN"

        .Range("B5").Value = "STK"

        .Range("C5").Value = "ST"

        .Range("D5").Value = "NH"

        .Range("E5").Value = "ND"

        End With

    For i = 4 To Sheets.Count

        Sheets(i).Range("A1").AutoFilter

        Sheets(i).Range("A1:AZ50000").Value = Sheets(i).Range("A1:AZ50000").Value

        For lp = 256 To 1 Step -1

        If Sheets(i).Columns(lp).EntireColumn.Hidden = True Then

            Sheets(i).Columns(lp).EntireColumn.Delete

                End If

            Next lp

    Dim rg As Range

    Dim criterial_rg As Range

    Dim copy_rg As Range

    lri = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row

    Set rg = Sheets(i).Range("A1").CurrentRegion

    Set criterial_rg = Sheet1.Range("A1:E2")

    Set copy_rg = Sheet1.Range("A" & lri & ":E" & lri)

    rg.AdvancedFilter xlFilterCopy, criterial_rg, copy_rg

    lru = Sheet1.Cells(Rows.Count, 1).End(xlUp).Row + 1

    With Sheet1

        .Range("A" & lru).Value = "HO TEN"

        .Range("B" & lru).Value = "STK"

        .Range("C" & lru).Value = "ST"

        .Range("D" & lru).Value = "NH"

        .Range("E" & lru).Value = "ND"

        End With

    Next i

    Application.ScreenUpdating = True

    Application.Calculation = xlCalculationAutomatic

    Application.EnableEvents = True

End Sub



Vỗ tay vỗ tay
Hà Hạnh 09:09 - Sep 22, 2021

code chạy chậm do logic (quy trình thực hiện) của code phức tạp.

Bạn thực hiện vòng lặp qua các sheet, trong mỗi sheet lại làm nhiều thao tác vòng lặp nhỏ hơn liên quan tới lọc, xóa cột ẩn... => những điều này làm excel chạy chậm.

Bạn có thể nghĩ quy trình đơn giản hơn để làm việc này nhé. Đây là vấn đề liên quan tới tư duy lập trình nên bạn cần suy nghĩ để tự thay đổi thôi.

Vỗ tay vỗ tay
Câu hỏi liên quan
© 2020 - Bản quyền của Công Ty Cổ Phần Công Nghệ Giáo Dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở Kế hoạch và Đầu tư TP. Hà Nội
Giấy phép mạng xã hội số: 588, cấp bởi Bộ Thông tin và Truyền thông