Tách thông tin thành hàng (Microsoft Excel)
James có một số dữ liệu trong một trang tính được chứa trong một chuỗi các hàng. Một trong các cột trong dữ liệu bao gồm các ô có nhiều dòng trên mỗi ô. (Dữ liệu trong ô được tách thành các dòng bằng cách nhấn Alt + Enter giữa các mục.) James muốn chia dữ liệu này thành nhiều hàng. Ví dụ: nếu có ba dòng dữ liệu trong một ô trong hàng, thì dữ liệu trong ô đó phải được chia thành ba hàng.
Excel cung cấp một cách tiện dụng để chia dữ liệu thành các cột riêng biệt bằng công cụ Văn bản thành Cột. Điều này có thể được sử dụng để chia nhỏ dữ liệu dựa trên sự hiện diện của ký tự ASCII 10, là ký tự Excel sẽ chèn khi bạn nhấn Alt + Enter. Vấn đề là trong khi điều này chia thành công dữ liệu thành các cột riêng biệt, nó không đưa nó vào các hàng riêng biệt, như James đã yêu cầu.
Điều đó có nghĩa là giải pháp cho vấn đề này phải bao gồm việc sử dụng macro. Một cách tiếp cận được hiển thị trong đoạn mã sau. Trong ví dụ này, macro giả định rằng bạn muốn “mở rộng” mọi thứ trong trang tính và dữ liệu trong trang tính bắt đầu ở hàng 1.
Sub CellSplitter() Dim Temp As Variant Dim CText As String Dim J As Integer Dim K As Integer Dim L As Integer Dim iColumn As Integer Dim lNumCols As Long Dim lNumRows As Long iColumn = 4 Set wksSource = ActiveSheet Set wksNew = Worksheets.Add iTargetRow = 0 With wksSource lNumCols = Cells(1,Columns.Count).End(xlToLeft).Column lNumRows = Cells(Rows.Count,1).End(xlUp).Row For J = 1 To lNumRows CText = .Cells(J, iColumn).Value Temp = Split(CText, Chr(10)) For K = 0 To UBound(Temp) iTargetRow = iTargetRow + 1 For L = 1 to lNumCols If L <> iColumn Then wksNew.Cells(iTargetRow, L) _ = .Cells(J, L) Else wksNew.Cells(iTargetRow, L) _ = Temp(K) End If Next L Next K Next J End With End Sub
Lưu ý rằng để chạy macro, bạn sẽ cần chỉ định, bằng cách sử dụng biến iColumn, cột chứa các ô được tách ra.
Như đã viết ở đây, macro chia nhỏ thông tin trong cột thứ tư. Ngoài ra, các phiên bản tách rời của các ô được lưu trữ trong một trang tính mới, do đó, trang tính ban đầu hoàn toàn không bị ảnh hưởng.
_Lưu ý: _
Nếu bạn muốn biết cách sử dụng các macro được mô tả trên trang này (hoặc trên bất kỳ trang nào khác trên trang ExcelTips), tôi đã chuẩn bị một trang đặc biệt bao gồm thông tin hữu ích.
ExcelTips là nguồn của bạn để đào tạo Microsoft Excel hiệu quả về chi phí.
Mẹo này (9396) áp dụng cho Microsoft Excel 2007, 2010, 2013, 2016, 2019 và Excel trong Office 365. Bạn có thể tìm thấy phiên bản của mẹo này cho giao diện menu cũ hơn của Excel tại đây: