Mục lục
Một cách dễ dàng để chuyển đổi một mảng hoặc dải ô thành một cột bằng hàm TOCOL.
Khả năng chuyển đổi dữ liệu từ cột sang hàng và ngược lại đã có trong Excel từ khá lâu một lúc. Nhưng việc chuyển đổi một dãy ô thành một cột đơn lẻ là một nhiệm vụ khó giải quyết. Bây giờ, điều đó cuối cùng đã thay đổi. Microsoft đã giới thiệu một chức năng mới, được gọi là TOCOL, có thể thực hiện chuyển đổi từ mảng sang cột trong nháy mắt. Dưới đây là danh sách các tác vụ mà hàm mới này có thể dễ dàng giải quyết.
Hàm TOCOL trong Excel
Hàm TOCOL trong Excel chuyển đổi một mảng hoặc phạm vi ô thành một ô duy nhất cột.
Hàm nhận ba đối số, nhưng chỉ đối số đầu tiên là bắt buộc.
TOCOL(array, [ignore], [scan_by_column])Ở đâu:
Mảng (bắt buộc) - một mảng hoặc phạm vi để chuyển đổi thành một cột.
Bỏ qua (tùy chọn) - xác định xem có nên bỏ qua khoảng trống hoặc/và lỗi hay không. Có thể là một trong các giá trị sau:
- 0 hoặc bỏ qua (mặc định) - giữ tất cả các giá trị
- 1 - bỏ qua khoảng trống
- 2 - bỏ qua lỗi
- 3 - bỏ qua khoảng trống và lỗi
Quét_theo_cột (tùy chọn) - xác định xem quét mảng theo chiều ngang hay chiều dọc:
- SAI hoặc bỏ qua (mặc định) - quét mảng theo hàng từ trái sang phải.
- TRUE - quét mảng theo cột từ trên xuống dưới.
Mẹo:
- Để chuyển một mảng thành một hàng, hãy sử dụng TOROWhàm.
- Để thực hiện phép chuyển đổi cột thành mảng ngược lại, hãy sử dụng hàm WRAPCOLS để ngắt dòng theo cột hoặc hàm WRAPROWS để ngắt dòng theo hàng.
- Để chuyển mảng từ chiều ngang sang chiều ngang theo chiều dọc hoặc ngược lại, tức là thay đổi hàng thành cột, sử dụng chức năng TRANSPOSE.
Tính khả dụng của TOCOL
TOCOL là một chức năng mới, được hỗ trợ trong Excel cho Microsoft 365 (dành cho Windows và Mac) và Excel dành cho web.
Công thức TOCOL cơ bản để chuyển đổi phạm vi thành cột
Công thức TOCOL ở dạng đơn giản nhất chỉ yêu cầu một đối số - mảng . Ví dụ: để đặt một mảng hai chiều gồm 3 cột và 4 hàng vào một cột, công thức là:
=TOCOL(A2:C5)
Công thức chỉ được nhập vào một ô (E2 trong ví dụ này) và tự động tràn vào các ô bên dưới. Về mặt Excel, kết quả được gọi là phạm vi tràn.
Cách thức hoạt động của công thức này:
Về mặt kỹ thuật, phạm vi A2:C5 trước tiên được chuyển đổi thành mảng hai chiều. Vui lòng lưu ý các hàng được phân tách bằng dấu chấm phẩy và các cột được phân cách bằng dấu phẩy:
{"Apple","Banana","Cherry";1,0,3;4,#N/A,6;7,8,9}
Hàm TOCOL quét mảng từ trái sang phải và chuyển đổi mảng thành mảng dọc một chiều:
{"Apple";"Banana";"Cherry";1;0;3;4;#N/A;6;7;8;9}
Kết quả được đặt trong ô E2, từ đó nó tràn vào các ô bên dưới.
Cách sử dụng hàm TOCOL trong Excel - ví dụ về công thức
Để hiểu rõ hơn vềcác khả năng của hàm TOCOL và những nhiệm vụ mà nó có thể thực hiện, chúng ta hãy xem một số ví dụ về công thức.
Chuyển đổi mảng thành cột bỏ qua khoảng trống và lỗi
Như bạn có thể nhận thấy trong ví dụ trước , công thức TOCOL mặc định giữ tất cả các giá trị từ mảng nguồn, bao gồm các ô trống và lỗi.
Trong mảng kết quả, các ô trống được biểu thị bằng số không, điều này có thể khá khó hiểu, đặc biệt nếu mảng ban đầu có 0 giá trị. Giải pháp là bỏ qua khoảng trống . Đối với điều này, bạn đặt đối số thứ 2 thành 1:
=TOCOL(A2:C5, 1)
Để bỏ qua lỗi , hãy đặt đối số thứ 2 thành 2:
=TOCOL(A2:C5, 2)
Để loại trừ cả hai, trống và lỗi , hãy sử dụng 3 cho đối số bỏ qua :
=TOCOL(A2:C5, 3)
Quét mảng theo chiều ngang hoặc chiều dọc
Với đối số scan_by_column mặc định (FALSE hoặc bị bỏ qua), hàm TOCOL quét mảng theo chiều ngang theo hàng. Để xử lý các giá trị theo cột, hãy đặt đối số này thành TRUE hoặc 1. Ví dụ:
=TOCOL(A2:C5, ,TRUE)
Lưu ý rằng, trong cả hai trường hợp, các mảng được trả về có cùng kích thước nhưng các giá trị được sắp xếp theo một thứ tự khác.
Kết hợp nhiều phạm vi thành một cột
Nếu bạn đang xử lý một số phạm vi không liền kề, thì trước tiên bạn có thể kết hợp các phạm vi theo chiều dọc thành một mảng với sự trợ giúp của hàm VSTACK và sau đó sử dụng TOCOL để chuyển đổi mảng đã kết hợp thành một cột.
Giả sử phạm vi đầu tiên là A2:C4 và phạm vi thứ hai là A8:C9, thì công thức có dạng sau:
=TOCOL(VSTACK(A2:C4, A8:C9))
Công thức này thể hiện hành vi mặc định - đọc các mảng được kết hợp theo chiều ngang từ bên trái sang phải như thể hiện trong cột E trong hình bên dưới.
Để đọc các giá trị theo chiều dọc từ trên xuống dưới, bạn đặt đối số thứ 3 của TOCOL thành TRUE:
=TOCOL(VSTACK(A2:C4, A8:C9), ,TRUE)
Xin lưu ý rằng, trong trường hợp này, trước tiên công thức trả về các giá trị từ cột A của cả hai mảng, sau đó từ cột B, v.v. Lý do là TOCOL quét một mảng được xếp chồng lên nhau, không phải các phạm vi riêng lẻ ban đầu.
Nếu logic nghiệp vụ của bạn yêu cầu xếp chồng các phạm vi ban đầu theo chiều ngang thay vì theo chiều dọc, thì hãy sử dụng hàm HSTACK thay vì VSTACK.
Để nối từng mảng tiếp theo vào bên phải của mảng trước đó và đọc các mảng được kết hợp theo chiều ngang, công thức là:
=TOCOL(HSTACK(A2:C4, A8:C10))
Để thêm từng mảng tiếp theo vào bên phải của mảng trước đó và quét các mảng được kết hợp theo chiều dọc, công thức là:
=TOCOL(HSTACK(A2:C4, A8:C10), ,TRUE)
Trích xuất các giá trị duy nhất từ một phạm vi nhiều cột
Hàm UNIQUE của Excel có thể dễ dàng tìm thấy các giá trị duy nhất trong một cột hoặc một hàng cũng như trả về các hàng duy nhất nhưng không thể trích xuất các giá trị duy nhất từ một mảng nhiều cột. Giải pháp là sử dụng nó cùng với hàm TOCOL.
Ví dụ: để trích xuất tất cả các giá trị (khác biệt) khác nhau từ phạm viA2:C7, công thức là:
=UNIQUE(TOCOL(A2:C7))
Ngoài ra, bạn có thể bọc công thức trên trong hàm SORT để sắp xếp mảng được trả về theo thứ tự bảng chữ cái:
=SORT(UNIQUE(TOCOL(A2:C7)))
Cách chuyển đổi phạm vi thành cột trong Excel 365 - 2010
Trong các phiên bản Excel không hỗ trợ hàm TOCOL, có một số cách khác để chuyển đổi một phạm vi ô thành một cột. Các giải pháp này khá phức tạp, nhưng dù sao cũng hiệu quả.
Để đọc phạm vi theo hàng:
INDEX( range , QUOTIENT(ROW(A1)-1, COLUMNS( phạm vi ))+1, MOD(ROW(A1)-1, COLUMNS( phạm vi ))+1)Để đọc phạm vi theo cột:
INDEX( phạm vi , MOD(ROW(A1)-1, ROWS( phạm vi ))+1, QUOTIENT(ROW(A1)-1, ROWS( phạm vi ))+1 )Đối với tập dữ liệu mẫu của chúng tôi, các công thức như sau:
Để quét phạm vi theo chiều ngang từ trái sang phải :
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Công thức này tương đương với hàm TOCOL với đối số thứ 3 được đặt thành FALSE hoặc bị bỏ qua:
=TOCOL(A2:C5)
Để quét phạm vi theo chiều dọc từ trên xuống dưới :
=INDEX($A$2:$C$5, MOD(ROW(A1)-1, ROWS($A$2:$C$5))+1, QUOTIENT(ROW(A1)-1, ROWS($A$2:$C$5))+1)
Công thức này có thể so sánh với hàm TOCOL với đối số thứ 3 được đặt thành TRUE:
=TOCOL(A2:C5, ,TRUE)
Không giống như TOCOL, các công thức thay thế phải được nhập vào mỗi ô mà bạn muốn kết quả xuất hiện. Trong trường hợp của chúng tôi, các công thức đi đến các ô E2 (theo hàng) và G2 (theo cột), sau đó được sao chép xuống hàng 13.
Nếu các công thức được sao chép sang nhiều hàng hơn mức cần thiết, một#REF! lỗi sẽ xuất hiện trong các ô "phụ". Để ngăn điều này xảy ra, bạn có thể lồng các công thức vào hàm IFERROR như sau:
=IFERROR(INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1), "")
Lưu ý rằng để công thức sao chép chính xác, chúng tôi sẽ khóa phạm vi bằng cách sử dụng tham chiếu ô tuyệt đối ($ A$2:$C$5). Thay vào đó, bạn có thể sử dụng một phạm vi được đặt tên.
Cách thức hoạt động của những công thức này
Dưới đây là bảng phân tích chi tiết về công thức đầu tiên sắp xếp các ô theo hàng:
=INDEX($A$2:$C$5, QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1, MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1)
Ý tưởng là sử dụng hàm INDEX để trả về giá trị của một ô nhất định dựa trên số hàng và cột tương đối của ô đó trong phạm vi.
số hàng được tính bằng tổ hợp này :
QUOTIENT(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
QUOTIENT trả về phần nguyên của một phép chia.
Đối với tử số , bạn sử dụng ROW(A1)-1, trả về một số sê-ri từ 0 trong E2 (ô đầu tiên nhập công thức) đến 11 trong E13 (ô cuối cùng nhập công thức).
Mẫu số do COLUMNS($A) $2:$C$5)) là hằng số và bằng với số cột trong phạm vi của bạn (trong trường hợp của chúng tôi là 3).
Bây giờ, nếu bạn kiểm tra kết quả của QUOTIENT cho 3 ô đầu tiên (E2:E4) , bạn sẽ thấy nó bằng 0 (vì phần nguyên của phép chia bằng 0). Thêm 1 sẽ cho số hàng là 1.
Đối với 3 ô tiếp theo (E5:E5), QUOTIENT trả về 1 và thao tác +1 sẽ trả về số hàng 2. Và cứ tiếp tục như vậy.
Nói cách khác, phần này của công thức tạo ra một phép lặpdãy số chẳng hạn như 1,1,1,2,2,2,3,3,3,4,4,4,… Mỗi số lặp lại số lần bằng số cột trong dãy của bạn.
Tới tính toán số cột , bạn xây dựng một dãy số thích hợp bằng cách sử dụng hàm MOD:
MOD(ROW(A1)-1, COLUMNS($A$2:$C$5))+1
Vì có 3 cột trong phạm vi của chúng ta (A2:C5), dãy phải là 1,2,3,1,2,3,…
Hàm MOD trả về phần dư sau khi chia.
Trong E2, MOD(ROW(A1)-1, COLUMNS ($A$2:$C$5))+1)
trở thành
MOD(1-1, 3)+1)
và trả về 1.
Trong E3, MOD(ROW(A2)-1, COLUMNS($A$2:$C$5))+1)
trở thành
MOD(2-1, 3) +1)
và trả về 2.
Với số hàng và số cột được thiết lập, INDEX không gặp vấn đề gì khi tìm nạp giá trị được yêu cầu.
Trong E2, INDEX($A$2 :$C$5, 1, 1) trả về giá trị từ hàng đầu tiên và cột đầu tiên của dải ô được tham chiếu, tức là từ ô A2.
Trong E3, INDEX($A$2:$C$5, 1 , 2) trả về giá trị từ hàng thứ nhất và cột thứ 2, tức là từ ô B2.
Và cứ thế.
Công thức thứ hai quét phạm vi theo c olumn, hoạt động theo cách tương tự. Điểm khác biệt là nó sử dụng MOD để lấy số hàng và QUOTIENT để lấy số cột.
Hàm TOCOL không hoạt động
Nếu hàm TOCOL báo lỗi, rất có thể đó là lỗi là một trong những lý do sau:
TOCOL không được hỗ trợ trong Excel của bạn
Khi bạn gặp lỗi #NAME? lỗi, đánh vần đúng tên của chức năng là điều đầu tiên đểkiểm tra. Nếu tên đúng nhưng lỗi vẫn tiếp diễn thì chức năng này không có sẵn trong phiên bản Excel của bạn. Trong trường hợp này, hãy cân nhắc sử dụng giải pháp thay thế TOCOL.
Mảng quá lớn
Lỗi #NUM cho biết mảng không thể vừa với một cột. Một trường hợp điển hình là khi bạn tham chiếu đến toàn bộ cột hoặc hàng.
Không có đủ ô trống
Khi xảy ra lỗi #SPILL, hãy kiểm tra xem cột mà công thức được nhập có đủ ô trống để điền kết quả. Nếu các ô trống về mặt trực quan, hãy đảm bảo không có khoảng trắng và các ký tự không in được khác trong đó. Để biết thêm thông tin, hãy xem Cách khắc phục lỗi #SPILL trong Excel.
Đó là cách bạn có thể sử dụng hàm TOCOL trong Excel 365 và các giải pháp thay thế trong các phiên bản cũ hơn để chuyển đổi mảng 2 chiều thành một cột. Tôi cảm ơn bạn đã đọc và hy vọng sẽ gặp bạn trên blog của chúng tôi vào tuần tới!
Sách bài tập thực hành
Hàm TOCOL trong Excel - ví dụ về công thức (tệp .xlsx)