Macro chuyển đổi và loại bỏ dữ liệu trùng lặp trong Excel
CHÀO
Tôi đã cố gắng tìm hiểu cách thực hiện một tác vụ bằng Macro nhưng không may là nó vượt quá khả năng hiểu biết "Ghi lại, chỉnh sửa và hy vọng mọi thứ ổn" của tôi về VBA.
Tóm lại, tôi có một danh sách trông như thế này:
Và tôi muốn nó trông như thế này:
Có hơn 600 câu lạc bộ khác nhau, đó là lý do tại sao tôi không muốn làm thủ công.
Mọi sự giúp đỡ đều được đánh giá cao và xin cảm ơn trước.
Trả lời:
Đây nè: Sub Transform()
Bảng tính Dim ws As
Bảng tính Dim wt
Dim s As Long
Dim m As Long
Dim t As Long
Dim c As Long
Dim n As Long
Ứng dụng.Màn hình cập nhật = Sai
Đặt ws = ActiveSheet
Đặt wt = Worksheets.Add(After:=ws)
wt.Cells(1, 1).Value = ws.Cells(1, 1).Value
t = 1
m = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Đối với s = 2 đến m
Nếu ws.Cells(s, 1).Value <> ws.Cells(s - 1, 1).Value thì
t = t + 1
wt.Cells(t, 1).Value = ws.Cells(s, 1).Value
c = 1
n = 1
Kết thúc nếu
c = c + 1
wt.Cells(t, c).Value = ws.Cells(s, 2).Value
Nếu c > n thì
n = c
wt.Cells(1, n).Value = "League " & n - 1
Kết thúc nếu
Tiếp theo là
wt.UsedRange.EntireColumn.AutoFit
Ứng dụng.Màn hình cập nhật = Đúng
End Sub
| Tên câu lạc bộ | Tên giải đấu |
| Luân Đôn | Giải đấu London |
| Luân Đôn | Liên đoàn miền Nam |
| Luân Đôn | Liên minh Liên minh |
| Luân Đôn | Giải đấu thành phố |
| Nottingham | Giải đấu vùng Midlands |
| Nottingham | Giải đấu Notts |
| Nottingham | Giải Trent League |
| Newcastle | Giải đấu Tyneside |
| Newcastle | Giải đấu phía Bắc |
| Newcastle | Giải đấu Đông Bắc |
| Newcastle | Giải đấu Northumberland |
| Tên câu lạc bộ | Giải hạng nhất | Giải hạng 2 | Giải hạng 3 | Giải hạng 4 |
| Luân Đôn | Giải đấu London | Liên đoàn miền Nam | Liên minh Liên minh | Giải đấu thành phố |
| Nottingham | Giải đấu vùng Midlands | Giải đấu Notts | Giải Trent League | |
| Newcastle | Giải đấu Tyneside | Giải đấu phía Bắc | Giải đấu Đông Bắc | Giải đấu Northumberland |
Trả lời:
Đây nè: Sub Transform()
Bảng tính Dim ws As
Bảng tính Dim wt
Dim s As Long
Dim m As Long
Dim t As Long
Dim c As Long
Dim n As Long
Ứng dụng.Màn hình cập nhật = Sai
Đặt ws = ActiveSheet
Đặt wt = Worksheets.Add(After:=ws)
wt.Cells(1, 1).Value = ws.Cells(1, 1).Value
t = 1
m = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
Đối với s = 2 đến m
Nếu ws.Cells(s, 1).Value <> ws.Cells(s - 1, 1).Value thì
t = t + 1
wt.Cells(t, 1).Value = ws.Cells(s, 1).Value
c = 1
n = 1
Kết thúc nếu
c = c + 1
wt.Cells(t, c).Value = ws.Cells(s, 2).Value
Nếu c > n thì
n = c
wt.Cells(1, n).Value = "League " & n - 1
Kết thúc nếu
Tiếp theo là
wt.UsedRange.EntireColumn.AutoFit
Ứng dụng.Màn hình cập nhật = Đúng
End Sub
Comments
Post a Comment