Trong bài viết này, chúng tôi sẽ tạo macro để trích xuất dữ liệu từ trang tính dữ liệu thô sang một trang tính mới, dựa trên phạm vi ngày được chỉ định.

Dữ liệu thô bao gồm ba cột. Cột đầu tiên chứa ngày tháng, cột thứ hai chứa tên đại lý và cột thứ ba chứa số lần bán hàng do đại lý thực hiện vào ngày cụ thể đó.

ArrowRawData

Trước khi chạy macro, người dùng cần có hai đầu vào. Người dùng phải xác định ngày bắt đầu và ngày kết thúc. Dựa trên các ngày được chỉ định, macro sẽ trích xuất dữ liệu giữa phạm vi ngày đã xác định sang một trang tính mới.

Sau khi chỉ định ngày bắt đầu và ngày kết thúc, người dùng phải nhấp vào nút “Gửi” để thực thi macro.

ArrowMainSheet

Khi chạy macro, nó sẽ sắp xếp dữ liệu trong trang tính “RawData”, dựa trên cột ngày tháng và trích xuất dữ liệu dựa trên phạm vi ngày được chỉ định vào trang tính mới được chèn.

ArrowAfterRunningMacro

ArrowOutputSheet

Giải thích logic

Macro lấy đầu vào cho ngày bắt đầu và ngày kết thúc từ các ô J8 và J9, tương ứng. Macro này trước tiên sắp xếp dữ liệu trong trang tính “RawData”, dựa trên cột A theo thứ tự tăng dần. Chúng tôi đã sắp xếp dữ liệu theo các giá trị ngày để có thể sao chép dữ liệu trong một phạm vi duy nhất, sau khi áp dụng bộ lọc cho phạm vi đã xác định.

Sau khi sắp xếp dữ liệu, hãy áp dụng bộ lọc lên nó. Bộ lọc được áp dụng dựa trên hai điều kiện, điều kiện đầu tiên là giá trị trong cột A phải lớn hơn hoặc bằng ngày bắt đầu và điều kiện thứ hai là giá trị trong cột A phải nhỏ hơn hoặc bằng ngày kết thúc.

Sau khi áp dụng bộ lọc, trang tính mới sẽ được chèn và dữ liệu đã lọc được sao chép và dán vào đó.

Giải thích mã

Range (“A1”). CurrentRegion.Sort key1: = Range (“A1”), order1: = xlAscending, Header: = xlYes Mã trên được sử dụng để sắp xếp dữ liệu trong phạm vi đã xác định. Key1 chỉ định cột dựa trên dữ liệu nào sẽ được sắp xếp. Thứ tự sắp xếp được cung cấp bởi order1. Chúng tôi đã xác định thứ tự tăng dần. Để xác định thứ tự giảm dần, người ta có thể sử dụng hằng số xlDescending. Tiêu đề được sử dụng để chỉ định xem phạm vi dữ liệu có chứa tiêu đề hay không.

Phạm vi (“A1”). Trường CurrentRegion.AutoFilter: = 1, Criteria1: = “> =” & StartDate, Operator: = xlAnd, Criteria2: = “⇐” & EndDate Đoạn mã trên được sử dụng để áp dụng bộ lọc trên phạm vi dữ liệu . Field1 chỉ định số cột mà bộ lọc sẽ được áp dụng. Criteria1 và Criteria2 xác định các điều kiện dựa trên dữ liệu nào sẽ lọc.

Toán tử chỉ định toán tử, sẽ được sử dụng giữa hai điều kiện.

Worksheets.Add after: = Worksheets (Worksheets.Count)

Mã trên được sử dụng để chèn trang tính mới sau trang tính cuối cùng trong sổ làm việc.

Người ta có thể dễ dàng hiểu các mã, vì tôi đã đặt các nhận xét cùng với các mã trong macro.

Vui lòng theo dõi bên dưới để biết mã

Sub CopyDataBasedOnDate()

'Disabling screen updates

Application.ScreenUpdating = False

'Declaring two variables of Date data type

Dim StartDate, EndDate As Date

'Declaring variable for worksheet object

Dim MainWorksheet As Worksheet

'Initializing the Date variables with starting date from cell J8

'and end date from cell J9 of "Macro" sheet

StartDate = Sheets("Macro").Range("J8").Value

EndDate = Sheets("Macro").Range("J9").Value

'Initializing worksheet object with "RawData" worksheet

Set MainWorksheet = Worksheets("RawData")

'Activating the worksheet object

MainWorksheet.Activate

'Sorting the data by date in column A in ascending order

Range("A1").CurrentRegion.Sort _

key1:=Range("A1"), order1:=xlAscending, _

Header:=xlYes

'Filter the data based on date range between starting date and end date

Range("A1").CurrentRegion.AutoFilter Field:=1, Criteria1:= _

">=" & StartDate, Operator:=xlAnd, Criteria2:="<=" & EndDate

'Copy the filter data

ActiveSheet.AutoFilter.Range.Copy

'Inserting new worksheet after the last worksheet in the workbook

Worksheets.Add after:=Worksheets(Worksheets.Count)

'Pasting the copied data

ActiveSheet.Paste

'Auto adjusting the size of selected columns

Selection.Columns.AutoFit

Range("A1").Select



'Activating the "RawData" sheet

MainWorksheet.Activate

'Removing filter from the worksheet which we applied earlier

Selection.AutoFilter

Sheets("Macro").Activate

End Sub

Nếu bạn thích blog này, hãy chia sẻ nó với bạn bè của bạn trên Facebook và Facebook.

Chúng tôi rất muốn nghe ý kiến ​​từ bạn, hãy cho chúng tôi biết cách chúng tôi có thể cải thiện công việc của mình và làm cho nó tốt hơn cho bạn. Viết thư cho chúng tôi [email protected]