: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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

ดึงข้อมูลยังไงครับ

#1

Post by zerius »

ผมต้องการดึงข้อมูลตามไฟล์ที่แนบไปครับ ผมทำมาหลายวันแล้วครับ จากการศึกษาในเว็ปอาจารย์แต่ไม่ได้จริงๆครับ
รบกวนด้วยครับ ขอบคุณครับ
You do not have the required permissions to view the files attached to this post.
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: ดึงข้อมูลยังไงครับ

#2

Post by snasui »

:D ช่วยกรอกตัวอย่างคำตอบที่ต้องการมาด้วยครับ และหากอธิบายวิธีการที่จะให้ได้มารายการนั้น ๆ สักรายการก็จะยิ่งทำให้เข้าใจมากขึ้นครับ
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#3

Post by zerius »

ครับ มันเหมือนว่าแยกข้อมูลออกจากกันน่ะครับ อาจารย์
You do not have the required permissions to view the files attached to this post.
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: ดึงข้อมูลยังไงครับ

#4

Post by snasui »

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

ที่ชีท FUNCTION
  1. เซลล์ I1 คีย์ค่าที่ต้องการ List ข้อมูล ตามตัวอย่างคีย์ DF
  2. เซลล์ J1 คีย์สูตรเพื่อนับว่ามีค่า DF จำนวนกี่บรรทัด
    =COUNTIF(DATA!E2:E51,I1)
    Enter
  3. ที่เซลล์ I3 คีย์สูตรเพื่อ List ลำดับรายการที่พบ
    =IF(ROWS(I$4:I4)>$J$1,"",SMALL(IF(DATA!$E$2:$E$51=$I$1,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(I$3:I3)))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  4. ที่เซลล์ B3 คีย์สูตรเพื่อให้ลำดับรายการ
    =IF($I3<>"",ROWS(B$3:B3),"")
    Enter > Copy ลงด้านล่าง
  5. ที่ C3 คีย์สูตรเพื่อดึงค่า Part No. มาแสดง
    =INDEX(DATA!$B$2:$I$51,$I3,MATCH(C$2,DATA!$B$1:$I$1,0))
    Enter > Copy ลงด้านล่าง และ Copy ไปยังคอลัมน์อืน ๆ เพื่อแสดงค่าตามต้องการ
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#5

Post by zerius »

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

ขอบคุณมากครับ ถ้ามีปัญหาอีกผมจะมารบกวนใหม่นะครับ ขอบคุณครับผม
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#6

Post by zerius »

พบปัญหาแล้วครับอาจารย์ ถ้าชุดข้อมูลไม่เรียงค่าล่ะครับ คือมันเรียงไม่ได้น่ะครับ ต้องอ้างอิงตำแหน่งของ Cus. Part No. กับ Part No. จะต้องทำอย่างไรครับ ผมลองส่งไฟล์แนบมาให้ดูแล้วครับ

ขอบพระคุณมากครับ
You do not have the required permissions to view the files attached to this post.
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: ดึงข้อมูลยังไงครับ

#7

Post by snasui »

:D ไม่เข้าใจครับ สูตรที่ผมให้ไปนั้น ไม่จำเป็นต้องเรียงชุดข้อมูลครับ
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#8

Post by zerius »

คือผมลองเปลี่ยนค่าใน sheet DATA ช่อง Volume ครับ ให้มันไม่เรียง แล้วมันดึงข้อมูลไม่ได้ครับ จากฟังก์ชั่นที่อาจารย์ให้มาน่ะครับ เดี๋ยวผมจะลองดูอีกทีนะครับ วันนี้นอนก่อนเดี๋ยวตื่นไม่ทัน
ขอบคุณอย่างยิ่งครับอาจารย์ ถ้าไม่ได้เดี๋ยวผมจะรบกวนใหม่ครับ ขอบพระคุณครับผม
You do not have the required permissions to view the files attached to this post.
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: ดึงข้อมูลยังไงครับ

#9

Post by snasui »

:lol: ไม่เห็นตัวอย่างจากไฟล์ที่แนบมาล่าสุดครับ ขอย้ำว่า ต้นแหล่งไม่จำเป็นต้องเรียงครับ
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: ดึงข้อมูลยังไงครับ

#10

Post by snasui »

:D ถ้าหมายถึงว่าให้ดึง Volume มาด้วยก็ตามไฟล์แนบครับ เนื่องจาก Volume เดิมนั้นไม่ใช่ Volume จากชีท Function เพียงแต่ใช้เป็นตัวระบุบรรทัดในการดึงข้อมูลเท่านั้น สำหรับไฟล์แนบผมได้แยกออกมาต่างหากแล้ว
You do not have the required permissions to view the files attached to this post.
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#11

Post by zerius »

อาจารย์ครับ จากฟังก์ชั่น index + match มีโอกาสเป็นไปได้ไหมครับ ที่จะเกิดการดึงผิด เช่น ผมต้องการดึงข้อมูลจาก sheet DATA ใน Column Part No. แต่ได้ข้อมูลใน Column Cus. Part No. มาแทน คือมันเลื่อนไปทางขวาครับ ผมพยายามแก้แล้ว แต่ก็แก้ไม่ได้สักที
ตอนนี้ผมใส่ไฟล์แนบไปไม่ได้ครับผม เพราะไฟล์ถูกเข้ารหัสไว้จึงไม่สามารถแนบไฟล์เพื่อให้ง่ายต่อการสื่อสารได้ครับ ถ้าอาจารย์ไม่เข้าใจที่ผมอธิบายผมจะกลับไปแล้วกรอกข้อมูลใหม่ครับ แล้วจะสอบถามอีกทีครับ ขอบพระคุณมากครับ
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: ดึงข้อมูลยังไงครับ

#12

Post by snasui »

:D ถ้าเขียนสูตรผิดมันก็ดึงผิดเป็นเรื่องปกติครับ ถ้าสูตรถูกโอกาสผิดแทบจะไม่มีครับ

ไฟล์ถูกเข้ารหัสไม่ใช่ปัญหาครับ การส่งไฟล์มาถามตอบให้ทำตัวอย่างขึ้นมาใหม่โดยต้องเป็นตัวแทนของข้อมูลจริง ไม่ใช่ส่งมาครบทุกข้อมูลครับ และอย่าส่งไฟล์ต้นฉบับมาครับ :mrgreen:
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#13

Post by zerius »

ตอนนี้ผมทำได้แล้วครับ ขอบพระคุณอาจารย์มากครับผม แต่ผมอยากจะขอรบกวนเวลาสักนิด เรื่องฟังก์ชั่นที่อาจารย์ให้มาที่ผมไม่เข้าใจ อันนี้เลยครับ
=IF(ROWS(J$5:J5)>$D$2,"",SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4)))
รบกวนด้วยนะครับ
ขอบพระคุณครับ
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: ดึงข้อมูลยังไงครับ

