Page 1 of 1

ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 12:27 pm
by n.chakrapong
ขอสอบถามครับ
ผมต้องการสร้าง dictionary ไว้เก็บคำศัพท์และค้นหา
โดยสามารถเลือกผลการค้นหาตามเงื่อนไขได้ เช่น
เลือกตาม หมวดอักษร ชนิดของคำ หรือเลือกเฉพาะศัพท์ที่จำไม่ได้ (remem)
โดยแสดงผลการค้นหาใน sheet: Find ที่ cell: B1, C1, และ D1 ครับ
Book1.xlsx
ปล. คาดว่าจะใช้เปิดในโทรศัพท์ด้วยแอพ google sheet ครับ

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 1:11 pm
by snasui
:D อ่านแล้วยังไม่ค่อยกระจ่าง ช่วยอธิบายมาอีกรอบว่า ต้องการคีย์ให้เซลล์ไหน เงื่อนไขของแต่ละเซลล์คืออะไร ต้องการคำตอบแสดงที่ไหน ฯลฯ ครับ

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 2:18 pm
by n.chakrapong
ขอชี้แจงเพิ่มเติมครับ
1. ใน sheet [Vocab] เป็นส่วนเก็บข้อมูลครับ ส่วน sheet [find] เป็น sheet แสดงผลครับ
2. ต้องการให้แสดงผลโดยใน sheet [find] โดย
2.1 ป้อนอักษรของคำศัพท์ตัวแรกที่ (ในที่นี่คือ c) ช่อง C1 sheet [find] เพื่อค้นหาคำศัพท์ที่ขึ้นต้นด้วยอักษรตัวนั้น (c)
2.2 ป้อน 1 ในช่อง B1 sheet [find] หมายถึงให้เลือกเฉพาะคำที่มีค่า 1 ในคอลัมน์ B ของ sheet[Vocab]
2.3 ป้อน n ในช่อง D1 sheet [find] หมายถึงให้เลือกเฉพาะคำที่มีค่า n ในคอลัมน์ D ของ sheet[Vocab]
3. หากป้อน all ในช่อง C1 sheet [find] และ D1 sheet [find] ให้แสดงคำศัพท์ทุกคำตามเงื่อนไข B1
4. ให้แสดงผลลัพท์ในช่อง B4:E104 sheet [find] ครับ

ปล. คล้าย ๆ กับ ลิงค์นี้ครับ viewtopic.php?f=9&t=15212

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 4:14 pm
by snasui
:D ตัวอย่างสูตรครับ

เซลล์ B3 คีย์

=IFERROR(INDEX(Table1[Remem],IF(AND($C$1="all",$D$1="all"),AGGREGATE(15,6,(ROW(Table1[Remem])-MIN(ROW(Table1[Remem]))+1)/(Table1[[Remem]:[Remem]]=$B$1),ROWS(B$2:B2)),AGGREGATE(15,6,(ROW(Table1[Remem])-MIN(ROW(Table1[Remem]))+1)/(LEFT(Table1[[Vocabulary]:[Vocabulary]])=$C$1)/(Table1[[Remem]:[Remem]]=$B$1)/(Table1[[type]:[type]]=$D$1),ROWS(B$2:B2)))),"")

Enter > Copy ไปด้านขวาและลงด้านล่าง

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 7:03 pm
by n.chakrapong
ขอบคุณนะครับ ขอโทษที่บอกไม่ชัดเจนในข้อที่ 3 นะครับ
ขอปรับใหม่ดังน้ีครับ
3. ช่อง B1 C1 และ D1 sheet [find] เป็นเงื่อนไข (โดยผมจะนำมาทำ data validation อีกทีครับ) เช่น
3.1 ป้อน all ในช่อง B1 C1 และ D1 sheet [find] (ทุกช่อง) ให้แสดงคำศัพท์ทุกคำเช่นเดียวกับ sheet [Vocab]
3.2 ป้อน all ในช่อง B1 และ C1 sheet [find] ให้แสดงคำศัพท์ทุกคำตามเงื่อนไข D1 (เงื่อนไข n-2wv และ all)
3.3 ป้อน all ในช่อง B1 และ D1 sheet [find] ให้แสดงคำศัพท์ทุกคำตามเงื่อนไข C1 (เงื่อนไข A-Z และ all)
3.4 ป้อน all ในช่อง C1 และ D1 sheet [find] ให้แสดงคำศัพท์ทุกคำตามเงื่อนไข B1 (เงื่อนไข 0, 1, all)

