Skip to content

Edupedia

  • Home
  • Excel Tips
  • VBA Tips

Edupedia

  • Home » 
  • Excel Tips » 
  • Cách Chuyển Đổi Nhiều Hàng Thành Một Cột Trong Excel: 4 Phương Pháp Hiệu Quả

Cách Chuyển Đổi Nhiều Hàng Thành Một Cột Trong Excel: 4 Phương Pháp Hiệu Quả

By Edupedia Tháng 2 2, 2026 0
Ví dụ về chuyển đổi nhiều hàng thành một cột trong Excel 365
Table of Contents

Thời gian đọc ước tính: 12 phút

Những điểm chính:

  • Hàm TOCOL (Excel 365): Giải pháp nhanh nhất để gộp mảng dữ liệu thành một cột duy nhất.
  • Công thức mảng kết hợp (INDEX): Giải pháp tối ưu cho các phiên bản Excel cũ (2019 trở về trước).
  • Power Query (Unpivot): Công cụ mạnh mẽ để xử lý dữ liệu lớn và tự động hóa quy trình làm sạch dữ liệu.
  • VBA Macro: Tự động hóa thao tác lặp lại với mã lệnh tùy chỉnh.

Việc xử lý dữ liệu phân tán trên nhiều hàng để đưa về một cột duy nhất là một yêu cầu thường gặp trong phân tích tài chính và quản lý cơ sở dữ liệu. Dữ liệu đầu vào thường ở dạng bảng ngang (cross-tab), trong khi các công cụ phân tích như Pivot Table lại yêu cầu dữ liệu dạng cột dọc (flat data).

Bài viết này sẽ hướng dẫn bạn bốn phương pháp chính xác để thực hiện việc này, từ các hàm hiện đại trong Excel 365 đến các kỹ thuật xử lý dữ liệu nâng cao bằng Power Query và VBA.

Sử Dụng Hàm TOCOL (Dành Cho Excel 365)

Hàm TOCOL là một sự bổ sung mang tính cách mạng trong Excel 365. Hàm này được thiết kế chuyên biệt để chuyển đổi một mảng (array) thành một cột duy nhất. Đây là phương pháp tối ưu nhất về hiệu suất và tính đơn giản.

Cú pháp cơ bản và ứng dụng

Giả sử bạn có một tập dữ liệu gồm các tên nằm rải rác trên nhiều hàng (từ A1 đến C4) và bạn muốn gộp tất cả chúng lại thành một danh sách dọc.

Công thức cơ bản nhất là:

=TOCOL(A1:C4)

Công thức này sẽ quét dữ liệu theo từng hàng (hết hàng 1, xuống hàng 2) và xếp chồng chúng thành một cột.

Ví dụ về chuyển đổi nhiều hàng thành một cột trong Excel 365Ví dụ về chuyển đổi nhiều hàng thành một cột trong Excel 365

Tùy chọn nâng cao với các tham số

