วิธีใช้ ARRAYFORMULA กับ QUERY ใน Google ชีต


11

ฉันมีแบบสอบถามที่ต้องเรียกใช้สำหรับทุกแถวในรายการ มันทำงานได้ดีเมื่อเขียนสำหรับแถวเดียว:

QUERY(MaraRankData,
  "select J,I,H,G,F,E where 
    A='"&E3&"' and 
    B='"&B3&"' and 
    C="&C3&" and 
    D="&D3&"",
  0
)

ที่ส่งออกแถวของข้อมูลตามที่ต้องการ แต่เมื่อฉันใส่ไว้ใน ARRAYFORMULA มันยังคงเอาต์พุตเพียงหนึ่งแถวแทนที่จะเป็นหลายแถว:

=ARRAYFORMULA(
  QUERY(MaraRankData,
    "select J,I,H,G,F,E where 
      A='"&E3:E&"' and 
      B='"&B3:B&"' and 
      C="&C3:C&" and 
      D="&D3:D&"",
    0)
)

Google ชีตไม่ส่งข้อผิดพลาดดังนั้นฉันไม่รู้ว่าฉันทำอะไรผิด ฉันจะทำให้ ARRAYFORMULA ทำงานร่วมกับ QUERY ของฉันได้อย่างไรฉันจึงไม่ต้องทำซ้ำสูตรทุกแถว?


เพื่อรองรับความคิดเห็นของไวน์แดงเกี่ยวกับการห่อสูตร Query () ด้วย Arrayformula ไม่จำเป็นต้องตัดสูตรใด ๆ ที่ส่งคืน / สร้างผลลัพธ์ประเภทอาร์เรย์แล้ว Ie ไม่ได้ใช้ Arrayformula กับ "Filter", Unique, "" Transpose, "ฯลฯ
Xzila

1
นอกจากนี้ส่วนใหญ่เวลาที่คุณสามารถใช้แบบสอบถามสูตรตัวกรองจะทำงาน ฉันพนันว่าคุณสามารถแก้ปัญหาของคุณได้ง่ายขึ้น
Xzila

@Xzila หากคุณมีวิธีในการทำเช่นนี้filterโปรดโพสต์คำตอบ: ฉันสนใจวิธีการแก้ปัญหาดังกล่าว

2
=FILTER({E:E,F:F,G:G,H:H,I:I,J:J},A3:A=E3:E)ส่วนแรกเป็นเพียงการสั่งซื้อคอลัมน์ในวงเล็บปีกกาอีกครั้ง อย่างที่สองก็คือ A ถึง E ดูเหมือนคอลัมน์เดียวที่สำคัญเมื่อ B ดูตัวเอง C ดูที่ตัวเอง ฯลฯ จริงๆแล้วแม้ว่าชุดข้อมูลจะดีและอาจอธิบายเพิ่มเติมเกี่ยวกับปัญหา บางทีฉันก็ไม่เข้าใจ
Xzila

คำตอบ:


10

arrayformula(query(...))รวมกันไม่สนับสนุน; ไม่มีแนวคิดของการqueryประมวลผลอาร์เรย์ของอาร์เรย์หรือดำเนินการอาร์เรย์ของสตริงการสืบค้น

คุณมีสองตัวเลือก: (a) ทำซ้ำqueryในทุกแถว; (b) ใช้vlookupเพื่อดึงคอลัมน์ข้อมูลตามที่อธิบายไว้ด้านล่าง ตัวอย่างเช่น:

=arrayformula(vlookup(E3:E, {A3:A, J3:J}, 2, false))

ใช้องค์ประกอบหนึ่งของ E3: E ในแต่ละครั้งค้นหาองค์ประกอบนี้ในคอลัมน์ A และดึงองค์ประกอบที่สอดคล้องกันของคอลัมน์ J ด้วยวิธีการนี้คุณจะต้องใช้ vlookups แยกหกรายการเพื่อรับคอลัมน์ J, I, H, G, F E แต่คุณไม่จำเป็นต้องมีคำสั่งแยกต่างหากสำหรับแต่ละแถว

ภาวะแทรกซ้อนคือvlookupยอมรับคีย์ค้นหาเดียวเท่านั้นและคุณต้องการค้นหาด้วยพารามิเตอร์ 4 ตัว

A='"&E3&"' and 
B='"&B3&"' and 
C="&C3&" and 
D="&D3&

สิ่งนี้สามารถแก้ไขได้โดยการเชื่อมโยงสิ่งเหล่านี้เป็นคีย์การค้นหาเดียว: คุณสามารถมีคอลัมน์เช่น Z

=arrayformula(E3:E & "|" & B3:B & "|" & C3:C & "|" & D3:D)

ซึ่งเชื่อมพารามิเตอร์การค้นหาสี่ตัวไว้ในคีย์การค้นหาที่คั่นด้วยไพพ์เดียว vlookupทำเช่นเดียวกันสำหรับตารางที่จะค้นหาและจากนั้นเปรียบเทียบคีย์เหล่านี้โดยใช้


3
เกี่ยวกับคำสั่งแรกแบบสอบถามแบบซ้อนภายในของ arrayformula จะทำงานกับอาร์กิวเมนต์แรก ดูwebapps.stackexchange.com/a/97658/88163
Rubén
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.