: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

ปรับปรุงสูตร ให้ทีครับ

#1

Post by seeper »

เรียน อาจารย์ครับ

แก้ไขสูตรให้ทีครับหรือมีสูตรอื่นไหมครับ หลักการคือช่อง h จะเป็นช่องรับข้อมูลอาจมีข้อมูลที่ซ้ำกัน แต่จะนับข้อมูลเฉพาะที่ไม่ซ้ำกันและโชว์ข้อมูลทั้งหมดที่ไม่ซ้ำในช่อง i

จากตัวอย่างที่ช่อง h มีข้อมูล 9 ตัวแต่ช่อง i กลับแสดงแค่ 8 ตัว

ช่วยแก้ไขด้วยนะครับ :flw: :flw: :flw:
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3792
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: ปรับปรุงสูตร ให้ทีครับ

#2

Post by puriwutpokin »

ที่H3=SUMPRODUCT(1/COUNTIF(OFFSET($H$4,0,0,COUNTA($H$4:$H$50),1),OFFSET($H$4,0,0,COUNTA($H$4:$H$50),1)))
ที่ I4=IFERROR(IF(ROWS($I$4:I4)>$H$3,"",INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(MATCH($H$4:$H$50,$H$4:$H$50,0),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4)))),"") ctrl+shift+enter
:shock: :roll: :D
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#3

Post by seeper »

ขอบคุณครับ :thup: :thup: :cp:
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#4

Post by seeper »

อีกนิดครับ ถ้าเปลี่ยนจาก 0 ที่ช่อง H เป็น ="" มันไม่ได้อะครับแก้อย่างไรครับ
User avatar
puriwutpokin
Guru
Guru
Posts: 3792
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: ปรับปรุงสูตร ให้ทีครับ

#5

Post by puriwutpokin »

ตามรูปไม่ต้องการให้แสดงค่าศูนย์ ไปที่เมนู option แล้วติ๊กเครื่องหมายถูกออกครับ
You do not have the required permissions to view the files attached to this post.
:shock: :roll: :D
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ปรับปรุงสูตร ให้ทีครับ

#6

Post by snasui »

seeper wrote:อีกนิดครับ ถ้าเปลี่ยนจาก 0 ที่ช่อง H เป็น ="" มันไม่ได้อะครับแก้อย่างไรครับ
:D ลองปรับสูตรเป็นด้านล่างครับ

Code: Select all

=IFERROR(INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))),"")
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#7

Post by seeper »

โอ้ว มาย ก้อด ได้แว้วๆ สุดยอดเบย ขอบคุณครับ :cp: :cp:
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ปรับปรุงสูตร ให้ทีครับ

#8

Post by snasui »

seeper wrote:โอ้ว มาย ก้อด ได้แว้วๆ สุดยอดเบย ขอบคุณครับ :cp: :cp:
:shock: คุณกำลังทำผิดกฎข้อ 1 ด้านบน :roll: ครับ
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#9

Post by seeper »

อ่าว ขอโทษครับ ดีใจไปหน่อย ^^
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#10

Post by seeper »

อาจารย์ว่างพอจะแปล เป็นภาษาอ่านให้ผมได้ไหมครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ปรับปรุงสูตร ให้ทีครับ

#11

Post by snasui »

:D สูตรประเภทนี้ยากต่อการทำความเข้าใจ ต้องมีความเข้าใจเกี่ยวกับ Array เป็นพื้นฐานอย่างดีมาก่อนครับ
  1. จากสูตร =IFERROR(INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))),"")

    หมายถึง หาก INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))) เป็นค่าผิดพลาดให้แสดงค่าว่าง
  2. จากสูตร INDEX($H$4:$H$50,SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4)))

    หมายถึง จากช่วงเซลล์ $H$4:$H$50 ให้นำลำดับที่เป็นผลลัพธ์ของ SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4)) มาแสดง หากผลลัพธ์เป็น 10 หมายถึง จากช่วง $H$4:$H$50 ให้นำลำดับที่ 10 มาแสดง
  3. จากสูตร SMALL(IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1),ROWS($I$4:I4))

    หมายถึง จากผลลัพธ์สูตร IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1) ให้นำค่าที่น้อยที่สุดในลำดับที่เป็นผลลัพธ์ของ ROWS($I$4:I4) มาแสดง ซึ่งหากผลลัพธ์ของ ROWS($I$4:I4) เป็น 5 หมายถึงให้นำค่าที่น้อยที่สุดในลำดับที่ 5 มาแสดง
  4. จากสูตร IF(FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1),ROW($H$4:$H$50)-ROW($H$4)+1)

    หมายถึง หาก FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1) เป็นค่าตัวเลขที่ไม่ใช่ 0 ให้แสดงค่าลำดับเริ่มจาก 1 เช่น {1,2,3...}
  5. จากสูตร FREQUENCY(IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))),ROW($H$4:$H$50)-ROW($H$4)+1)

    หมายถึงให้หาค่าความถึ่จากผลลัพธ์ของ IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))) กับ ROW($H$4:$H$50)-ROW($H$4)+1 ศึกษาเพิ่มเติมจาก Link นี้ครับ viewtopic.php?f=3&t=2221
  6. จากสูตร IF($H$4:$H$50<>0,IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0)))

    หมายถึง หาก $H$4:$H$50<>0 เป็นจริง ให้แสดงผลลัพธ์ของ IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0)) หากไม่เป็นจริงให้แสดงค่า false
  7. จากสูตร IF($H$4:$H$50<>"",MATCH($H$4:$H$50,$H$4:$H$50,0))

    หมายถึง หาก $H$4:$H$50<>"" เป็นจริงให้แสดงผลลัพธ์ของ MATCH($H$4:$H$50,$H$4:$H$50,0) หากไม่เป็นจริงให้แสดงค่า false
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#12

Post by seeper »

ขอบคุณครับนั่งทำความเข้าใจก่อน
seeper
Member
Member
Posts: 63
Joined: Fri Jul 25, 2014 4:56 pm

Re: ปรับปรุงสูตร ให้ทีครับ

#13

Post by seeper »

ตรวจสอบคำอ่านนะครับ คือเรียงลำดับในช่วงที่มีข้อมูล 1,2,3...,n แล้วตรวจสอบหาลำดับที่ซ้ำกันโดยแสดงแต่ลำดับที่มีค่าน้อยที่สุดหลังจากนั้นแปลงลำดับเป็นข้อมูลในช่อง H ที่มีข้อมูลลำดับเดียวกัน


ผมพอเข้าใจถูกไหมครับอาจารย์ช่วยชี้แนะผมที
User avatar
snasui
Site Admin
Site Admin
Posts: 30919
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ปรับปรุงสูตร ให้ทีครับ

#14

Post by snasui »

:D เป็นการให้ค่าลำดับข้อมูลตามเงือนไข คือเข้าเงื่อนไขจึงจะให้ค่าลำดับ ไม่เข้าเงื่อนไขก็ไม่ให้ค่าลำดับ จากนั้น List ค่าที่ได้ออกมาตามลำดับที่ให้ไว้ครับ
Post Reply