:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#1

Post by nengba »

รบกวนถามสูตรการดึงเอาข้อมูลที่ซ้ำกันในคอลัมน์เดียวกัน ไปแสดงผลในอีกคอลัมน์หนึ่งเพียงอันเดียว ตามตัวอย่างในไฟล์แนบครับ...
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#2

Post by snasui »

:D ตัวอย่างสูตรครับ

เซลล์ D4 คีย์

=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")

Ctrl+Shift+Enter > Copy ลงด้านล่าง
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#3

Post by nengba »

ยังไม่ได้ครับอาจารย์
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#4

Post by snasui »

:D แนบไฟล์ที่บอกว่าไม่ได้มาด้วยครับ
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#5

Post by nengba »

ตามนี้ครับ
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#6

Post by snasui »

:o ผมอ้างอิง Range ผิดไป 1 เซลล์

ด้านล่างนี้ปรับสูตรมาใหม่เพื่อไม่รวมเซลล์ว่างครับ

=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(IF($C$4:$C$21<>"",MATCH($C$4:$C$21,$C$4:$C$21,0)),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")
nengba
Member
Member
Posts: 55
Joined: Thu Jan 28, 2010 12:08 pm
Location: Thailand
Excel Ver: 2010
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#7

Post by nengba »

ตามต้องการเลยครับอาจารย์... ขอบพระคุณครับ
User avatar
ksnironk
Member
Member
Posts: 9
Joined: Fri Mar 13, 2020 2:33 pm

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#8

Post by ksnironk »

ลองคีย์ค่าที่ซ้ำเพิ่มไปในไฟล์ตัวอย่าง แต่ก็ยังแสดงค่าซ้ำอีก จริงๆอยากให้แสดงแค่ค่าเดียว ต้องทำยังไงคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#9

Post by snasui »

:D แนบไฟล์นั้นมาใหม่ ชี้ให้เห็นว่าเกิดปัญหาใด จะได้ตอบต่อไปจากนั้นครับ
User avatar
ksnironk
Member
Member
Posts: 9
Joined: Fri Mar 13, 2020 2:33 pm

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#10

Post by ksnironk »

ทำได้แล้วค่ะ แต่ว่าทำยังไงไม่ให้แสดง 0 ถ้าสิ้นสุดค่าซ้ำแล้วค่ะ :D
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#11

Post by snasui »

:D ตัวอย่างการปรับสูตรที่เซลล์ D4 ครับ

=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(IF($C$4:$C$21<>"",MATCH($C$4:$C$21,$C$4:$C$21,0)),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")
User avatar
ksnironk
Member
Member
Posts: 9
Joined: Fri Mar 13, 2020 2:33 pm

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#12

Post by ksnironk »

ได้แล้วค่ะ ขอบคุณมากค่ะ :D
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#13

Post by Totem »

:D เรียนอาจารย์และเพื่อนสมาชิกทุกคน
จากที่คุณ ksnironk ถามไว้และได้คำตอบแล้ว
แต่ขอคำถามเพิ่มเติมในกรณีหาค่าซ้ำหรือไม่ซ้ำกัน ในแสดงออกเพียงรายการเดียว แต่มีเงือนไขมากกว่าเดิมเป็น 2 คอลัมน์ คือ
จากข้อมูลใน คอลัมน์ C และ E ให้แสดงค่าซ้ำหรือไม่ซ้ำเพียงค่าเดียว แต่ให้พิจารณาที่ไม่ใช่ BBBB ในคอลัมน์ C และในคอลัมน์ E ที่ระบายสีไว้ ก็พิจารณาได้ค่าไม่ซ้ำด้วย
จะได้ AAAA ในคอลัมน์ F และ 1234 ในคอลัมน์ G ลงมา เป็นต้น
ซึ่งในคอลัมน์ E อาจมีซ้ำมากกว่า 2 รายการก็ได้ ที่แสดงไว้เป็นเพียงตัวอย่างครับ

ขอบคุณครับ

สูตร Excel - แสดงค่าซ้ำเพียงค่าเดียว.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#14

Post by snasui »

:D ตัวอย่างสูตรตามด้านล่างครับ
  1. ที่ F7 คีย์
    =IFERROR(INDEX($C$7:$C$24,SMALL(IF(FREQUENCY(IF($C$7:$C$24<>"BBBB",IF($C$7:$D$24<>"",MATCH($C$7:$C$24&$E$7:$E$24,$C$7:$C$24&$E$7:$E$24,0))),ROW($C$7:$C$24)-ROW($C$7)+1),ROW($C$7:$C$24)-ROW($C$7)+1),ROWS(F$2:F2))),"")
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  2. ที่ G7 คีย์
    =IFERROR(INDEX($E$7:$E$24,SMALL(IF(FREQUENCY(IF($C$7:$C$24<>"BBBB",IF($C$7:$D$24<>"",MATCH($C$7:$C$24&$E$7:$E$24,$C$7:$C$24&$E$7:$E$24,0))),ROW($C$7:$C$24)-ROW($C$7)+1),ROW($C$7:$C$24)-ROW($C$7)+1),ROWS(G$2:G2))),"")
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
Totem
Silver
Silver
Posts: 650
Joined: Fri Oct 11, 2013 7:52 pm
Excel Ver: 365 , 2007

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#15

Post by Totem »

:D ได้ตามต้องการ ขอบคุณครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#16

Post by pro602 »

snasui wrote: Mon Aug 01, 2016 8:21 pm :D ตัวอย่างสูตรครับ

เซลล์ D4 คีย์

=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")

Ctrl+Shift+Enter > Copy ลงด้านล่าง
อาจารย์ครับเครื่องหมาย "~" ที่อยู่หลัง Match มันหมายถึงอะไรครับและในการป้อนเครื่องหมายนี้ขณะเขียนสูตรกดปุ๋มรงไหนครับ ผมลองกดตรงแป้นปุ่มเปลีายนภาษามันไม่ได้ครับ ผมรบกวนอาจารย์ช่วยอธิบายการคำนวนและความหมายของสูตรด้านบนให้ผมพอเข้าใจเป็นแนวทางหน่อยครับ ขอบคุณครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#17

Post by snasui »

:D เครื่องหมาย Tilde สามารถอ่านเพิ่มเติมได้ที่นี่ครับ http://snasui.com/viewtopic.php?t=8597 กรณีอ่านแล้วไม่เข้าใจสามารถถามเพิ่มเติมได้ครับ

การกดแป้นให้ได้เครื่องหมาย ~ ให้กดแป้น Shift + เครื่องหมายเปลี่ยนภาษา โดยกดค้างไว้ 1 วินาทีครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#18

Post by pro602 »

snasui wrote: Fri Jul 10, 2020 10:53 pm :D เครื่องหมาย Tilde สามารถอ่านเพิ่มเติมได้ที่นี่ครับ http://snasui.com/viewtopic.php?t=8597 กรณีอ่านแล้วไม่เข้าใจสามารถถามเพิ่มเติมได้ครับ

การกดแป้นให้ได้เครื่องหมาย ~ ให้กดแป้น Shift + เครื่องหมายเปลี่ยนภาษา โดยกดค้างไว้ 1 วินาทีครับ
ขอบคุณครับอาาจารย์สำหรับที่มาของเครื่องหมาย ~
ผมรบกวนอาจารย์อธิบาย Step การทำงานของสูตรชุดนี้ให้ผมเข้าใจในหลักการหน่อยครับจะได้นำไปประยุกต์ใช้งานได้อย่างเข้าใจครับ (ผมสามารถนำสูตรชุดนี้ไปใช้งานได้ผลตามที่ต้องการ)
=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")
User avatar
snasui
Site Admin
Site Admin
Posts: 30761
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#19

Post by snasui »

:D การอ่านหรือทำความเข้าใจฟังก์ชั่นจะต้องอ่านจากสูตรนอกสุดเข้าไปยังฟังก์ชั่นด้านใน แต่การแทนค่าจะต้องแทนค่าจากฟังก์ชั่นด้านในออกด้านนอกเนื่องจากสูตรจะนำเอาผลลัพธ์ของสูตรด้านในมาใช้ประมวลต่อด้วยสูตรที่ครอบอยู่ด้านนอก การจะทำความเข้าใจสูตรซับซ้อนใด ๆ จะต้องทำทั้งสองอย่างที่กล่าวมาครับ

คำอธิบาย

จากสูตร

=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")

หมายถึง

ถ้า INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))) ได้ผลลัพธ์เป็น Error ให้แสดงค่าว่าง
หากไม่เกิด Error ให้แสดงผลลัพธ์ที่ได้

