Bạn có thể thực hiện một UNION CHỌN trong Google Sheet không?


10

Tôi đã có một Trang tính Google được liên kết với một biểu mẫu thu thập các câu trả lời từ ba người khác nhau trong cùng một chủ đề bằng cách sử dụng cùng một biểu mẫu và chỉnh sửa ba lần. Điều này tạo ra một tờ có chứa ba cột ghi rõ vị trí của ba người.

Tôi cần tạo ra một khung nhìn / truy vấn lấy ba cột đó và đặt chúng 'bên dưới' nhau, và không nằm cạnh nhau. Trong cơ sở dữ liệu, tôi đã thực hiện một cái gì đó giống như truy vấn bên dưới, tôi đã gọi tblMain của tôi, và nêu bốn cột có liên quan (tôi cũng cần ID chủ đề).

tblMain:

ID        RALocation        RBLocation        RCLocation

Truy vấn:

Select ID, RALocation as Location, 'RA' as Role from tblMain
Union
Select ID, RBLocation as Location, 'RB' as Role from tblMain
Union
Select ID, RCLocation as Location, 'RC' as Role from tblMain

Có ai biết nếu có một cách để làm điều này trong Google Sheets? Tôi không ngại xây dựng nhiều hơn một tờ và sau đó kết hợp chúng ở cuối, nhưng tôi hơi bế tắc về cách làm điều này.


Là số lượng hàng cố định hoặc nó sẽ được thay đổi theo thời gian?
Rubén

Câu trả lời:


3

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:

  1. 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).
  2. Sử dụng nó trong JOINlệnh cho mỗi ba cột.
  3. Nối các kết quả, thêm ký tự ở giữa.
  4. SPLIT chuỗi nối bởi cùng một ký tự.
  5. 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ì SPLITlà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).


Điều đó có tác dụng và tôi có thể kết hợp chúng để có kết quả đúng. Điều duy nhất bây giờ tôi đang cố gắng làm là làm cho nó tôn trọng các giá trị NULL và kéo chúng ra, hóa ra là LỌC của bạn không cần thiết, nó sẽ đưa chúng ra nếu tìm thấy giá trị NULL. Bất cứ ý tưởng làm thế nào tôi có được nó để tôn trọng NULL?
AnneB

1
Trên thực tế, "câu trả lời khác" là một câu trả lời một phần tại thời điểm này. Bên cạnh các lựa chọn thay thế khác, phần còn thiếu có liên quan là về cách sử dụng các mảng nhúng thay vì cách tiếp cận UNION-SELECT.
Rubén

2
Tuyệt vời. Có lẽ tôi sẽ phải xem kịch bản khi phi công của chúng tôi kết thúc nhưng bây giờ tôi đã có đủ để tiếp tục. Mọi người ở đây thực sự hữu ích, cảm ơn tất cả các bạn!
AnneB 20/07/2015


2

Câu trả lời ngắn

Google Sheets là một công cụ rất mạnh có nhiều lựa chọn thay thế để đạt được kết quả tương tự như UNION-SELECT.

Lựa chọn thay thế

Mảng nhúng

Một cách khác để sử dụng cách SPLIT-TRANSPOSE-THAM GIA-CHAR là sử dụng các mảng nhúng. Một lợi thế của phương pháp này là nó không yêu cầu xây dựng / giải mã chuỗi, do đó giới hạn số lượng ký tự không liên quan.

Mảng dày

Lọc

Ở trên có thể được sử dụng kết hợp với LỌC () cho những trường hợp yêu cầu lọc để có hành vi tương tự UNION-SELECT. Thí dụ

={Filter(A1:B2, B1:B2=2);Filter(D1:E2, E1:E2=6);Filter(G1:H2, H1:H2=12)}

Cũng có thể được sử dụng kết hợp với QUERY () nhưng kết quả của nó bao gồm một dòng tiêu đề. Để tìm hiểu về cách loại bỏ các tiêu đề, hãy xem Thoát khỏi hàng trong kết quả của truy vấn Bảng tính Google .

Cách tạo cột giá trị

Sử dụng TRANSPOSE-SPLIT-REPT để tạo cột giá trị.

={Transpose(Split(REPT("RA,",6),","))}

Ngoài ra QUERY () có thể được sử dụng để tạo một cột các giá trị, nhưng việc loại bỏ hàng tiêu đề có thể làm cho công thức phức tạp hơn. Chỉ sử dụng nếu giới hạn độ dài chuỗi gây ra sự cố.

Giải pháp sử dụng Mảng nhúng và TRANSPOSE-SPLIT-REPT

Giả sử rằng phạm vi tblMain là A1: D7, trong đó A1: D1 là các tiêu đề bảng và dữ liệu nằm trong A2: D7.

={{"ID";A2:A7;A2:A7;A2:A7},
{"Location";B2:B7;C2:C7;D2:D7},{"Role";
Transpose(Split(REPT("RA,",6),","));
Transpose(Split(REPT("RB,",6),","));
Transpose(Split(REPT("RC,",6),","))}}

Người giới thiệu

Áp dụng mảng bảng tính google - StackOverflow


Bạn phải đọc thêm câu trả lời từ tôi;). Tôi chưa tìm thấy một bài viết trợ giúp chính thức về điều này. Tôi biết rằng có các chủ đề trong Diễn đàn Sản phẩm của Google và qua Internet, giống như tài liệu tham khảo mà tôi đã đưa vào.
Rubén

Cảm ơn bạn vì điều này, tôi hiện đang xem xét giải pháp cuối cùng, tôi nghĩ rằng nó sẽ làm rất tốt cho phi công của chúng tôi!
AnneB 20/07/2015
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.