Cách Kết Hợp Hai Kết Quả TRUY VẤN trong Google Sheets

Khi bạn muốn kết hợp hai kết quả TRUY VẤN trong Google Sheets, có một số điều cần lưu ý:

Kết hợp theo chiều dọc hoặc chiều ngang

Đầu tiên, bạn có thể kết hợp hai kết quả TRUY VẤN theo chiều dọc (chúng nằm dưới nhau) hoặc chiều ngang (chúng nằm cạnh nhau). Để thực hiện điều này, bạn có thể sử dụng các công thức sau đây:

  • VSTACK
  • HSTACK

Tuy nhiên, nếu sử dụng toán tử Kiểu BLok Ngoặc ({}), có hai nhược điểm như sau:

  • Khó đọc và bảo trì.
  • Gây hiểu nhầm tùy thuộc vào cài đặt ngôn ngữ, ví dụ: sử dụng dấu phẩy thay vì dấu chấm phẩy hoặc dấu gạch chéo ngược.

Vì vậy, chúng tôi khuyến nghị sử dụng các hàm VSTACK và HSTACK thay thế.

Để kết hợp hai kết quả TRUY VẤN theo chiều dọc, số cột trong kết quả phải khớp nhau. Để kết hợp hai kết quả TRUY VẤN theo chiều ngang, số hàng phải khớp nhau.

Thứ hai, kết hợp hai hoặc nhiều kết quả TRUY VẤN sẽ không hoạt động đúng nếu một trong các Truy vấn trả về lỗi #N/A. Điều này là do gây không khớp mảng.

VSTACK và HSTACK có thể trả về một số giá trị lỗi #N/A khi có sự không khớp hàng hoặc cột. Tuy nhiên, bạn có thể dễ dàng loại bỏ các lỗi này bằng cách sử dụng một tầng lọc bổ sung.

Cách Kết Hợp 2 Kết Quả TRUY VẤN Đúng Cách trong Google Sheets

Dưới đây là một số ví dụ về cách kết hợp hai kết quả TRUY VẤN theo chiều dọc.

Cho các ví dụ này, tôi sẽ sử dụng hai công thức TRUY VẤN và dữ liệu sau trong ô A1:C:

“Hôm nay là ngày 5 tháng 12 năm 2018.”

Lưu ý: Nếu bạn sử dụng dữ liệu trên vào một ngày trong tương lai, nó sẽ không hoạt động chính xác. Vì vậy, hãy thay đổi các ngày trong cột A để phù hợp với ngày hôm nay khi bạn sử dụng hướng dẫn này. Ví dụ, bạn có thể sử dụng các công thức sau đây:

=TODAY()-2 // trong ô A2
=TODAY() // trong ô A3 và A4
=TODAY()+1 // trong ô A5
=TODAY()+2 // trong ô A6

Dưới đây là hai công thức TRUY VẤN:

Công thức #1:
=QUERY({A2:C},”Select * where Col1>date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0)

Công thức #2:
=QUERY({A2:C},”Select * where Col1<date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0)

Kết quả của Công thức TRUY VẤN 1 và 2:

Chúng ta có thể kết hợp hai kết quả TRUY VẤN này theo chiều dọc bằng các công thức sau:

Kết Hợp Hai Kết Quả TRUY VẤN Theo Chiều Dọc trong Google Sheets

Chúng ta sẽ bắt đầu với Kiểu BLok Ngoặc.

Sử dụng Kiểu BLok Ngoặc, bạn có thể kết hợp hai công thức TRUY VẤN trên như sau:

={QUERY({A2:C},”Select where Col1>date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0);QUERY({A2:C},”Select where Col1<date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0)}

Chỉ cần đặt dấu chấm phẩy giữa hai công thức TRUY VẤN và sau đó bao toàn bộ công thức bằng dấu Ngoặc nhọn. Điều này sẽ hoạt động trong hầu hết các trường hợp.

Tuy nhiên, nếu một trong các công thức trả về lỗi #N/A (kết quả trống), công thức kết hợp sẽ trả về lỗi #VALUE!.

Để khắc phục vấn đề này và kết hợp hai kết quả TRUY VẤN theo chiều dọc một cách chính xác trong Google Sheets, hãy làm theo các bước sau:

Trước tiên, tôi sẽ chỉ cho bạn những thay đổi trong mỗi công thức TRUY VẤN, sau đó chúng ta có thể kết hợp chúng.

Công thức đã sửa đổi #1:
IFERROR(QUERY({A2:C},”Select * where Col1>date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),A2:C2/0)

Công thức đã sửa đổi #2:
IFERROR(QUERY({A2:C},”Select * where Col1<date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),A2:C2/0)

Nếu có lỗi #N/A, cả hai công thức sẽ chia các giá trị trong ô A2:C2 cho 0. Kết quả sẽ như sau:

Điều này để khớp lỗi với số cột tổng cộng trong kết quả. Điều này giúp việc kết hợp trở nên hợp lệ.

Tuy nhiên, trong kết quả kết hợp, chúng ta cần loại bỏ các mã lỗi này bằng một hàm IFERROR bổ sung, như sau:

