Tạo trang tính riêng biệt cho từng tên được đề cập trong dữ liệu bằng cách sử dụng VBA trong Microsoft Excel.
Trong bài viết này, chúng tôi sẽ tạo macro để tạo các trang tính riêng biệt cho từng tên được đề cập trong dữ liệu.
Dữ liệu thô bao gồm Tên, sau đó là Chi tiết chiến dịch và Số lượng cuộc gọi được xử lý.
Trong ví dụ này, chúng tôi muốn tạo các trang tính riêng biệt cho từng tên và trang tính sẽ có dữ liệu liên quan đến các chiến dịch và số lượng cuộc gọi được xử lý bởi đại lý.
Giải thích logic
Trong bài viết này, chúng tôi đã tạo macro “AfterNamesCopying”. Nó sẽ tách dữ liệu thành các trang tính khác nhau, dựa trên tên tác nhân. Để tách dữ liệu, chúng tôi kiểm tra “tên” trong dữ liệu và sao chép dữ liệu bên dưới hàng “tên” vào trang tính tương ứng.
Giải thích mã
Left (WksData.Cells (IntRow, 1), 4) = “name”
Đoạn mã trên được sử dụng để kiểm tra xem giá trị trong ô có bắt đầu bằng “tên” hay không.
Right (WksData.Cells (IntRow, 1), Len (WksData.Cells (IntRow, 1)) – 5)
Đoạn mã trên được sử dụng để trích xuất tên tác nhân từ giá trị ô.
Worksheets.Add after: = Worksheets (Worksheets.Count)
Đoạn mã trên được sử dụng để chèn một trang tính mới, sau trang tính cuối cùng.
ActiveSheet.Name = StrSheet Đoạn mã trên được sử dụng để đổi tên trang tính hiện hoạt.
Range (.Cells (IntRowL, 1), .Cells (IntRowL, 3)). Value = _ Range (WksData.Cells (IntRow, 1), WksData.Cells (IntRow, 3)). Giá trị Đoạn mã trên được sử dụng để thêm dữ liệu liên quan đến tác nhân cụ thể đó.
Vui lòng theo dõi bên dưới để biết mã
Option Explicit Sub AfterNamesCopying() 'Declaring variables Dim wks As Worksheet, WksData As Worksheet Dim IntRow As Integer, IntRowL As Integer Dim StrSheet As String 'Disabling screen updates Application.ScreenUpdating = False 'Initializing variables Set WksData = ActiveSheet IntRow = 10 'Loop until cell in first column is empty Do Until IsEmpty(WksData.Cells(IntRow, 1)) 'Checking whether value in the cell begins with string "name" If Left(WksData.Cells(IntRow, 1), 4) = "name" Then 'Extracting name from the cell value StrSheet = Right(WksData.Cells(IntRow, 1), Len(WksData.Cells(IntRow, 1)) - 5) 'Adding new worksheet Worksheets.Add after:=Worksheets(Worksheets.Count) 'Renaming the sheet ActiveSheet.Name = StrSheet IntRowL = 1 Else With Worksheets(StrSheet) 'Inserting data to respective sheets Range(.Cells(IntRowL, 1), .Cells(IntRowL, 3)).Value = _ Range(WksData.Cells(IntRow, 1), WksData.Cells(IntRow, 3)).Value End With IntRowL = IntRowL + 1 End If IntRow = IntRow + 1 Loop 'Enabling screen updates Application.ScreenUpdating = True 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]