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ý.

ArrowRawData

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ý.

ArrowOutput

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]