จากสูตร

INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4)))

หมายถึง

จากช่วง $C$4:$C$21 ให้นำผลลัพธ์ในลำดับที่ SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4)) มาแสดง ถ้าคำตอบส่วนนี้มีค่าเป็น 10 ภาพรวมสูตรจะได้เป็น INDEX($C$4:$C$21,10) แปลว่าจากช่วง $C$4:$C$21 ให้นำค่าในลำดับที่ 10 มาแสดง

จากสูตร

SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))

Small หมายถึงให้ค่าค่าที่น้อยที่สุดในลำดับที่กำหนด

ค่าที่ต้องการหาคือ IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1) ซึ่งได้มาหลายค่า

ลำดับที่น้อยที่สุดที่กำหนดคือ ROWS(D$4:D4) ถ้าส่วนนี้เป็น 1 แปลว่าให้หาค่าในช่วง IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1) โดยนำค่าที่น้อยที่สุดในลำดับที่ 1 มาแสดง

จากสูตร

IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1)

หมายถึง หาก FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1) มีค่าเป็นจริง (ค่าเป็นจริงของสูตรนี้คือไม่เท่ากับ 0 ถ้าเป็น 0 ถือว่าเป็นเท็จ) ให้แสดงคำตอบเป็น ROW($C$4:$C$21)-ROW($C$4)+1 คือให้แสดงค่าลำดับเริ่มจาก 1 (อ่านเพิ่มเติมที่นี่่ครับ wordpress/large/) หากไม่เป็นจริงให้แสดงค่า False