#14

Post by snasui »

:D สูตรนี้เป็นสูตรที่ซับซ้อนเนื่องจากเป็นสูตร Array ครับ ผมจะอธิบายสูตรหลัก ๆ ตามด้านล่างครับ

จากสูตร =IF(ROWS(J$5:J5)>$D$2,"",SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4)))

ความหมายคือ
  1. ถ้า ROWS(J$5:J5)>$D$2 เป็นจริงแล้วให้แสดงค่า "" ซึ่งก็คือค่าว่าง
  2. ถ้า ROWS(J$5:J5)>$D$2 ไม่เป็นจริงให้แสดงผลลัพธ์ของสูตร SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4))
จากสูตร SMALL(IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1),ROWS(J$4:J4))
ความหมายคือ
  1. ให้หาค่าที่้น้อยที่สุดเป็นลำดับที่ได้จากค่าของ ROWS(J$4:J4)
  2. จากช่วงข้อมูลที่ได้จากผลลัพธ์ของ IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1)
จากสูตร IF(DATA!$E$2:$E$51=$C$2,ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1)
ความหมายคือ
  1. ถ้า DATA!$E$2:$E$51=$C$2 เป็นจริงให้แสดงค่าลำดับโดยเริ่มจาก 1 เสมอ ซึ่งจะได้จากผลลัพธ์ของ ROW(DATA!$E$2:$E$51)-ROW(DATA!$E$2)+1 และค่าสุดท้ายจะเป็นเท่าใดก็แล้วแต่ช่วงข้อมูลนั้นครอบคลุมปริมาณข้อมูลจำนวนกี่บรรทัด
  2. ถ้าไม่เป็นจริงก็แสดงค่า False ซึ่งไม่ได้ระบุไว้ในสูตร แต่สูตรจะให้ผลลัพธ์เป็นค่า False อัตโนมัติ
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#15

Post by zerius »

ขอบพระคุณอาจารย์มากครับ ว่าแล้วก็ศึกษาต่อก่อนครับ ถ้ามีอะไรสงสัยผมจะมารบกวนใหม่นะครับ
ขอบพระคุณอย่างยิ่งครับ
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#16

Post by zerius »

