Excel - Cách sử dụng VBA để tự động chọn nội dung trong danh sách thả xuống và lưu dưới dạng tệp khác.

Chào mọi người, tôi cần làm một báo cáo hàng tháng chứa rất nhiều dữ liệu khách hàng.

Vui lòng xem hình bên dưới, đó là cách thông thường sử dụng danh sách thả xuống để hiển thị tất cả khách hàng của tôi.

Và dữ liệu bán hàng đó sẽ tự động tra cứu dựa trên công ty mà tôi đã chọn trong danh sách thả xuống.
Với mỗi công ty, tôi phải tách ra thành một tệp Excel riêng biệt. Tôi phải chọn từng công ty một từ danh sách thả xuống và lưu thành các tệp khác nhau cho đến khi chọn xong công ty cuối cùng.
Việc này thực sự tốn thời gian và ngớ ngẩn. Tôi đã thử cách sử dụng "ghi macro" nhưng dường như nó không thể tự động chọn công ty tiếp theo trong danh sách thả xuống.

Có đoạn mã VBA nào có thể tự động hoàn thành quy trình trên không?

Cảm ơn rất nhiều!




Trả lời:

Tôi đã tạo mã và tải tệp mẫu của bạn lên.

https://1drv.ms/x/s!Akd5y6ruJhvhizYmlOO6hfhtc1fn

Bạn cần thay đổi ToPath thành thư mục của mình trong mã. Bạn có thể mở mã như bên dưới.

Nếu bạn muốn tự làm

1. Hãy sao lưu tập tin bài tập của bạn.
2. Mở sổ làm việc của bạn và nhấn ALT+F11.
3. Tìm tên Sổ làm việc của bạn trong cửa sổ Trình khám phá dự án.
4. Nhấp đúp vào trang Báo cáo hàng tháng.
5. Sao chép và dán mã Macro được cung cấp bên dưới.
6. Lưu tệp của bạn dưới định dạng .xlsm

Private Sub Worksheet_Change(ByVal Target As Range)
Khi xảy ra lỗi, hãy chuyển đến ExitSub.
Nếu Intersect(Target, Me.Range("C3")) Is Nothing Then GoTo ExitSub
Application.EnableEvents = False
Dim ToPath As String
Bảng tính Dim Ws As
Dim TWk As Workbook

Ứng dụng.Màn hình cập nhật = Sai
Application.DisplayAlerts = False

Đường dẫn đến = "C:\Junk\"
Nếu Right(ToPath, 1) <> "\" thì
ToPath = ToPath & "\"
Kết thúc nếu

Đặt Ws = Worksheets("Raw Data")
Đặt TWk = Workbooks.Add

Ws.AutoFilterMode = False

Ws.UsedRange.AutoFilter Field:=2, Criteria1:=Me.Range("C3")
Ws.AutoFilter.Range.Copy
TWk.Worksheets("Sheet1").Range("A1").PasteSpecial (xlPasteAll)
TWk.SaveAs Filename:=ToPath & Me.Range("C3") & "_" & Format(Now, "mmddyyyyhhmmss"), FileFormat:=51
TWk.Close

Ws.AutoFilterMode = False
Application.CutCopyMode = False
Application.DisplayAlerts = True
Ứng dụng.Màn hình cập nhật = Đúng
ExitSub:
Ứng dụng.ChoPhóngSựKiện = Đúng
End Sub

Comments

Popular posts from this blog

Xử lý hàng loạt các tệp Excel được bảo vệ bằng mật khẩu

Thu hẹp và mở rộng cột trong Excel

Excel: Tìm và trả về "số cuối cùng" trong một cột, trong đó cột chứa: cả ô trống và số dương tùy ý (lớn hơn 0).