Mục lục
Cách nhanh nhất để chuyển đổi một cột hoặc hàng giá trị thành một mảng hai chiều là sử dụng hàm WRAPCOLS hoặc WRAPROWS.
Kể từ những ngày đầu tiên của Excel, nó đã được rất giỏi tính toán và phân tích các con số. Nhưng thao tác với các mảng theo truyền thống là một thách thức. Sự ra đời của mảng động đã làm cho việc sử dụng công thức mảng trở nên dễ dàng hơn rất nhiều. Và bây giờ, Microsoft đang phát hành một tập hợp các hàm mảng động mới để thao tác và định hình lại các mảng. Hướng dẫn này sẽ hướng dẫn bạn cách sử dụng hai hàm như vậy, WRAPCOLS và WRAPROWS, để chuyển đổi một cột hoặc hàng thành một mảng 2D một cách nhanh chóng.
Hàm WRAPCOLS trong Excel
Hàm WRAPCOLS trong Excel chuyển đổi một hàng hoặc cột chứa các giá trị thành một mảng hai chiều dựa trên số lượng giá trị được chỉ định trên mỗi hàng.
Cú pháp có các đối số sau:
WRAPCOLS(vector, wrap_count, [pad_with])Trong đó:
- vector (bắt buộc) - mảng hoặc dải ô một chiều nguồn.
- wrap_count (bắt buộc) - số lượng giá trị tối đa trên mỗi cột.
- pad_with (tùy chọn) - giá trị cần điền vào cột cuối cùng nếu không có đủ mục để điền vào. Nếu bị bỏ qua, các giá trị bị thiếu sẽ được đệm bằng #N/A (mặc định).
Ví dụ: để thay đổi phạm vi B5:B24 thành mảng 2 chiều với 5 giá trị trên mỗi cột, công thức là:
=WRAPROWS(B5:B24, 5)
Bạn nhậpđối số vector không phải là mảng một chiều.
#NUM! error
Xảy ra lỗi #NUM nếu giá trị wrap_count là 0 hoặc số âm.
#SPILL! lỗi
Thông thường, lỗi #SPILL cho biết không có đủ ô trống để đổ kết quả vào. Xóa các ô lân cận và nó sẽ biến mất. Nếu lỗi vẫn tiếp diễn, hãy xem #SPILL nghĩa là gì trong Excel và cách khắc phục.
Đó là cách sử dụng các hàm WRAPCOLS và WRAPROWS để chuyển đổi phạm vi một chiều thành mảng hai chiều trong Excel. 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 để tải xuống
Hàm WRAPCOLS và WRAPROWS - ví dụ (tệp .xlsx)
công thức trong bất kỳ ô đơn lẻ nào và nó sẽ tự động tràn vào nhiều ô nếu cần. Trong đầu ra WRAPCOLS, các giá trị được sắp xếp theo chiều dọc, từ trên xuống dưới, dựa trên giá trị wrap_count. Sau khi đếm xong, một cột mới được bắt đầu.
Hàm WRAPROWS của Excel
Hàm WRAPROWS trong Excel chuyển đổi một hàng hoặc cột có giá trị thành một mảng hai chiều dựa trên số lượng giá trị trên mỗi hàng mà bạn chỉ định.
Cú pháp như sau:
WRAPROWS(vector, wrap_count, [pad_with])Trong đó:
- vector (bắt buộc) - nguồn một chiều mảng hoặc phạm vi.
- wrap_count (bắt buộc) - số lượng giá trị tối đa trên mỗi hàng.
- pad_with (tùy chọn) - giá trị cho pad với hàng cuối cùng nếu không có đủ mục để điền vào. Giá trị mặc định là #N/A.
Ví dụ: để chuyển đổi dải ô B5:B24 thành một mảng 2D có 5 giá trị trong mỗi hàng, công thức là:
=WRAPROWS(B5:B24, 5)
Bạn nhập công thức vào ô phía trên bên trái của phạm vi tràn và công thức sẽ tự động điền vào tất cả các ô khác. Hàm WRAPROWS sắp xếp các giá trị theo chiều ngang, từ trái sang phải, dựa trên giá trị wrap_count . Sau khi đạt đến số lượng, nó bắt đầu một hàng mới.
Tính khả dụng của WRAPCOLS và WRAPROWS
Cả hai chức năng này chỉ sẵn dùng trong Excel cho Microsoft 365 (Windows và Mac) và Excel cho web.
Trước đócác phiên bản khác, bạn có thể sử dụng các công thức truyền thống phức tạp hơn để thực hiện các phép biến đổi từ cột sang mảng và từ hàng sang mảng. Trong phần tiếp theo của hướng dẫn này, chúng ta sẽ thảo luận chi tiết về các giải pháp thay thế.
Mẹo. Để thực hiện thao tác ngược lại, tức là thay đổi mảng 2D thành một cột hoặc một hàng, hãy sử dụng hàm TOCOL hoặc TOROW tương ứng.
Cách chuyển đổi cột/hàng thành phạm vi trong Excel - ví dụ
Bây giờ bạn đã nắm được cách sử dụng cơ bản, hãy xem xét kỹ hơn một vài trường hợp cụ thể.
Đặt số lượng giá trị tối đa cho mỗi cột hoặc hàng
Tùy thuộc vào cấu trúc dữ liệu gốc của bạn, bạn có thể thấy nó phù hợp để sắp xếp lại thành cột (WRAPCOLS) hoặc hàng (WRAPROWS). Cho dù bạn sử dụng hàm nào thì đối số wrap_count sẽ xác định số lượng giá trị tối đa trong mỗi cột/hàng.
Ví dụ: để chuyển đổi phạm vi B4:B23 thành một mảng 2D, để mỗi cột có tối đa 10 giá trị, hãy sử dụng công thức sau:
=WRAPCOLS(B4:B23, 10)
Để sắp xếp lại cùng một phạm vi theo hàng sao cho mỗi hàng có tối đa 4 giá trị, công thức là :
=WRAPROWS(B4:B23, 4)
Hình ảnh dưới đây cho thấy nó trông như thế nào:
Mảng kết quả bị thiếu các giá trị
Trong trường hợp không có đủ giá trị để điền tất cả các cột/hàng của phạm vi kết quả, WRAPROWS và WRAPCOLS sẽ trả về lỗi #N/A để giữ cấu trúc của mảng 2D.
Để thay đổi mặc địnhhành vi, bạn có thể cung cấp một giá trị tùy chỉnh cho đối số pad_with tùy chọn.
Ví dụ: để chuyển đổi phạm vi B4:B21 thành một mảng 2D có chiều rộng tối đa là 5 giá trị và đệm phần cuối cùng hàng có dấu gạch ngang nếu không có đủ dữ liệu để điền, hãy sử dụng công thức sau:
=WRAPROWS(B4:B21, 5, "-")
Để thay thế các giá trị bị thiếu bằng các chuỗi có độ dài bằng 0 (khoảng trống), công thức là:
=WRAPROWS(B4:B21, 5, "")
Vui lòng so sánh kết quả với hành vi mặc định (công thức trong D5) trong đó pad_with bị bỏ qua:
Hợp nhất nhiều hàng thành phạm vi 2D
Để kết hợp một vài hàng riêng biệt thành một mảng 2D duy nhất, trước tiên, bạn xếp chồng các hàng theo chiều ngang bằng cách sử dụng hàm HSTACK, sau đó bọc các giá trị bằng cách sử dụng WRAPROWS hoặc WRAPCOLS.
Ví dụ: để hợp nhất các giá trị từ 3 hàng (B5:J5, B7:G7 và B9:F9) và chia thành các cột, mỗi cột chứa 10 giá trị, công thức là:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Để kết hợp các giá trị từ nhiều hàng thành một Phạm vi 2D trong đó mỗi hàng chứa 5 giá trị, công thức có dạng sau:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
C hợp nhất nhiều cột thành mảng 2D
Để hợp nhất một số cột thành một phạm vi 2D, trước tiên bạn xếp chúng theo chiều dọc bằng cách sử dụng hàm VSTACK, sau đó ngắt các giá trị thành hàng (WRAPROWS) hoặc cột (WRAPCOLS).
Ví dụ: để kết hợp các giá trị từ 3 cột (B5:J5, B7:G7 và B9:F9) vào một phạm vi 2D trong đó mỗi cột chứa 10 giá trị, công thức là:
=WRAPCOLS(HSTACK(B5:J5, B7:G7, B9:F9), 10)
Để kết hợp cáccùng một cột thành một phạm vi 2D trong đó mỗi hàng chứa 5 giá trị, hãy sử dụng công thức sau:
=WRAPROWS(HSTACK(B5:J5, B7:G7, B9:F9), 5)
Gói và sắp xếp mảng
Trong trường hợp phạm vi nguồn có các giá trị trong thứ tự ngẫu nhiên trong khi bạn muốn đầu ra được sắp xếp, hãy tiến hành theo cách sau:
- Sắp xếp mảng ban đầu theo cách bạn muốn bằng hàm SORT.
- Cung cấp mảng đã sắp xếp cho WRAPCOLS hoặc WRAPROWS.
Ví dụ: để chia dải B4:B23 thành các hàng, 4 giá trị trong mỗi hàng và sắp xếp dải kết quả từ A đến Z, hãy tạo một công thức như sau:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
Để chia cùng một phạm vi thành các cột, 10 giá trị trong mỗi cột và sắp xếp đầu ra theo thứ tự bảng chữ cái, công thức là:
=WRAPCOLS(SORT(B4:B23), 10)
Kết quả như sau :
Mẹo. Để sắp xếp các giá trị trong mảng kết quả theo thứ tự giảm dần , hãy đặt đối số thứ ba ( thứ_tự_sắp_xếp ) của hàm SORT thành -1.
Giải pháp thay thế WRAPCOLS cho Excel 365 - 2010
Trong các phiên bản Excel cũ hơn không hỗ trợ chức năng WRAPCOLS, bạn có thể xây dựng công thức của riêng mình để ngắt các giá trị từ mảng một chiều thành các cột. Điều này có thể được thực hiện bằng cách sử dụng đồng thời 5 chức năng khác nhau.
Phương thức thay thế WRAPCOLS để chuyển đổi một hàng thành phạm vi 2D:
IFERROR(IF(ROW(A1)> n , "" , INDEX( row_range , , ROW(A1) + (COLUMN(A1)-1)* n )), "")WRAPCOLS thay thế để chuyển đổi cột thành 2D phạm vi:
IFERROR(IF(ROW(A1)> n ,"", INDEX( column_range , ROW(A1) + (COLUMN(A1)-1)* n )), "")Where n là số lượng giá trị tối đa trên mỗi cột.
Trong hình ảnh bên dưới, chúng tôi sử dụng công thức sau để biến phạm vi một hàng (D4:J4) thành một mảng ba hàng.
=IFERROR(IF(ROW(A1)>3, "", INDEX($D$4:$J$4, , ROW(A1) + (COLUMN(A1)-1)*3)), "")
Và công thức này thay đổi phạm vi một cột (B4:B20) thành một mảng năm hàng:
=IFERROR(IF(ROW(A1)>5, "", INDEX($B$4:$B$20, ROW(A1) + (COLUMN(A1)-1)*5)), "")
Các giải pháp trên mô phỏng các công thức WRAPCOLS tương tự và cho kết quả giống nhau:
=WRAPCOLS(D4:J4, 3, "")
and
=WRAPCOLS(B4:B20, 5, "")
Xin lưu ý rằng không giống như hàm WRAPCOLS của mảng động, các công thức truyền thống tuân theo cách tiếp cận một công thức một tế bào. Vì vậy, công thức đầu tiên của chúng tôi được nhập vào D8 và sao chép 3 hàng xuống dưới và 3 cột sang phải. Công thức thứ hai được nhập vào D14 và sao chép xuống 5 hàng và 4 cột sang phải.
Cách thức hoạt động của các công thức này
Trọng tâm của cả hai công thức, chúng tôi sử dụng hàm INDEX trả về một giá trị từ mảng được cung cấp dựa trên số hàng và số cột:
INDEX(array, row_num, [column_num])Vì chúng ta đang xử lý mảng một hàng, chúng ta có thể bỏ qua đối số row_num , để nó mặc định là 1. Mẹo nhỏ là phải có col_num được tính toán tự động cho từng ô mà công thức được sao chép. Và đây là cách chúng tôi thực hiện việc này:
ROW(A1)+(COLUMN(A1)-1)*3)
Hàm ROW trả về số hàng của tham chiếu A1, là 1.
Hàm COLUMN trả về số cột của tham chiếu A1tham chiếu A1, cũng là 1. Trừ 1 biến nó thành 0. Và nhân 0 với 3 sẽ được 0.
Sau đó, bạn cộng 1 do ROW trả về và 0 do COLUMN trả về và kết quả là 1.
Bằng cách này, công thức INDEX ở phần trên -ô bên trái của phạm vi đích (D8) trải qua quá trình chuyển đổi này:
INDEX($D$4:$J$4, ,ROW(A1) + (COLUMN(A1)-1)*3))
thay đổi thành
INDEX($D$4:$J$4, ,1)
và trả về giá trị từ cột đầu tiên của mảng đã chỉ định, là "Quả táo" trong D4.
Khi công thức được sao chép vào ô D9, tham chiếu ô tương đối thay đổi dựa trên vị trí tương đối của hàng và cột trong khi tham chiếu phạm vi tuyệt đối không thay đổi:
INDEX($D$4:$J$4,, ROW(A2)+(COLUMN(A2)-1)*3))
biến thành:
INDEX($D$4:$J$4,, 2+(1-1)*3))
thành:
INDEX($D$4:$J$4,, 2))
và trả về giá trị từ Cột thứ 2 của mảng đã chỉ định, là "Apricots" trong E4.
Hàm IF kiểm tra số hàng và nếu nó lớn hơn số hàng bạn đã chỉ định (3 trong trường hợp của chúng tôi) sẽ trả về một chuỗi trống ( ""), nếu không thì kết quả của hàm INDEX:
IF(ROW(A1)>3, "", INDEX(…))
Cuối cùng, hàm IFERROR sửa lỗi #REF! lỗi xảy ra khi công thức được sao chép vào nhiều ô hơn mức thực sự cần thiết.
Công thức thứ hai chuyển đổi một cột thành phạm vi 2D hoạt động với logic tương tự. Điểm khác biệt là bạn sử dụng kết hợp HÀNG + CỘT để tìm ra đối số row_num cho INDEX. Tham số col_num không cần thiết trong trường hợp này vì chỉ cómột cột trong mảng nguồn.
WRAPROWS thay thế cho Excel 365 - 2010
Để ngắt các giá trị từ mảng một chiều thành các hàng trong Excel 2019 trở về trước, bạn có thể sử dụng các lựa chọn thay thế sau cho hàm WRAPROWS.
Chuyển đổi một hàng thành phạm vi 2D:
IFERROR(IF(COLUMN(A1)> n , "", INDEX( row_range , , COLUMN(A1)+(ROW(A1)-1)* n )), "")Thay đổi cột thành phạm vi 2D:
IFERROR(IF( COLUMN(A1)> n , "", INDEX( dải_cột , COLUMN(A1)+(ROW(A1)-1)* n )) , "")Trong đó n là số giá trị tối đa trên mỗi hàng.
Trong tập dữ liệu mẫu của mình, chúng tôi sử dụng công thức sau để chuyển đổi phạm vi một hàng (D4 :J4) vào phạm vi ba cột. Công thức nằm trong ô D8, sau đó được sao chép qua 3 cột và 3 hàng.
=IFERROR(IF(COLUMN(A1)>3, "", INDEX($D$4:$J$4, , COLUMN(A1)+(ROW(A1)-1)*3)), "")
Để định hình lại phạm vi 1 cột (B4:B20) thành phạm vi 5 cột, nhập công thức dưới đây vào D14 và kéo nó qua 5 cột và 4 hàng.
=IFERROR(IF(COLUMN(A1)>5, "", INDEX($B$4:$B$20, COLUMN(A1)+(ROW(A1)-1)*5)), "")
Trong Excel 365, bạn có thể đạt được kết quả tương tự với các công thức WRAPCOLS tương đương:
=WRAPROWS(D4:J4, 3, "")
và
=WRAPROWS(B4:B20, 5, "")
Cách thức hoạt động của các công thức này
Về cơ bản, các công thức này hoạt động giống như trong ví dụ trước. Sự khác biệt là cách bạn xác định tọa độ row_num và col_num cho hàm INDEX:
INDEX($D$4:$J$4,, COLUMN(A1)+(ROW(A1)-1)*3))
Để lấy số cột cho phần trên ô bên trái trong phạm vi đích (D8), bạn sử dụng ô nàybiểu thức:
COLUMN(A1)+(ROW(A1)-1)*3)
thay đổi thành:
1+(1-1)*3
và cho 1.
Do đó, công thức dưới đây trả về giá trị từ cột đầu tiên của mảng đã chỉ định, đó là "Táo":
INDEX($D$4:$J$4,, 1)
Cho đến nay, kết quả giống như trong công thức trước thí dụ. Nhưng hãy xem điều gì xảy ra trong các ô khác…
Trong ô D9, các tham chiếu ô tương đối thay đổi như sau:
INDEX($D$4:$J$4,, COLUMN(A2)+(ROW(A2)-1)*3))
Vì vậy, công thức chuyển thành:
INDEX($D$4:$J$4,, 1+(2-1)*3))
trở thành:
INDEX($D$4:$J$4,, 4))
và trả về giá trị từ cột thứ 4 của mảng đã chỉ định, đó là "Cherries" trong G4.
Hàm IF kiểm tra số cột và nếu nó lớn hơn số cột bạn đã chỉ định, thì trả về một chuỗi rỗng (""), nếu không thì kết quả của hàm INDEX:
IF(COLUMN(A1)>3, "", INDEX(…))
Để hoàn thiện, IFERROR ngăn lỗi #REF! lỗi xuất hiện trong các ô "thừa" nếu bạn sao chép công thức vào nhiều ô hơn mức thực sự cần thiết.
Chức năng WRAPCOLS hoặc WRAPROWS không hoạt động
Nếu không có chức năng "quấn" trong Excel của bạn hoặc dẫn đến lỗi, rất có thể đó là một trong những lý do dưới đây.
#NAME? lỗi
Trong Excel 365, lỗi #NAME? lỗi có thể xảy ra do bạn viết sai tên hàm. Trong các phiên bản khác, nó chỉ ra rằng các chức năng không được hỗ trợ. Như một giải pháp thay thế, bạn có thể sử dụng giải pháp thay thế WRAPCOLS hoặc thay thế WRAPROWS.
#VALUE! error
Xảy ra lỗi #VALUE nếu