: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

ขอสูตรดึงข้อมูลครับ

#1

Post by Zambea »

ถ้าคีย์ ม ที่ I3 ให้เป็นแบบตารางขวามือ ต้องขึยนสูตรอย่างไรครับ
4-3-20.xlsx
You do not have the required permissions to view the files attached to this post.
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#2

Post by norkaz »

J7
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$18)/($I$3=$B$7:$B$18),ROW(1:1))),"")
Copy ไปขวา และลงล่าง

I7
=IF(J7="","",ROW(1:1))
Copy ลงล่าง

Norkaz
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#3

Post by Zambea »

ได้คำตอบตรงตามต้องการ ขอบคุณมากครับ
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#4

Post by norkaz »

ถ้าไม่มี ฟังก์ชั่น Aggregate
J7
=IFERROR(INDEX(B:B,SMALL(IF($I$3=$B$7:$B$18,ROW($7:$18)),ROW(1:1))),"")

Ctrl + Shift -> Enter
Copy ไปขวาและลงล่าง
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#5

Post by Zambea »

ขอบคุณมากๆๆครับ อีกครั้งครับ
Student01
Member
Member
Posts: 70
Joined: Mon Mar 25, 2019 3:11 pm

Re: ขอสูตรดึงข้อมูลครับ

#6

Post by Student01 »

norkaz wrote: Wed Mar 04, 2020 8:35 pm ถ้าไม่มี ฟังก์ชั่น Aggregate
J7
=IFERROR(INDEX(B:B,SMALL(IF($I$3=$B$7:$B$18,ROW($7:$18)),ROW(1:1))),"")

Ctrl + Shift -> Enter
Copy ไปขวาและลงล่าง
ถ้าไม่มี ฟังก์ชั่น Aggregate
และไม่ใช้ array

พอจะมีวิธีอื่นนอกจาก 2 อย่างนี้ไหมครับ
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#7

Post by norkaz »

หลักการคือ การเลี่ยง Array โดยใช้ Aggregate และการใช้ Array ไปตรงๆ ซึ่งทำได้หลายวิธี
จากที่สอบถามมา หากไม่ใช้ Aggregate และไม่ใช้ Array เท่าที่พอจะนึกออก คือใช้คอลัมน์มาช่วย

H7
=IF($I$3=B7,ROW(7:7),"")
Enter -> Copy ลงล่าง

J7
=INDEX(B:B,SMALL($H$7:$H$18,ROW(1:1)))
Enter -> Copy ไปขวา และลงล่าง

หากมีวิธีอื่นๆ ตามที่สมาชิกสอบถามมา อาจารย์ท่านอื่นกรุณาช่วยแนะนำด้วยครับ

Norkaz
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#8

Post by Zambea »

ขออนุญาตถามเพิ่มอีกนิดนะครับ ถ้าผมเพิ่มชีทอีกชีทนึงมาโดยใช้ชีทที่สองเรียกใช้สูตร ส่วนข้อมูลอยู่ที่ชีทเดิม คือชีทที่หนึ่ง ต้องปรับใช้สูตรอย่างไรครับ
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#9

Post by norkaz »

ใช้หลักการเดียวกันครับ ถ้าเขียนข้ามชีทไม่ถนัด ให้ทำที่ชีทเดียวกับ ฐานข้อมูลตามตัวอย่างที่แสดงไป
จะเอาไปวางข้ามชีทให้ CUT (Ctrl + X) สูตรไปวาง ( ไม่ใช่ Copy)

Norkaz
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#10

Post by Zambea »

ขอบคุณมากครับอาจารย์
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#11

Post by Zambea »

อาจารย์ครับ ขออนุญาติถามเพิ่มนะครับ ผมเพิ่มข้อมูลเช้าไปที่ตารางแรก แต่ตารางที่สองไม่มาครับ ต้องปรับสูตรอย่างไรครับ ผมแนบไฟล์มาแล้วครับ
4-3-20.xlsx
You do not have the required permissions to view the files attached to this post.
Student01
Member
Member
Posts: 70
Joined: Mon Mar 25, 2019 3:11 pm

Re: ขอสูตรดึงข้อมูลครับ

#12

Post by Student01 »

เดิม J7 =IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$18)/($I$3=$B$7:$B$18),ROW(1:1))),"")

แก้ไขเป็น =IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$30)/($I$3=$B$7:$B$30),ROW(1:1))),"")

คือการเปลี่ยน row 18 ให้เป็น 30 หรือให้เท่ากับจำนวนแถวของข้อมูล
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#13

Post by norkaz »

ปรับช่วงข้อมูล จากแถวที่ 18 เป็นแถวที่ 30 หรือเผื่อไปเยอะๆ เช่น 500

J2
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$18)/($I$3=$B$7:$B$18),ROW(1:1))),"")

แก้เป็น
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$30)/($I$3=$B$7:$B$30),ROW(1:1))),"")
Enter -> Copy ไปขวา และลงล่าง
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#14

Post by norkaz »

ปรับช่วงข้อมูล จากแถวที่ 18 เป็นแถวที่ 30 หรือเผื่อไปเยอะๆ เช่น 500

