Chia cột dữ liệu thành nhiều trang ( sheet )

Giả sử bạn có một bảng dữ liệu thống kê , như hình dưới , với nhiều danh mục khác nhau

 


\"hinh1\"


Bạn muốn chia thành những Sheet lấy dữ liệu lọc được dựa trên cột Ten hang với những cột tương ứng ( So lưong , Giai thích ) .

Ví dụ Sheet AA có chứa những dữ liệu lọc được như hình dưới

 

\"hinh2\"

 

Tương như vậy với những Sheet khác

 

\"hinh3\"

\"hinh4\"

 

Để làm được như vậy bạn cần tạo macro , cách thức như sau .

Mở file Excel muốn phân chia thành các Sheet .

Bấm tổ hợp Alt-F11 để mở Microsoft Visual Basic .

Bấm menu Insert > Module , bạn sao chép nội dung bên dưới

 

Sub Splitdatatosheets()

Dim rng As Range

Dim rng1 As Range

Dim vrb As Boolean

Dim sht As Worksheet

Set rng = Sheets(\"Sheet1\").Range(\"A3\")

Set rng1 = Sheets(\"Sheet1\").Range(\"A3:C3\")

vrb = False

Do While rng <> \"\"

   For Each sht In Worksheets

       If sht.Name = Left(rng.Value, 31) Then

           sht.Select

           Range(\"A2\").Select

           Do While Selection <> \"\"

               ActiveCell.Offset(1, 0).Activate

           Loop

           rng1.Copy ActiveCell

           ActiveCell.Offset(1, 0).Activate

           Set rng1 = rng1.Offset(1, 0)

           Set rng = rng.Offset(1, 0)

           vrb = True

       End If

   Next sht

   If vrb = False Then

   Sheets.Add After:=Sheets(Sheets.Count)

   ActiveSheet.Name = Left(rng.Value, 31)

   Sheets(\"Sheet1\").Range(\"A1:C1\").Copy ActiveSheet.Range(\"A1\")

   Range(\"A2\").Select

   Do While Selection <> \"\"

       ActiveCell.Offset(1, 0).Activate

   Loop

   rng1.Copy ActiveCell

   Set rng1 = rng1.Offset(1, 0)

   Set rng = rng.Offset(1, 0)

   End If

vrb = False

Loop

End Sub

 

Sheet1 là tên Sheet có chứa dữ liệu .

A3:C3 : Dãy dữ liệu bắt đầu

A1:C1 : Tiêu đề ở Sheet 1 sẽ có trong các Sheet

Bạn thoát khỏi Microsoft Visual Basic để quay trở lại Excel , rồi chạy macro có tên là Splitdatatosheets