: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

หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน Excel
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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
pori
Member
Member
Posts: 35
Joined: Tue Apr 03, 2012 9:31 am

หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#1

Post by pori »

ข้อมูลจาก database จะมีเลขสมาชิกซ้ำกันหลายแถว ดังนี้

เลขที่สมาชิก วันหมดรับประกัน
1001 10/1/2013
1001 25/8/2013
1002 14/2/2013
1003 9/9/2011
1003 31/12/9999
1003 16/5/2012
1004 19/7/2015
1004 31/12/9999


ถ้าต้องการค้นหาวันที่ที่นานที่สุดของแต่ละเลขสมาชิก ผลลัพธ์ดังนี้

เลขที่สมาชิก วันหมดรับประกัน
1001 25/8/2013
1002 14/2/2013
1003 31/12/9999
1004 31/12/9999

วันที่ 31/12/9999หมายถึง ไม่มีวันหมดอายุรับประกัน

อยากใช้สูตรธรรมดา ไม่สามารถใช้ VBA ได้ พอจะมีทางออกไหมคะ รบกวนเพื่อนๆท่านที่เชี่ยวชาญไขปัญหาข้อนี้ให้หน่อยจะขอบคณเป็นอย่างมากเลยค่ะ
หาค่าที่ต้องการจากข้อมูลที่ซ้ำๆกัน.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#2

Post by bank9597 »

:D ลองตามนี้ครับ

ที่ D4 คีย์ =COUNTIF($B$4:B4,B4) คัดลอกลงมา

ที่ F4 คีย์ =IF(ROWS($F$4:$F4)>COUNTIF($D$4:$D$11,1),"",INDEX($B$4:$B$11,SMALL(IF($D$4:$D$11=1,ROW($D$4:$D$11)-ROW($D$4)+1),ROWS($F$4:$F4)))) กด Ctrl+Shift+Enter หากกดถูกต้อง จะมีเครื่องหมาย {} คร่อมสูตรไว้ครับ จากนั้นคัดลอกสูตรลงมา

ที่ G4 คีย์ =IF(F4="","",MAX(IF($B$4:$B$11=$F4,$C$4:$C$11))) กด Ctrl+Shift+Enter คัดลอกสูตรลงมาครับ
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#3

Post by bank9597 »

:D แถมอีกสูตรครับ

ที่ F4 คีย์ =IFERROR(INDEX($B$4:$B$11,MATCH(0,INDEX(COUNTIF($F$3:$F3,$B$4:$B$11),0,0),0)),"") คัดลอกสูตรลงมา

ที่ G4 คีย์ =IF(F4="","",MAX(IF($B$4:$B$11=$F4,$C$4:$C$11)))
กด Ctrl+Shift+Enter คัดลอกสูตรลงมา
You do not have the required permissions to view the files attached to this post.
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#4

Post by snasui »

bank9597 wrote:=IFERROR(INDEX($B$4:$B$11,MATCH(0,INDEX(COUNTIF($F$3:$F3,$B$4:$B$11),0,0),0)),"")
:D มาช่วยเสริมเพื่อเพื่อนสมาชิกได้ทราบไปด้วยกันเกี่ยวกับสูตรการหาค่า Unique หรือสูตรที่หาค่าไม่ซ้ำ เพื่อจะได้เลือกใช้ได้ตรงกับความต้องการครับ

สูตรหาค่า Unique แบบนี้สามารถทำงานได้ดีในเรื่องความกระชับ เนื่องจากสูตรไม่ยาวมากสามารถทำความเข้าใจได้ง่าย แต่ข้อเสียคือหากใช้กับอักขระพิเศษอื่น เช่น เมื่อเซลล์ใด ๆ ในช่วง B4:B11 มีเครื่องหมาย > หรือ < จะทำให้สูตรแสดงผลผิดพลาด แต่สำหรับข้อมูลที่ถามมาตามกระทู้นี้สามารถนำไปใช้ได้ ไม่เกิดข้อผิดพลาดใด

สูตรที่รัดกุมที่สุดสูตรหนึ่งในการหาค่า Unique คือสูตรด้านล่างครับ

=IFERROR(INDEX($B$4:$B$11,SMALL(IF(FREQUENCY(MATCH("~"&$B$4:$B$11,$B$4:$B$11&"",0),ROW($B$4:$B$11)-ROW($B$4)+1),ROW($B$4:$B$11)-ROW($B$4)+1),ROWS(H$4:H4))),"")

Ctrl+Shift+Enter

โดยเครื่องหมาย "~" ที่เชื่อมเข้าไปในสูตรเป็นตัวที่ทำให้สูตรรู้จักอักขระพิเศษ และเครื่องหมาย "" ที่เชื่อมเข้าไปในสูตรจะเป็นการพิจารณาเซลล์ว่างเข้ามาด้วย ซึ่งปกติผมจะตัดอักขระพวกนี้ออกไปเนื่องหากเห็นว่าเพียงพอแล้ว
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#5

Post by bank9597 »

:D หาจุดบกพร่องของสูตรผมจนได้น่ะครับ อิอิ

ขอบคุณอาจารย์มากน่ะครับ ผมก็พลอยได้ความรู้ไปด้วย แต่ต้องทำความเข้าใจกันอีกเยอะเลยครับ เพราะเป็นสูตรที่ยากที่สุดแล้วสำหรับผม
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#6

