Page 1 of 2
ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 8:04 pm
by Zambea
ถ้าคีย์ ม ที่ I3 ให้เป็นแบบตารางขวามือ ต้องขึยนสูตรอย่างไรครับ
4-3-20.xlsx
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 8:29 pm
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
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 8:33 pm
by Zambea
ได้คำตอบตรงตามต้องการ ขอบคุณมากครับ
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 8:35 pm
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 ไปขวาและลงล่าง
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 8:43 pm
by Zambea
ขอบคุณมากๆๆครับ อีกครั้งครับ
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 9:01 pm
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 อย่างนี้ไหมครับ
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 9:35 pm
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
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 9:42 pm
by Zambea
ขออนุญาตถามเพิ่มอีกนิดนะครับ ถ้าผมเพิ่มชีทอีกชีทนึงมาโดยใช้ชีทที่สองเรียกใช้สูตร ส่วนข้อมูลอยู่ที่ชีทเดิม คือชีทที่หนึ่ง ต้องปรับใช้สูตรอย่างไรครับ
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 9:50 pm
by norkaz
ใช้หลักการเดียวกันครับ ถ้าเขียนข้ามชีทไม่ถนัด ให้ทำที่ชีทเดียวกับ ฐานข้อมูลตามตัวอย่างที่แสดงไป
จะเอาไปวางข้ามชีทให้ CUT (Ctrl + X) สูตรไปวาง ( ไม่ใช่ Copy)
Norkaz
Re: ขอสูตรดึงข้อมูลครับ
Posted: Wed Mar 04, 2020 9:51 pm
by Zambea
ขอบคุณมากครับอาจารย์
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 6:01 pm
by Zambea
อาจารย์ครับ ขออนุญาติถามเพิ่มนะครับ ผมเพิ่มข้อมูลเช้าไปที่ตารางแรก แต่ตารางที่สองไม่มาครับ ต้องปรับสูตรอย่างไรครับ ผมแนบไฟล์มาแล้วครับ
4-3-20.xlsx
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 6:23 pm
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 หรือให้เท่ากับจำนวนแถวของข้อมูล
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 6:24 pm
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 ไปขวา และลงล่าง
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 6:27 pm
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
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 6:48 pm
by Zambea
ต้องการให้ข้อมูลเพิ่มเองโดยอัตโนมัติครับอาจารย์ ผมลอง insert table แล้วแต่มันไม่เพิ่มครับอาจารย์
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 7:06 pm
by Zambea
4-3-20.xlsx
รบกวนถามอีกนะครับอาจารย์ หนูลองเพิ่มเพิ่มแถวแล้ว แต่ตอนที่ i3 ไม่มีข้อมูล ตารางทีสองมันไม่เป็นค่าว่างครับ หนูต้องการให้ตารางทีสองเป็นค่าว่าง ถ้า i3ไม่มีข้อมูลครับอาจารย์
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 7:34 pm
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
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sat Mar 07, 2020 7:38 pm
by Zambea
ขอบคุณมากๆๆครับอาจารย์ทุกท่านครับ
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sun Mar 08, 2020 6:21 pm
by Zambea
เาจารย์ครับ หนูขออนุญาตถามอีกหนึ่งคำถามนะครับ ถ้าชีทสองหนูไม่เขีนยหัวตารางรอไว้ แล้วหนูตัองการเอาหัวตารางมาด้วยต้องปรับสูตรอย่างไรครับอาจารย์
Re: ขอสูตรดึงข้อมูลครับ
Posted: Sun Mar 08, 2020 9:49 pm
by snasui
กรุณาแนบไฟล์ล่าสุดมาด้วย อธิบายสิ่งที่ต้องการว่าต้องการให้เป็นแบบไหน อย่างไร จะได้ตอบต่อไปจากนั้นครับ