จากสูตร

FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1)

หมายถึงให้ค่าค่าความถี่ของ MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0) จาก ROW($C$4:$C$21)-ROW($C$4)+1 อ่านเพิ่มเติมที่นี่ครับ http://snasui.com/viewtopic.php?f=3&t=2221

จากสูตร

MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0)

หมายถึงให้หาว่า "~"&$C$4:$C$21 อยู่ในลำดับที่เท่าไรของ $C$5:$C$21&""

การแกะสูตรให้คลุมช่วงเซลล์ในสูตรที่เราสนใจแล้วกดแป้น F9 จะเป็นประเมินสูตรออกมาเป็นผลลัพธ์ให้เห็น หากต้องการยกเลิกให้กดแป้น Ctrl+Z หากต้องการยกเลิกทั้งหมดให้กดแป้น ESC ครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: ต้องการดึงข้อมูลที่ซ้ำกัน ออกมาแสดงผลเพียงอันเดียว...

#20

Post by pro602 »

snasui wrote: Sat Jul 11, 2020 8:41 am :D การอ่านหรือทำความเข้าใจฟังก์ชั่นจะต้องอ่านจากสูตรนอกสุดเข้าไปยังฟังก์ชั่นด้านใน แต่การแทนค่าจะต้องแทนค่าจากฟังก์ชั่นด้านในออกด้านนอกเนื่องจากสูตรจะนำเอาผลลัพธ์ของสูตรด้านในมาใช้ประมวลต่อด้วยสูตรที่ครอบอยู่ด้านนอก การจะทำความเข้าใจสูตรซับซ้อนใด ๆ จะต้องทำทั้งสองอย่างที่กล่าวมาครับ

คำอธิบาย

จากสูตร

=IFERROR(INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))),"")

หมายถึง

ถ้า INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))) ได้ผลลัพธ์เป็น Error ให้แสดงค่าว่าง
หากไม่เกิด Error ให้แสดงผลลัพธ์ที่ได้

จากสูตร

INDEX($C$4:$C$21,SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4)))

หมายถึง

จากช่วง $C$4:$C$21 ให้นำผลลัพธ์ในลำดับที่ SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4)) มาแสดง ถ้าคำตอบส่วนนี้มีค่าเป็น 10 ภาพรวมสูตรจะได้เป็น INDEX($C$4:$C$21,10) แปลว่าจากช่วง $C$4:$C$21 ให้นำค่าในลำดับที่ 10 มาแสดง

จากสูตร

SMALL(IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1),ROWS(D$4:D4))

Small หมายถึงให้ค่าค่าที่น้อยที่สุดในลำดับที่กำหนด

ค่าที่ต้องการหาคือ IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1) ซึ่งได้มาหลายค่า

ลำดับที่น้อยที่สุดที่กำหนดคือ ROWS(D$4:D4) ถ้าส่วนนี้เป็น 1 แปลว่าให้หาค่าในช่วง IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1) โดยนำค่าที่น้อยที่สุดในลำดับที่ 1 มาแสดง

จากสูตร

IF(FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1),ROW($C$4:$C$21)-ROW($C$4)+1)

หมายถึง หาก FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1) มีค่าเป็นจริง (ค่าเป็นจริงของสูตรนี้คือไม่เท่ากับ 0 ถ้าเป็น 0 ถือว่าเป็นเท็จ) ให้แสดงคำตอบเป็น ROW($C$4:$C$21)-ROW($C$4)+1 คือให้แสดงค่าลำดับเริ่มจาก 1 (อ่านเพิ่มเติมที่นี่่ครับ wordpress/large/) หากไม่เป็นจริงให้แสดงค่า False

จากสูตร

FREQUENCY(MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0),ROW($C$4:$C$21)-ROW($C$4)+1)

หมายถึงให้ค่าค่าความถี่ของ MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0) จาก ROW($C$4:$C$21)-ROW($C$4)+1 อ่านเพิ่มเติมที่นี่ครับ http://snasui.com/viewtopic.php?f=3&t=2221

จากสูตร

MATCH("~"&$C$4:$C$21,$C$5:$C$21&"",0)

หมายถึงให้หาว่า "~"&$C$4:$C$21 อยู่ในลำดับที่เท่าไรของ $C$5:$C$21&""

การแกะสูตรให้คลุมช่วงเซลล์ในสูตรที่เราสนใจแล้วกดแป้น F9 จะเป็นประเมินสูตรออกมาเป็นผลลัพธ์ให้เห็น หากต้องการยกเลิกให้กดแป้น Ctrl+Z หากต้องการยกเลิกทั้งหมดให้กดแป้น ESC ครับ
-ขอบคุณครับอาจารย์
Post Reply