Post by snasui »

bank9597 wrote:หาจุดบกพร่องของสูตรผมจนได้น่ะครับ
:lol: สูตรพวกนี้มีใช้กันมานานแล้วและผมก็ทราบข้อเด่นข้อด้อยมานานแล้วเช่นกัน ไม่ได้ตั้งใจหาข้อบกพร่อง เพราะไม่เช่นนั้นผมสามารถวิจารณ์ได้แทบทุกสูตรครับ :lol:
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#7

Post by bank9597 »

snasui wrote:
bank9597 wrote:หาจุดบกพร่องของสูตรผมจนได้น่ะครับ
:lol: สูตรพวกนี้มีใช้กันมานานแล้วและผมก็ทราบข้อเด่นข้อด้อยมานานแล้วเช่นกัน ไม่ได้ตั้งใจหาข้อบกพร่อง เพราะไม่เช่นนั้นผมสามารถวิจารณ์ได้แทบทุกสูตรครับ :lol:

แล้วกัน ดันรู้ก่อนหน้าเสียอีก อาจารย์เก่งเกินไปแล้วครับ :cry:
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
pori
Member
Member
Posts: 35
Joined: Tue Apr 03, 2012 9:31 am

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#8

Post by pori »

snasui wrote: สูตรที่รัดกุมที่สุดสูตรหนึ่งในการหาค่า Unique คือสูตรด้านล่างครับ

=IFERROR(INDEX($B$4:$B$11,SMALL(IF(FREQUENCY(MATCH("~"&$B$4:$B$11,$B$4:$B$11&"",0),ROW($B$4:$B$11)-ROW($B$4)+1),ROW($B$4:$B$11)-ROW($B$4)+1),ROWS(H$4:H4))),"")
สูตรยาวมากมายค่ะ ช่วยอธิบายการทำงานของแต่ละสูตรหน่อยได้ไหมคะ index พอเข้าใจ แต่ สงสัยว่า ทำไมต้องใช้ small, frequency แล้วที่ต้องมี row ด้วยนี่หมายความว่ายังไงเหรอคะ
พอดีเคยเห็นสูตรยาวๆแบบนี้มาบ้างแต่งงก็เลยไม่เคยเอามาใช้เลยค่ะ

ขอบคุณคุณ bank และอาจารย์มากๆค่ะ เก่งมากๆเลย สูตรอลังการงานสร้าง ช่วยประโยชน์ได้เยอะมากจริงๆค่ะ

ป.ล.ลองเอาสูตรคุณ bank ไปทดลองได้ผลที่ต้องการค่ะ แต่สูตรของอาจารย์มันคืนค่าผลลัพธ์ออกมาเป็นเลขที่สมาชิก ไม่ใช่วันที่หมดอายุที่ต้องการค่ะ (หรือดิฉันวางสูตรผิดเองค่ะ งงเล็กน้อย )
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#9

Post by snasui »

:D ลองศึกษาแต่ละฟังก์ชั่นให้เข้าใจก่อนตาม Link นี้ครับ http://office.microsoft.com/th-th/excel ... aspx?CTT=1 จากนั้นลองแปลผลดู ติดตรงไหนค่อยมาถามกันต่อครับ

สำหรับ Frequency เป็นฟังก์ชั่นที่เข้าใจยาก เป็นการหาความถี่ของข้อมูล โดยมีการกำหนดให้ว่าหาค่าความถี่จากชุดข้อมูลใด ส่วนฟังก์ชั่นที่เหลือคิดว่าไม่ยากนัก

สูตรที่ผมเขียนนั้นเป็นสูตร Array นอกจากจะเข้าใจแต่ละฟังก์ชั่นแล้วต้องเข้าใจความเป็น Array ด้วย สามารถทำความเข้าใจคร่าว ๆ ได้จากความเห็นที่ 3 ใน Link นี้ครับ http://www.atriumtech.com/cgi-bin/hilig ... 07988.html
User avatar
snasui
Site Admin
Site Admin
Posts: 31256
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#10

Post by snasui »

pori wrote:ป.ล.ลองเอาสูตรคุณ bank ไปทดลองได้ผลที่ต้องการค่ะ แต่สูตรของอาจารย์มันคืนค่าผลลัพธ์ออกมาเป็นเลขที่สมาชิก ไม่ใช่วันที่หมดอายุที่ต้องการค่ะ (หรือดิฉันวางสูตรผิดเองค่ะ งงเล็กน้อย )
:lol: ลองลำดับความเข้าใจใหม่ครับว่าผมมาเสริมเฉพาะสูตรใด
pori
Member
Member
Posts: 35
Joined: Tue Apr 03, 2012 9:31 am

Re: หาค่าที่ต้องการจากข้อมูลที่ซ้ำกัน

#11

Post by pori »

อ้าว อ่านเร็วเกิน อายจังเลยค่ะ ขออภัยด้วย :oops: ก่อนอื่นขอไปศึกษาสูตร Array เพื่อเพิ่มความเข้าใจหน่อย :) ขอบคุณสำหรับคำตอบมากๆๆนะคะ ดีใจที่มีเว็บนี้ให้ปรึกษาได้ ไม่งั้น สำหรับคนรู้ excel งูๆปลาๆอย่างดิฉันคงมืดแปดด้านไปหลายวันเลย ขอบคุณอีกครั้งค่ะ
Post Reply