J2 แก้เป็น J7 ดูไฟล์กลับไปมา ลุง งง ขออภัย ลุงแก่เลี้ยว

=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$18)/($I$3=$B$7:$B$18),ROW(1:1))),"")

แก้เป็น
=IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$30)/($I$3=$B$7:$B$30),ROW(1:1))),"")
Enter -> Copy ไปขวา และลงล่าง

Norkaz
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#15

Post by Zambea »

ต้องการให้ข้อมูลเพิ่มเองโดยอัตโนมัติครับอาจารย์ ผมลอง insert table แล้วแต่มันไม่เพิ่มครับอาจารย์
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#16

Post by Zambea »

4-3-20.xlsx
รบกวนถามอีกนะครับอาจารย์ หนูลองเพิ่มเพิ่มแถวแล้ว แต่ตอนที่ i3 ไม่มีข้อมูล ตารางทีสองมันไม่เป็นค่าว่างครับ หนูต้องการให้ตารางทีสองเป็นค่าว่าง ถ้า i3ไม่มีข้อมูลครับอาจารย์
You do not have the required permissions to view the files attached to this post.
User avatar
norkaz
Gold
Gold
Posts: 1736
Joined: Wed Jan 12, 2011 7:59 pm
Excel Ver: 2013,365

Re: ขอสูตรดึงข้อมูลครับ

#17

Post by norkaz »

ไหนๆ สูตรเดิมก็เขียนไปแล้ว ใช้ IF แบบเรียบๆไปดักไว้ก่อนครับ

๋J7
=IF($I$3="","",IFERROR(INDEX(B:B,AGGREGATE(15,6,ROW($7:$300)/($I$3=$B$7:$B$300),ROW(1:1))),""))
Enter -> Copy ไปขวา และลงล่าง

==========
ขอเดาครับจากที่สอบถามการใช้กับ Data Table

การสร้างสูตรตอนแรก ไม่ได้สร้างจาก Data Table แล้วใช้สูตรนี้กับ Data Table ภายหลัง
ถ้าตามนี้ ก็เผื่อช่วงของ Range ไปเยอะๆ ตั้งแต่แรกเลยจะสะดวกกว่าครับ

ผมไม่ได้หมายถึง วิธีไหนดีกว่ากัน หรือวิธีไหนไม่ดีไปกว่ากัน ใน Excel นั้น ถ้าใช้แล้วสะดวก สูตรไม่เยิ่นเย้อจนเกินไป ทุกวิธีล้วนถูกต้องทั้งสิ้นครับ เหมือนที่ อาจารย์แต่ละท่าน หรือเพื่อนสมาชิกที่เข้ามาช่วยกันตอบ ก็เขียนสูตร ที่แตกต่างกัน แต่ยังคง "หลักการเดียวกัน" ให้สอดคล้องกับโจทย์ ที่เพื่อนสมาชิกสอบถาม โจทย์ข้อเดียวกัน บางครั้งสามารถเขียนสูตรที่แตกต่างกันได้มากกว่า 22 วิธี โดยคำตอบยังคงเท่ากันไม่เปลี่ยนแปลง

สำหรับผมแล้วการได้มองสูตร ที่อาจารย์หลายๆท่านเขียน แม้แตกต่างกัน แต่ก็ให้ ความรู้และมุมมองใหม่ๆ ได้เกือบทุกกระทู้จริงๆ มุมมองใหม่ๆนี่เอง ที่ทำให้ความรู้และทักษะ การใช้พัฒนา อย่างน้อยนำไปใช้กับโจทย์ ที่ปกติคิดไม่ออก ในบางมุมมองของสูตร ที่อาจารย์ แต่ละท่านเขียน สามารถปรับใช้กับโจทย์ข้ออื่นๆได้ โดยอาศัยการประะยุกต์ และใช้เทคนิค ที่อาจารย์แต่ละท่านเขียนสูตรขึ้นมา

ขอขอบคุณอาจารย์แต่ละท่าน และเพื่อนสมาชิกที่สละเวลามาให้ความรู้ครับ
Norkaz
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#18

Post by Zambea »

ขอบคุณมากๆๆครับอาจารย์ทุกท่านครับ
Zambea
Member
Member
Posts: 81
Joined: Sat May 20, 2017 1:42 pm

Re: ขอสูตรดึงข้อมูลครับ

#19

Post by Zambea »

เาจารย์ครับ หนูขออนุญาตถามอีกหนึ่งคำถามนะครับ ถ้าชีทสองหนูไม่เขีนยหัวตารางรอไว้ แล้วหนูตัองการเอาหัวตารางมาด้วยต้องปรับสูตรอย่างไรครับอาจารย์ 😁
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: ขอสูตรดึงข้อมูลครับ

#20

Post by snasui »

:D กรุณาแนบไฟล์ล่าสุดมาด้วย อธิบายสิ่งที่ต้องการว่าต้องการให้เป็นแบบไหน อย่างไร จะได้ตอบต่อไปจากนั้นครับ
Post Reply