Tôi cung cấp hai phiên bản, tùy thuộc vào việc có nên giữ các ô trống hay không. Ý tưởng cơ bản là như nhau:
- Chọn một ký tự không có trong bảng của bạn (ví dụ: một ký tự Unicode kỳ lạ có thể truy cập qua
CHAR
).
- Sử dụng nó trong
JOIN
lệnh cho mỗi ba cột.
- Nối các kết quả, thêm ký tự ở giữa.
SPLIT
chuỗi nối bởi cùng một ký tự.
TRANSPOSE
kết quả.
Ví dụ:
=TRANSPOSE( SPLIT( JOIN(CHAR(57344),A1:A) &CHAR(57344)& JOIN(CHAR(57344),B1:B) &CHAR(57344)& JOIN(CHAR(57344),C1:C), CHAR(57344) ) )
trong đó để tham gia / chia tách, tôi đã chọn ký tự CHAR(57344)
được chỉ định để sử dụng riêng và do đó không nên có mặt trong bất kỳ đầu vào hợp lệ nào.
Công thức trên loại bỏ các mục trống , bởi vì đây là những gì SPLIT
làm. Điều này có thể thuận tiện nếu dữ liệu của bạn không có khoảng trống: giúp bạn tránh được sự cố theo dõi hàng cuối cùng của dữ liệu. Nhưng những lần khác, khoảng trống nên được bảo tồn.
Để duy trì khoảng trống, tôi làm theo câu trả lời của Jacob Jan Tuinstra ngoại trừ việc tôi đã sử dụng một Unicode sử dụng riêng khác thay vì khoảng trắng (ai biết, có thể bạn có một số ô chỉ chứa một khoảng trắng và bạn muốn giữ chúng). Điều này bao gồm hai bước bổ sung: sau khi tham gia mọi thứ như trước đây, tôi sử dụng SUBSTITUTE
để thay thế CHAR(57344)
bằng CHAR(57344)&CHAR(57345)
, sau đó phân tách như trước và thay thế CHAR(57345)
bằng chuỗi trống.
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(...joins... , CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "")))
Kết quả đầy đủ trông như thế này (lưu ý rằng bây giờ tôi chỉ định nơi hàng dữ liệu cuối cùng):
=TRANSPOSE( ARRAYFORMULA(SUBSTITUTE( SPLIT( SUBSTITUTE(JOIN(CHAR(57344),A1:A9) &CHAR(57344)& JOIN(CHAR(57344),B1:B9) &CHAR(57344)& JOIN(CHAR(57344),C1:C9), CHAR(57344),CHAR(57344)&CHAR(57345)), CHAR(57344) ), CHAR(57345), "" )))
Thêm một cảnh báo nữa: các chuỗi trong Google Sheets không thể vượt quá 50000 ký tự. Nếu dữ liệu của bạn quá lớn để tiếp cận dựa trên chuỗi hoạt động, hãy sử dụng tập lệnh ( đây là một nơi tốt để bắt đầu).