ตอนนี้ติดปัญหาเช่น
1. ใส่ all ในช่อง B1 ไม่มีการแสดงผล
2. ใส่ B1=0, C1=P, D1=all ไม่มีการแสดงผล

ขอบคุณครับ

ขอสอบถามเพิ่มเติมครับ
สูตรดังกล่าวสามารถนำมาใช้กับ google sheet ได้ไหมครับ

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 7:39 pm
by snasui
:D แนบไฟล์ที่เขียนสูตรนั้นเอาไว้แล้วมาด้วยจะได้ดูต่อไปจากนั้นครับ

ในส่วนของ Google Sheet ผมไม่รับประกันว่าจะทำได้หรือไม่ได้ ถ้าจะใช้งานโปรแกรมใดควรถามด้วยโปรแกรมนั้นครับ

สำหรับ Google Sheet ให้ถามที่หมวด Other ครับ

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Sun Feb 23, 2020 9:13 pm
by n.chakrapong
:thup: ผมได้ลองใส่สูตรตามที่คุณสันติพงศ์แนะนำ และ data validation เพิ่มเติมนะครับ
Dict.xlsx

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Mon Feb 24, 2020 2:39 pm
by Bo_ry
A3
=IFERROR(AGGREGATE(15,6,Table1[No.]/IF($B$1="All",1,Table1[Remem]=$B$1)/IF($C$1="All",1,LEFT(Table1[Vocabulary])=$C$1)/IF($D$1="All",1,LEFT(Table1[type])=$D$1),ROWS(A$3:A3)),"")

B3:E3
=IF($A3="","",VLOOKUP($A3,Table1,COLUMNS($A3:B3)))


Google Sheet

=FILTER(Vocab!A3:F,IF($B$1="All",1,Vocab!B3:B=$B$1)*IF($C$1="All",1,LEFT(Vocab!C3:C)=$C$1)*IF($D$1="All",1,Vocab!D3:D=$D$1)*IF(COUNTIF($B$1:$D$1,"All")=3,Vocab!A3:A>0,1))

Re: ค้นหาคำมาแสดงหลายเซลแบบมีเงื่อนไข

Posted: Tue Feb 25, 2020 3:58 pm
by n.chakrapong
Bo_ry wrote: Mon Feb 24, 2020 2:39 pm A3
=IFERROR(AGGREGATE(15,6,Table1[No.]/IF($B$1="All",1,Table1[Remem]=$B$1)/IF($C$1="All",1,LEFT(Table1[Vocabulary])=$C$1)/IF($D$1="All",1,LEFT(Table1[type])=$D$1),ROWS(A$3:A3)),"")

B3:E3
=IF($A3="","",VLOOKUP($A3,Table1,COLUMNS($A3:B3)))


Google Sheet

=FILTER(Vocab!A3:F,IF($B$1="All",1,Vocab!B3:B=$B$1)*IF($C$1="All",1,LEFT(Vocab!C3:C)=$C$1)*IF($D$1="All",1,Vocab!D3:D=$D$1)*IF(COUNTIF($B$1:$D$1,"All")=3,Vocab!A3:A>0,1))
ขอคุณอาจารย์ทั้งสองท่านมากเลยนะครับ ได้ผลตามที่ต้องการเลยครับ
ขอบคุณ คุณBo_ry อีกครั้งนะครับ ที่ตอบทั้งในห้อง line และ ในเว็บเลยครับ