จะคืนรายการข้อความ DISTINCT / UNIQUE ผ่าน Google QUERY ได้อย่างไร


12

รับรายการหมวดหมู่และหมวดหมู่ย่อย:

CatA    SubCatA
CatA    SubCatA
CatB    SubCatB
CatB    SubCatB
CatC    SubCatC
CatC    SubCatC

ฉันต้องการส่งคืนหมวดหมู่หลักที่ไม่ซ้ำทั้งหมดตามหมวดหมู่รอง

ฉันไม่ต้องการใช้:

=QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'")

เนื่องจากเป็นการส่งคืนรายการที่มีรายการซ้ำ (การส่งคืนองค์ประกอบแรกจะไม่ช่วยได้เช่นกัน)

สิ่งที่ฉันพยายามคือ:

=QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA' GROUP BY A")

แต่มันทำให้ฉันเกิดข้อผิดพลาด: CANNOT_GROUP_WITHOUT_AGGดังนั้นฉันจึงพยายามค้นหาบางสิ่งที่เทียบเท่าDISTINCT(A)หรืออย่างใดอย่างหนึ่งUNIQUE(A)แต่ฟังก์ชั่นเหล่านี้ไม่มีอยู่จริง

มีฟังก์ชั่นใด ๆ ใน Google Query Language Query Language ที่เทียบเท่ากับ DISTINCT / UNIQUE เพื่อส่งคืนรายการค่าที่ไม่ซ้ำหรือไม่

คำตอบ:


16

โดยไม่ต้องสืบค้น:

=unique(filter(A1:A6, B1:B6="SubCatA"))

ทางออกที่ง่ายที่สุด
Omiod

8

คุณต้องเพิ่มคอลัมน์ตัวช่วยภายในQUERYสูตรเช่น:

=QUERY(
   {A1:B6, A1:A6},
   "SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1 LABEL COUNT(Col3) ''"
 )

การเพิ่มQUERYสูตรอื่นจะช่วยในการลบคอลัมน์ตัวช่วยออก:

=QUERY(
   QUERY(
     {A1:B6, A1:A6},
     "SELECT Col1, COUNT(Col3) WHERE Col2 = 'SubCatA' GROUP BY Col1"
   ), 
   "SELECT Col1"
 )

8

นอกเหนือจากการใช้ฟังก์ชัน UNIQUE ที่มีประโยชน์ตลอดรอบตัวกรองตามที่user79865แนะนำคุณยังสามารถใช้ UNIQUE รอบฟังก์ชั่น QUERY ดั้งเดิม (ซึ่งอาจมีประโยชน์มากกว่าและเป็นประโยชน์ในสถานการณ์อื่น ๆ เพื่อรักษาตัวเลือกและความยืดหยุ่นของ QUERY เมื่อ FILTER ไม่เพียงพอ )

ชอบมาก =UNIQUE(QUERY(A1:B6,"SELECT A WHERE B = 'SubCatA'"))


4

วิธีการแก้ปัญหาที่ไม่มีฟังก์ชั่นผู้ช่วยเหลือ / ห่อหุ้ม:

=QUERY(A1:B6,"SELECT MAX(A) WHERE B = 'SubCatA' GROUP BY A LABEL MAX(A) ''")

2

ใช้Unique(range)ฟังก์ชั่น

ตัวอย่าง:

=unique(query(Sheet2!A3:F2372,"SELECT C WHERE A contains '" &E1& "' AND B CONTAINS '" &E2& "'  ",-1))

สิ่งนี้จะทำงานในการดึงหนึ่งคอลัมน์ คุณสามารถใช้เทคนิคนี้เพื่อสำรวจงานของคุณเพิ่มเติม มันง่ายกว่านี้ A, B, C เป็นคอลัมน์จาก Sheet2 ในขณะที่ E1, E2 มาจากแผ่นงานปัจจุบันที่ล้อมรอบด้วย &


0

OP ถามโดยเฉพาะผ่านทาง Google QUERYแต่มีแบบอย่างที่อีก A ไม่ต้องการ QUERY และ IMO ทางออกที่ดีกว่า (เพราะมีความครอบคลุมมากขึ้นและหลากหลาย) จะใช้ตารางเดือย:

ตัวอย่าง WA82879

(และ As อื่น ๆ ) นี้จะเป็นการสาธิตวิธีแก้ปัญหาที่ดีกว่าหากตัวอย่างข้อมูลมีความสมจริงมากขึ้น


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.