=ARRAYFORMULA(IFERROR({IFERROR(QUERY({A2:C},”Select where Col1>date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),A2:C2/0); IFERROR(QUERY({A2:C},”Select where Col1<date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),A2:C2/0)}))

Cuối cùng, chúng ta cần bọc hai công thức TRUY VẤN kết hợp này bằng hàm ARRAYFORMULA.

Ngoài ra, bạn có thể cần chọn cột ngày trong kết quả và áp dụng Định dạng > Số > Ngày.

Để loại bỏ các hàng trống trong kết quả, đặt tên cho công thức bằng LET và áp dụng bộ lọc. Dưới đây là một ví dụ:

=LET(qc,ARRAYFORMULA(IFERROR({IFERROR(QUERY({A2:C},”Select where Col1>date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),A2:C2/0);IFERROR(QUERY({A2:C},”Select where Col1<date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),A2:C2/0)})),FILTER(qc,CHOOSECOLS(qc,1)<>””))

Chúng tôi đã sử dụng hàm LET để đặt tên cho TRUY VẤN kết hợp như là qc và lọc ra các hàng trong qc nếu cột đầu tiên trong qc trống. Chúng tôi đã sử dụng hàm FILTER để lọc qc và hàm CHOOSECOLS để trích xuất cột đầu tiên cho kiểm tra hàng trống.

Sử Dụng VSTACK (Được Khuyến Nghị)

Để kết hợp hai hoặc nhiều kết quả TRUY VẤN theo chiều dọc bằng cách sử dụng hàm VSTACK, bạn có thể sử dụng cú pháp sau đây:

=VSTACK(qery1,query2,query3,…)

Để loại bỏ lỗi vì một trong các công thức trả về lỗi, chúng ta có thể bọc công thức bằng hàm IFERROR và sử dụng một tầng lọc bổ sung theo cú pháp sau đây:

=LET(qc,IFERROR(VSTACK(qery1,query2,query3,…),FILTER(qc,CHOOSECOLS(qc,1)<>””)))

Công thức:

=LET(qc,IFERROR(VSTACK(QUERY({A2:C},”Select where Col1>date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0),QUERY({A2:C},”Select where Col1<date ‘”&TEXT(TODAY(),”yyyy-mm-dd”)&”‘”,0))),FILTER(qc,CHOOSECOLS(qc,1)<>””))

Bạn cần định dạng các giá trị cột kết quả thành dạng ngày bằng cách chọn Format > Number > Date.

Tôi đề xuất sử dụng VSTACK để kết hợp hai hoặc nhiều kết quả TRUY VẤN theo chiều dọc vì những lý do sau:

  • Nó đơn giản và dễ hiểu.
  • Không có vấn đề nếu số cột không bằng nhau. Ví dụ, kết quả TRUY VẤN 1 có thể có hai cột và kết quả TRUY VẤN 2 có thể có ba cột. Kiểu BLok Ngoặc không hoạt động trong trường hợp này.

Kết Hợp Hai Kết Quả TRUY VẤN Theo Chiều Ngang trong Google Sheets

Khi bạn kết hợp hai kết quả TRUY VẤN theo chiều ngang, có thể xảy ra lỗi nếu số hàng không khớp nhau. Trong ví dụ trước, số cột không khớp nhau.

Ví dụ:

Công thức #1:
=QUERY({A2:C},”Select * Where Col2=’Sherry'”)

Công thức #2:
=QUERY({A2:C},”Select * Where Col2=’Kevin'”)

Như bạn có thể thấy trong ví dụ trên, công thức đầu tiên trả về hai hàng và công thức thứ hai trả về ba hàng.

Do đó, chúng ta cần thêm một hàng vào công thức đầu tiên. Điều này không thực tế, vì số hàng có thể khác nhau trong các công thức khác nhau.

Nếu số hàng bằng nhau, bạn có thể kết hợp hai kết quả TRUY VẤN theo chiều ngang như sau:

={QUERY({A2:C},”Select Where Col2=’Sherry'”),QUERY({A2:C},”Select Where Col2=’Kevin'”)}

Chỉ cần đặt dấu phẩy giữa các công thức TRUY VẤN.

Tuy nhiên, tôi đề xuất sử dụng HSTACK để kết hợp hai hoặc nhiều kết quả TRUY VẤN theo chiều ngang, vì nó đáng tin cậy hơn và dễ sử dụng hơn.

Cú pháp:

=IFERROR(HSTACK(query1,query2,query3,…)))

Công thức:

=IFERROR(HSTACK(QUERY({A2:C},”Select Where Col2=’Sherry'”),QUERY({A2:C},”Select Where Col2=’Kevin'”)))

Đơn giản như vậy! HSTACK không có vấn đề về số hàng.

Đó là tất cả về cách kết hợp hai kết quả TRUY VẤN trong Google Sheets. Nếu bạn có bất kỳ thắc mắc nào về chủ đề này, hãy để lại ý kiến của bạn trong phần bình luận. Chúc bạn thành công!

Related posts