Sức mạnh thực sự của TOCOL nằm ở khả năng kiểm soát dữ liệu đầu ra thông qua các tham số tùy chọn.

  1. Quét theo cột (Scan by Column):
    Mặc định, hàm quét theo hàng. Nếu bạn muốn lấy dữ liệu theo cột (hết cột A, sang cột B), hãy đặt tham số thứ ba là TRUE.

    =TOCOL(A1:C4,,TRUE)

    Công thức TOCOL để lấy dữ liệu từ các hàng vào một cộtCông thức TOCOL để lấy dữ liệu từ các hàng vào một cột

  2. Xử lý lỗi và ô trống (Scan Mode):
    Trong thực tế, dữ liệu nguồn thường không hoàn hảo. Chúng có thể chứa các ô trống hoặc giá trị lỗi (#N/A, #VALUE!). Tham số thứ hai của hàm TOCOL cho phép bạn loại bỏ những giá trị này ngay lập tức.

    Các giá trị cho tham số thứ hai:

    • 0 (Mặc định): Giữ lại tất cả (kể cả ô trống và lỗi).
    • 1: Bỏ qua các ô trống.
    • 2: Bỏ qua các ô bị lỗi.
    • 3: Bỏ qua cả ô trống và ô lỗi.

    Ví dụ, để tạo một cột sạch dữ liệu, không chứa lỗi hay khoảng trắng:

    =TOCOL(A1:C4, 3)

    Việc sử dụng thành thạo TOCOL giúp giảm thiểu đáng kể thời gian làm sạch dữ liệu thủ công, đảm bảo tính toàn vẹn của dữ liệu đầu ra cho các bước phân tích tiếp theo.

Sử Dụng Hàm INDEX Kết Hợp INT, COLUMNS Và MOD (Excel Cũ)

Nếu bạn đang làm việc trên các phiên bản Excel cũ hơn (2010, 2013, 2016, 2019) và không có quyền truy cập vào các hàm mảng động, bạn cần sử dụng một tư duy toán học hơn. Phương pháp này dựa trên việc tính toán tọa độ (hàng, cột) của từng ô dữ liệu để trích xuất chúng theo thứ tự mong muốn.

Nguyên lý hoạt động của công thức

Chúng ta sẽ sử dụng hàm INDEX làm nòng cốt. Hàm này trả về giá trị của một ô trong mảng dựa trên số thứ tự hàng và cột. Thách thức ở đây là tạo ra một chuỗi số tự động tăng để INDEX lần lượt lấy hết dữ liệu từ hàng 1 đến hàng cuối cùng.

Giả sử dữ liệu nằm trong vùng $A$1:$C$4. Công thức cần nhập vào ô đầu tiên của cột kết quả là:

=INDEX($A$1:$C$4,1+INT((ROW(A1)-1)/COLUMNS($A$1:$C$4)),MOD(ROW(A1)-1+COLUMNS($A$1:$C$4),COLUMNS($A$1:$C$4))+1)

Tập dữ liệu ví dụ để chuyển đổi nhiều hàng thành một cộtTập dữ liệu ví dụ để chuyển đổi nhiều hàng thành một cột

Phân tích chi tiết công thức

Để hiểu và tùy biến công thức này, bạn cần nắm rõ vai trò của từng thành phần:

  1. Xác định hàng (Row Calculation): 1+INT((ROW(A1)-1)/COLUMNS($A$1:$C$4))

    • Đoạn này tính toán xem giá trị cần lấy đang nằm ở hàng thứ mấy trong vùng dữ liệu gốc.
    • Hàm INT giúp giữ nguyên số hàng cho đến khi quét hết các cột trong hàng đó.
  2. Xác định cột (Column Calculation): MOD(ROW(A1)-1+COLUMNS($A$1:$C$4),COLUMNS($A$1:$C$4))+1

    • Hàm MOD (chia lấy dư) tạo ra một vòng lặp từ 1 đến n (với n là tổng số cột). Điều này giúp công thức tự động chuyển từ cột A sang B, sang C, rồi quay lại A ở hàng tiếp theo.

Công thức Index để chuyển đổi dữ liệu và gộp vào một cộtCông thức Index để chuyển đổi dữ liệu và gộp vào một cột

Sau khi nhập công thức, bạn cần sao chép (kéo) công thức xuống các ô bên dưới cho đến khi xuất hiện lỗi #REF!, báo hiệu đã hết dữ liệu.

Lưu ý: Phương pháp này không tự động loại bỏ ô trống. Nếu dữ liệu nguồn có ô trống, kết quả sẽ trả về số 0. Bạn có thể lồng thêm hàm IF hoặc định dạng ô để ẩn số 0 nếu cần thiết.

Sử Dụng Power Query (Tính Năng Unpivot)

Power Query là công cụ ETL (Extract, Transform, Load) mạnh mẽ được tích hợp sẵn trong Excel (từ 2016 trở đi) hoặc cài thêm (2010/2013). Đây là phương pháp lý tưởng khi bạn làm việc với tập dữ liệu lớn hoặc cần quy trình này lặp lại định kỳ mà không muốn viết công thức phức tạp.

Tính năng “Unpivot” trong Power Query chính xác là công cụ sinh ra để giải quyết bài toán chuyển đổi bảng ngang thành bảng dọc.

Quy trình thực hiện từng bước

Bước 1: Nạp dữ liệu vào Power Query

  1. Bôi đen vùng dữ liệu cần chuyển đổi.
  2. Chuyển đến thẻ Data (Dữ liệu) trên thanh công cụ.

Nhấp vào thẻ Data trên thanh công cụ ExcelNhấp vào thẻ Data trên thanh công cụ Excel

  1. Trong nhóm Get & Transform Data, chọn From Table/Range.

Chọn biểu tượng From Table or RangeChọn biểu tượng From Table or Range

  1. Nếu Excel hỏi xác nhận vùng dữ liệu, nhấn OK.

Hộp thoại tạo bảngHộp thoại tạo bảng

Bước 2: Chuyển đổi dữ liệu (Unpivot)

  1. Cửa sổ Power Query Editor sẽ mở ra. Chọn tất cả các cột đang chứa dữ liệu (giữ phím Shift và click chuột vào tiêu đề các cột).
  2. Chuyển sang thẻ Transform.

Nhấp vào thẻ Transform trong Power Query EditorNhấp vào thẻ Transform trong Power Query Editor

  1. Nhấn vào nút Unpivot Columns.

Nhấp vào tùy chọn Unpivot ColumnsNhấp vào tùy chọn Unpivot Columns

Ngay lập tức, Power Query sẽ biến đổi bảng của bạn thành 2 cột: Attribute (Tên cột cũ) và Value (Giá trị dữ liệu).

Bước 3: Làm sạch và xuất dữ liệu

  1. Cột Attribute thường không cần thiết trong trường hợp này. Nhấp chuột phải vào tiêu đề cột Attribute và chọn Remove.
  2. Đổi tên cột Value thành tên bạn muốn (ví dụ: “Danh Sách Tên”) bằng cách nhấp đúp vào tiêu đề.

Đổi tên cột thành NamesĐổi tên cột thành Names

  1. Quay lại thẻ Home, chọn Close & Load -> Close & Load To….

Nhấp vào Close and Load ToNhấp vào Close and Load To

  1. Trong hộp thoại Import, chọn Existing Worksheet và chỉ định ô bạn muốn đặt kết quả (ví dụ: E1).

Chọn một ô trong bảng tính hiện tại để xuất kết quảChọn một ô trong bảng tính hiện tại để xuất kết quả

Kết quả trả về là một bảng dữ liệu sạch, gọn gàng và quan trọng nhất là có tính liên kết. Nếu dữ liệu gốc thay đổi, bạn chỉ cần nhấp chuột phải vào bảng kết quả và chọn Refresh.

Kết quả sau khi chuyển đổi nhiều hàng thành một cột bằng Power QueryKết quả sau khi chuyển đổi nhiều hàng thành một cột bằng Power Query

Sử Dụng Mã VBA (Macro Tự Động Hóa)

Đối với những người dùng cần thực hiện tác vụ này thường xuyên trên nhiều file khác nhau, VBA (Visual Basic for Applications) cung cấp một giải pháp “một cú nhấp chuột”. Bạn có thể tạo một nút bấm để tự động gộp dữ liệu mà không cần nhớ công thức hay thao tác qua nhiều bước Power Query.

Đoạn mã VBA

Dưới đây là đoạn mã VBA được tối ưu hóa để yêu cầu người dùng chọn vùng dữ liệu đầu vào và ô xuất kết quả:

Sub CombineMultipleRowsToColumn()
    Dim inputRange As Range
    Dim outputCell As Range
    Dim result() As Variant
    Dim cell As Range
    Dim i As Long

    ' Yêu cầu người dùng chọn vùng dữ liệu nguồn
    On Error Resume Next
    Set inputRange = Application.InputBox("Vui lòng quét chọn vùng dữ liệu nhiều hàng:", "Chọn vùng dữ liệu", Type:=8)
    On Error GoTo 0

    ' Kiểm tra nếu người dùng hủy thao tác
    If inputRange Is Nothing Then
        MsgBox "Đã hủy thao tác.", vbInformation
        Exit Sub
    End If

    ' Định kích thước mảng kết quả
    ReDim result(1 To inputRange.Cells.Count)

    ' Vòng lặp quét từng ô trong vùng chọn
    i = 1
    For Each cell In inputRange.Cells
        If cell.Value <> "" Then
            result(i) = cell.Value
            i = i + 1
        End If
    Next cell

    ' Loại bỏ các phần tử trống thừa trong mảng
    If i > 1 Then
        ReDim Preserve result(1 To i - 1)
    Else
        MsgBox "Không tìm thấy dữ liệu.", vbExclamation
        Exit Sub
    End If

    ' Yêu cầu người dùng chọn ô xuất kết quả
    On Error Resume Next
    Set outputCell = Application.InputBox("Vui lòng chọn ô bắt đầu để xuất kết quả:", "Chọn ô đích", Type:=8)
    On Error GoTo 0

    If outputCell Is Nothing Then
        MsgBox "Đã hủy thao tác.", vbInformation
        Exit Sub
    End If

    ' Xuất kết quả ra Excel (sử dụng Transpose để chuyển mảng ngang thành dọc)
    outputCell.Resize(UBound(result), 1).Value = Application.WorksheetFunction.Transpose(result)

    MsgBox "Dữ liệu đã được gộp và chuyển đổi thành công!", vbInformation
End Sub

Cách cài đặt và sử dụng Macro

  1. Nhấn tổ hợp phím Alt + F11 để mở cửa sổ VBA Editor.
  2. Vào menu Insert > Module.
  3. Sao chép và dán toàn bộ đoạn mã trên vào cửa sổ Module.
  4. Quay lại Excel, nhấn Alt + F8, chọn macro CombineMultipleRowsToColumn và nhấn Run.

Macro sẽ hiển thị hộp thoại để bạn chọn vùng dữ liệu nguồn và nơi đặt kết quả.

Thông báo sau khi VBA hoàn tất việc chuyển đổiThông báo sau khi VBA hoàn tất việc chuyển đổi

Lưu ý quan trọng: Để lưu file có chứa mã VBA, bạn phải lưu dưới định dạng Excel Macro-Enabled Workbook (.xlsm).

Câu Hỏi Thường Gặp (FAQ)

1. Hàm TOCOL có tự động cập nhật khi dữ liệu nguồn thay đổi không?
Có. TOCOL là một hàm động (dynamic array function). Bất kỳ thay đổi nào trong vùng dữ liệu nguồn (thêm, sửa, xóa) sẽ ngay lập tức được phản ánh sang cột kết quả mà không cần thao tác gì thêm.

2. Phương pháp nào tốt nhất nếu dữ liệu của tôi lên tới hàng chục nghìn dòng?
Power Query là lựa chọn tối ưu nhất cho dữ liệu lớn. Các công thức mảng (Array formulas) có thể làm chậm file Excel nếu dữ liệu quá nhiều, trong khi Power Query xử lý dữ liệu trong bộ nhớ riêng và chỉ trả về kết quả cuối cùng, giúp file nhẹ và mượt mà hơn.

3. Tại sao công thức INDEX trả về số 0?
Khi công thức tham chiếu đến một ô trống, Excel mặc định trả về giá trị 0. Để khắc phục, bạn có thể lồng thêm hàm IF: =IF(INDEX(...)="","",INDEX(...)) hoặc sử dụng định dạng Number Format 0;-0;;@ để ẩn số 0.

4. Tôi có thể giữ lại định dạng màu sắc (Format) khi chuyển đổi không?
Không có phương pháp nào trong số trên (Hàm, Power Query) giữ lại định dạng màu nền hay font chữ của ô gốc. VBA có thể làm được điều này nhưng mã lệnh sẽ phức tạp hơn rất nhiều. Các phương pháp trên tập trung vào việc chuyển đổi giá trị dữ liệu.

Nguồn Tham Khảo

  • Microsoft Support: Hàm TOCOL
  • Microsoft Support: Giới thiệu về Power Query
  • Microsoft Developer: Tài liệu tham khảo VBA Excel
  • Trợ giúp và Học tập về Excel
Share
facebookShare on FacebooktwitterShare on TwitterpinterestShare on Pinterest
linkedinShare on LinkedinvkShare on VkredditShare on ReddittumblrShare on TumblrviadeoShare on ViadeobufferShare on BufferpocketShare on PocketwhatsappShare on WhatsappviberShare on ViberemailShare on EmailskypeShare on SkypediggShare on DiggmyspaceShare on MyspacebloggerShare on Blogger YahooMailShare on Yahoo mailtelegramShare on TelegramMessengerShare on Facebook Messenger gmailShare on GmailamazonShare on AmazonSMSShare on SMS
Post navigation
Previous post

Hướng Dẫn Tạo Mã Vạch (Barcode) Trong Excel: 2 Phương Pháp Chuẩn Xác Nhất

Next post

Chuyển Đổi Tên Tháng Thành Số Trong Excel: 4 Cách Xử Lý Dữ Liệu Nhanh Chóng

Edupedia

Edupedia

Related Posts

Categories Excel Tips Cách Chuyển Đổi Nhiều Hàng Thành Một Cột Trong Excel: 4 Phương Pháp Hiệu Quả

Active Cell Trong Excel VBA: Hướng Dẫn Chi Tiết Cách Sử Dụng Và Tối Ưu Hóa

Categories Excel Tips Cách Chuyển Đổi Nhiều Hàng Thành Một Cột Trong Excel: 4 Phương Pháp Hiệu Quả

Hướng Dẫn Mở Khóa Sheet Excel Khi Quên Mật Khẩu: Thủ Thuật “Insider” Không Cần Phần Mềm

Categories Excel Tips Cách Chuyển Đổi Nhiều Hàng Thành Một Cột Trong Excel: 4 Phương Pháp Hiệu Quả

Hướng Dẫn Toàn Diện Về Sắp Xếp Dữ Liệu Trong Pivot Table Excel

Leave a Comment Hủy

Edupedia

Edupedia

Ô tính đang hoạt động có màu sáng hơn các ô còn lại trong vùng chọn

Active Cell Trong Excel VBA: Hướng Dẫn Chi Tiết Cách Sử Dụng Và Tối Ưu Hóa

Tháng 2 3, 2026
Tạo bản sao của tệp Excel bạn muốn mở khóa để đảm bảo an toàn dữ liệu

Hướng Dẫn Mở Khóa Sheet Excel Khi Quên Mật Khẩu: Thủ Thuật “Insider” Không Cần Phần Mềm

Tháng 2 3, 2026
Bảng dữ liệu Pivot Table mẫu hiển thị tên nhân viên và danh mục sản phẩm

Hướng Dẫn Toàn Diện Về Sắp Xếp Dữ Liệu Trong Pivot Table Excel

Tháng 2 3, 2026
Văn bản được viết theo chiều dọc trong Excel

3 Cách Viết Chữ Dọc Trong Excel Đơn Giản Và Hiệu Quả Nhất

Tháng 2 3, 2026
Các giá trị đầu vào cho mẫu lịch trình trả nợ vay

Hướng Dẫn Tạo Lịch Trả Nợ Vay Trong Excel: Tự Động Tính Lãi Và Gốc (Kèm File Mẫu)

Tháng 2 3, 2026
Copyright © 2026 Edupedia
Offcanvas
Offcanvas

  • Lost your password ?