Excel - Một macro để sắp xếp nhiều trang tính

Vấn đề

Tôi có 11 tờ trong excel. 10 tờ cần phải kéo thông tin từ sheet1.

Điều này là cho các đầu bếp tại một dịch vụ ăn uống.

Tôi có một từ khóa trong cột A để phân biệt từng dòng thông tin.

Thứ tôi cần là ...

  • Trang tính 2 & 3 để kéo dòng hoàn chỉnh từ trang tính 1 nếu từ trong cột A là "Nóng".
  • Trang 4 & 5 để kéo dòng hoàn chỉnh từ trang 1 nếu từ trong cột A là "Lạnh".
  • Bảng 6 để kéo dòng hoàn chỉnh từ trang 1 nếu từ trong cột A là "Hàng loạt".
  • Trang 8 & 9 để kéo dòng hoàn chỉnh từ trang 1 nếu từ trong cột A là "Pastry".
  • Bảng 10 để kéo dòng hoàn chỉnh từ trang 1 nếu từ trong cột A là "Pres".

Các tờ khác đã được bảo hiểm.

Tôi đã tạo một macro để sắp xếp các trang tính dựa trên ba cột. Sẽ thật tuyệt nếu macro này tự động chạy mọi lúc thông tin được thêm vào trang tính. Không đến một dòng nhất định mà đến bất kỳ khu vực nào của tờ để giữ thông tin theo thứ tự.

Dung dịch

Hãy thử macro này:

 Tùy chọn Giải thích riêng Sub Worksheet_Change (ByVal Target As Range) Dim nxtRow As Integer 'Xác định nếu thay đổi là Cột H (8) If Target.Column = 8 Sau đó' If Yes, Xác định if cell = Hot If Target.Value = "H" Sau đó 'Nếu Có, tìm hàng trống tiếp theo trong Bảng 2 nxtRow = Sheets (2) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1' Sao chép hàng đã thay đổi và dán vào Bảng 2 Target.EntireRow .Copy _ Destination: = Sheets (2) .Range ("A" & nxtRow) 'Nếu Có, tìm hàng trống tiếp theo trong Bảng 3 nxtRow = Sheets (3) .Range ("G" & Rows.Count) .End ( xlUp) .Row + 1 'Sao chép hàng đã thay đổi và dán vào Bảng 3 Target.EntireRow.Copy _ Destination: = Sheets (3) .Range ("A" & nxtRow) End If End If' Xác định nếu thay đổi là Cột H ( 8) If Target.Column = 8 Then 'If Yes, Xác định if cell = Cold If Target.Value = "C" Then' If Yes, tìm hàng trống tiếp theo trong Bảng 4 nxtRow = Sheets (4) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Sao chép hàng đã thay đổi và dán vào Bảng 4 Target.EntireRow.Copy _ Destination: = Sheets (4) .Range ("A" & nxtRow)' Nếu Có, tìm hàng trống tiếp theo trong Bảng 5 nxtRow = Sheets (5) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1 'Sao chép hàng đã thay đổi và dán vào Bảng 3 Target.EntireRow.Copy _ Destination: = Trang tính (5). Thay đổi ("A" & nxtRow) Kết thúc Nếu kết thúc Nếu 'Xác định nếu thay đổi là Cột H (8) Nếu Target.Column = 8 Sau đó' Nếu Có, Xác định nếu ô = Trình bày Nếu Target.Value = " P "Then 'If Yes, tìm hàng trống tiếp theo trong Bảng 8 nxtRow = Sheets (8) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1' Sao chép hàng đã thay đổi và dán vào Mục tiêu 8 .EntireRow.Copy _ Destination: = Sheets (8) .Range ("A" & nxtRow) End If End If 'Xác định nếu thay đổi là Cột H (8) If Target.Column = 8 Sau đó' Nếu có, Xác định nếu ô = Pastry If Target.Value = "PY" Then 'If Yes, tìm hàng trống tiếp theo trong Trang 10 nxtRow = Sheets (10) .Range ("G" & Rows.Count) .End (xlUp) .Row + 1' Sao chép đã thay đổi hàng và dán vào Bảng 10 Target.EntireRow.Copy _ Destination: = Sheets (10) .Range ("A" & nxtRow) 'Nếu Có, hãy tìm hàng trống tiếp theo trong Bảng 12 nxtRow = Sheets (11) .Range (" G "& Rows.Count) .End (xlUp) .Row + 1 'Sao chép hàng đã thay đổi và dán vào Bảng 12 Target.EntireRow.Copy _ Destination: = Sheets (11) .Range ("A" & nxtRow) End If End If' Xác định nếu thay đổi là Cột H (8) If Target.Column = 8 Then 'If Yes, Xác định if cell = Bulk If Target.Value = "B" Then' If Yes, tìm hàng trống tiếp theo trong Bảng 6 nxtRow = Sheets (6) .Range ("G "& Rows.Count) .End (xlUp) .Row + 1 'Sao chép hàng đã thay đổi và dán vào Mục tiêu 6.EntireRow.Copy _ Destination: = Sheets (6). Kết thúc phụ 

Cảm ơn Jlee1978 cho mẹo này.

Bài TrướC TiếP Theo Bài ViếT

Lên Trên LờI Khuyên