อาจารย์ครับ
$D$4
D$4
$D4
ต่างกันยังไงหรอครับ ขอโทษล่วงหน้าครับ ถ้าผมถามอะไรที่มันโง่ไปหน่อยครับ ผมพยายามหาคำตอบใน google แล้วครับ แต่ไม่ได้คำตอบที่ต้องการเลยครับ
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: ดึงข้อมูลยังไงครับ

#17

Post by snasui »

:D ถามได้ทุกเรื่องที่เกี่ยวกับ Excel ครับ จะยากหรือง่ายก็ไม่ต้องกังวลครับ

สำหรับ $ ใน Excel ที่ใช้กับสูตรต่าง ๆ นั้นมีความหมายว่าให้ตรึงหรือ Lock ไว้ครับ ยกตัวอย่างตามที่ถามมา
  1. $D$4 เป็นการ Lock คอลัมน์ D และบรรทัดที่ 4 หรือก็คือ D4 สูตรที่อ้างถึงค่านี้จะนำค่าในเซลล์ D4 ไปใช้ตลอดกาล ไม่เปลี่ยนเป็นเซลล์อื่น
  2. D$4 เป็นการ Lock เฉพาะบรรทัดที่ 4 สูตรที่อ้างอิงถึงค่านี้จะนำบรรทัดที่ 4 ไปใช้ตลอดกาล แต่คอลัมน์นั้นสามารถที่จะเปลี่ยนแปลงไปตามตำแหน่งที่นำสูตรไปวาง
  3. $D4 เป็นการ Lock เฉาพะคอลัมน์ D สูตรที่อ้างอิงถึงค่านี้จะนำคอลัมน์ D ไปใช้ตลอดกาลแต่บรรทัดสามารถเปลี่ยนแปลงไปตามตำแหน่งที่นำสูตรไปวาง
  4. D4 ไม่มีการ Lock ตำแหน่ง สูตรที่อ้างอิงถึงค่านี้จะเปลี่ยนแปลงไปได้ทั้งคอลัมน์และทั้งบรรทัด
ลำพังเพียงการอธิบายจะไม่เห็นภาพจริง ต้องลงมือเขียนลงใน Excel แล้วทดสอบโดยลองตามนี้ครับ
  1. คลุมเซลล์ D4:F6
  2. คีย์สูตร = Rand() จากนั้นกดแป้น Ctrl ค้างไว้แล้วกดแป้น Enter ตามมา จะเป็นการสุ่มค่าตัวเลขและแสดงผลอยู่ในเซลล์ D4:F6
  3. ที่เซลล์ใด ๆ คีย์สูตร =$D$4 (ตามข้อ 1 ด้านบน) แล้ว Copy ไปทางซ้าย, ขวา, บนและล่าง จากนั้นสังเกตดูผลลัพธ์
  4. เปลี่ยนการคีย์ให้อ้างอิงตามข้อ 2-4 ตามด้านบนแล้ว Copy ไปทางซ้าย, ขวา, บนและล่าง จากนั้นสังเกตดูผลลัพธ์
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#18

Post by zerius »

ขอบพระคุณมากครับอาจารย์ :o
zerius
Member
Member
Posts: 27
Joined: Wed Jan 18, 2012 3:23 pm

Re: ดึงข้อมูลยังไงครับ

#19

Post by zerius »

อาจารย์กลับมาแล้ว ดีใจมากเลยครับ ผมมีเรื่องจะรบกวนอีกแล้วครับ ตามไฟล์แนบเลยครับ
ขอบพระคุณมากเลยครับ :D
You do not have the required permissions to view the files attached to this post.
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 ลองตามไฟล์แนบครับ
  1. เซลล์ D2 คีย์สูตรเพื่อนับจำนวนที่พบ
    =SUMPRODUCT(--(B2=DATA!B4:B63),--(DATA!E4:E63="ASSY"))
    Enter
  2. เซลล์ A4 คีย์สูตรเพื่อหาลำดับที่พบข้อมูล
    =IF(ROWS(A$4:A4)>$D$2,"",SMALL(IF($B$2=DATA!$B$4:$B$63,IF(DATA!$E$4:$E$63="ASSY",ROW(DATA!$B$4:$B$63)-ROW(DATA!$B$4)+1)),ROWS(A$4:A4)))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  3. เซลล์ B4 คีย์สูตรเพื่อนำข้อมูลมาแสดง
    =INDEX(DATA!C$4:C$63,$A4)
    Enter > Copy ไปทางขวาและลงด้านล่าง
You do not have the required permissions to view the files attached to this post.
Post Reply