: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

สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
gamesavant
Member
Member
Posts: 2
Joined: Tue Oct 15, 2019 3:52 pm

สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#1

Post by gamesavant »

สอบถามวิธีการ Vlookup หรือ Index Match หรือวิธีที่การอื่นใดในการคัดลอกข้อมูลจาก Row ที่ Merge
โดยตัวอย่างไฟล์คือต้องการข้อมูลจากชีท SumOT มาใส่ใน ชีท Detail
โดยอ้างอิงจาก รหัสพนักงานใน Column B
ซึ่งข้อมูลที่ต้องการนำมาใส่คือ OT1, OT1_5, OT2, OT3 ทั้งหมด 30 วันดังไฟล์ตัวอย่างครับ

รบกวนสอบถามวิธีในการ Vlookup หรือ Index Match หรือวิธีการอื่นใด
ให้สามารถนำข้อมูลจาก ชีท SumOT ซึ่งทำการ Merge มาใส่ใน ชีท Detail ด้วยครับ

ขอบคุณครับ :thup:
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#2

Post by puriwutpokin »

ที่ Sheet SumOT ที่ AJ5=LOOKUP(9^9,B$5:B5) เป็นคอลัมน์ช่วย คัดลอกจนสุดตาราง
ที่ ชีท Detail E2=IFERROR(INDEX(SumOT!$E$5:$AH$4000,MATCH(1,INDEX((SumOT!$AJ$5:$AJ$4000=LOOKUP(9^9,$B$2:$B2))*(SumOT!$D$5:$D$4000=$D2),0),0),MATCH(E$1,SumOT!$E$4:$AH$4,0)),0) คัดลอกทั่วตารางครับ
:shock: :roll: :D
gamesavant
Member
Member
Posts: 2
Joined: Tue Oct 15, 2019 3:52 pm

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#3

Post by gamesavant »

ใช้สูตรตามที่คุณ puriwutpokin แนะนำ ทำได้แล้วครับ

ขอบพระคุณครับ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#4

Post by pro602 »

puriwutpokin wrote: Tue Oct 15, 2019 7:36 pm ที่ Sheet SumOT ที่ AJ5=LOOKUP(9^9,B$5:B5) เป็นคอลัมน์ช่วย คัดลอกจนสุดตาราง
ที่ ชีท Detail E2=IFERROR(INDEX(SumOT!$E$5:$AH$4000,MATCH(1,INDEX((SumOT!$AJ$5:$AJ$4000=LOOKUP(9^9,$B$2:$B2))*(SumOT!$D$5:$D$4000=$D2),0),0),MATCH(E$1,SumOT!$E$4:$AH$4,0)),0) คัดลอกทั่วตารางครับ
สวัสดีครับคุณpuriwutpokin ช่วยแนะนำผมหน่อยครับ ตามเอกสารที่ผมแนบมาใน Sheet Rawdata เป็นข้อมูลดึงมาจากโปรแกรม พอจะเขียนสูตรแบบไหนได้บ้างครับที่จะสรุปข้อมูลออกมาได้เหมือนตัวอย่างใน Sheet report (ตามที่แนบผมตัดเอาข้อมูลมาแสดงแค่บางส่วนครับ)หรือถ้าสามารถทำสรุปออกมาได้เหมือนของคุณgamesavant ดีเลยครับ
You do not have the required permissions to view the files attached to this post.
User avatar
puriwutpokin
Guru
Guru
Posts: 3801
Joined: Fri Jan 04, 2013 9:49 pm
Location: Bangkok
Excel Ver: MS.365

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#5

Post by puriwutpokin »

ที่ A7=IFERROR(INDEX(Rawdata!$A$14:$AJ$200,AGGREGATE(15,6,(ROW(Rawdata!$A$14:$A$200)-ROW(Rawdata!$A$14)+1)/(Rawdata!$A$14:$A$200<>""),ROWS(A$7:A7)),CHOOSE(COLUMNS($A7:A7),1,5)),"") คัดลอกไปถึง B7 และลงล่างครับ
ที่ C7=IFERROR(INDEX(Rawdata!$A$15:$AJ$201,MATCH($A7,Rawdata!$A$14:$A$200,0),CHOOSE(COLUMNS($C7:C7),18,20,22,24,26,28,30,32,36)),"") คัดลอกไปทางขวา และลงล่างครับ
:shock: :roll: :D
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#6

Post by Bo_ry »

A7
=IFERROR(INDEX(Rawdata!$A:$A,AGGREGATE(15,6,ROW(Rawdata!$A$14:$A$179)/(Rawdata!$A$14:$A$179>0),ROWS(A$7:A7))),"")

B7:K7
=IF($A7="","",INDEX(Rawdata!$A:$AK,AGGREGATE(15,6,ROW(Rawdata!$A$14:$A$179)/(Rawdata!$A$14:$A$179>0),ROWS(B$7:B7))+(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก"),MATCH(INDEX(B$4:B$6,MATCH("*",B$4:B$6,)),Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2))
You do not have the required permissions to view the files attached to this post.
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#7

Post by pro602 »

puriwutpokin wrote: Mon Oct 28, 2019 10:11 pm ที่ A7=IFERROR(INDEX(Rawdata!$A$14:$AJ$200,AGGREGATE(15,6,(ROW(Rawdata!$A$14:$A$200)-ROW(Rawdata!$A$14)+1)/(Rawdata!$A$14:$A$200<>""),ROWS(A$7:A7)),CHOOSE(COLUMNS($A7:A7),1,5)),"") คัดลอกไปถึง B7 และลงล่างครับ
ที่ C7=IFERROR(INDEX(Rawdata!$A$15:$AJ$201,MATCH($A7,Rawdata!$A$14:$A$200,0),CHOOSE(COLUMNS($C7:C7),18,20,22,24,26,28,30,32,36)),"") คัดลอกไปทางขวา และลงล่างครับ
-"puriwutpokin"ขอบคุณมากๆครับครับสำหรับคำแนะนำ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#8

Post by pro602 »

Bo_ry wrote: Mon Oct 28, 2019 10:52 pm A7
=IFERROR(INDEX(Rawdata!$A:$A,AGGREGATE(15,6,ROW(Rawdata!$A$14:$A$179)/(Rawdata!$A$14:$A$179>0),ROWS(A$7:A7))),"")

B7:K7
=IF($A7="","",INDEX(Rawdata!$A:$AK,AGGREGATE(15,6,ROW(Rawdata!$A$14:$A$179)/(Rawdata!$A$14:$A$179>0),ROWS(B$7:B7))+(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก"),MATCH(INDEX(B$4:B$6,MATCH("*",B$4:B$6,)),Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2))
-"Bo_ry"ขอบคุณมากๆครับครับสำหรับคำแนะนำ
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#9

Post by pro602 »

Bo_ry wrote: Mon Oct 28, 2019 10:52 pm A7
=IFERROR(INDEX(Rawdata!$A:$A,AGGREGATE(15,6,ROW(Rawdata!$A$14:$A$179)/(Rawdata!$A$14:$A$179>0),ROWS(A$7:A7))),"")

B7:K7
=IF($A7="","",INDEX(Rawdata!$A:$AK,AGGREGATE(15,6,ROW(Rawdata!$A$14:$A$179)/(Rawdata!$A$14:$A$179>0),ROWS(B$7:B7))+(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก"),MATCH(INDEX(B$4:B$6,MATCH("*",B$4:B$6,)),Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2))
ผมลองเอาสูตรที่แนะนำมาให้ไปทำตามแล้วผลไม่ได้เหมือนตัวอย่างครับ ไม่แสดงค่าอะไรเลย ที่ Office ใช้ Excel 2007 ครับ
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#10

Post by Bo_ry »

A7
=IFERROR(INDEX(Rawdata!$A:$A,SMALL(IF(Rawdata!$A$14:$A$179>0,ROW(Rawdata!$A$14:$A$179)),ROWS(A$7:A7))),"")
Ctrl+Shift+Enter

B7
=IF($A7="","",INDEX(Rawdata!$A:$AK,SMALL(IF(Rawdata!$A$14:$A$179>0,ROW(Rawdata!$A$14:$A$179)),ROWS(B$7:B7))+(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก"),MATCH(INDEX(B$4:B$6,MATCH("*",B$4:B$6,)),Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2))
Ctrl+Shift+Enter
You do not have the required permissions to view the files attached to this post.
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#11

Post by pro602 »

Bo_ry wrote: Tue Oct 29, 2019 2:19 pm A7
=IFERROR(INDEX(Rawdata!$A:$A,SMALL(IF(Rawdata!$A$14:$A$179>0,ROW(Rawdata!$A$14:$A$179)),ROWS(A$7:A7))),"")
Ctrl+Shift+Enter

B7
=IF($A7="","",INDEX(Rawdata!$A:$AK,SMALL(IF(Rawdata!$A$14:$A$179>0,ROW(Rawdata!$A$14:$A$179)),ROWS(B$7:B7))+(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก"),MATCH(INDEX(B$4:B$6,MATCH("*",B$4:B$6,)),Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2))
Ctrl+Shift+Enter
ขอบคุณครับคุณ"Bo_ry" ที่ช่วยแก้ไขปรับสูตรให้ผมได้นำไปใช้งานได้ ถ้าไม่เป็นการรบกวนช่วยอธิบายสูตรให้ผมพอเข้าใจเพื่อเป็นวิทยาทานให้ผมได้นำไปศึกษาต่อยอดได้ไหมครั
User avatar
Bo_ry
Gold
Gold
Posts: 1245
Joined: Sun Aug 12, 2018 12:11 am
Excel Ver: MS 365
Contact:

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#12

Post by Bo_ry »

a. IF(Rawdata!$A$14:$A$179>0,ROW(Rawdata!$A$14:$A$179)) ได้ทุก Row ที่มีค่า
b. SMALL( a. ,ROWS(A$7:A7)) ดึงค่า Row จากน้อย ไปมาก ทีละค่า
c. INDEX(Rawdata!$A:$A, b) ดึงค่าจาก Column A แถวที่มีค่า

d. +(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก") ปรับตำแหน่ง row ถ้าไม่ใช่ "รวมแผนก" ให้ + อีก 1
e. Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2)) ปรับตำแหน่ง column เพื่อดึงเลขแผนก
pro602
Member
Member
Posts: 140
Joined: Sat Feb 06, 2016 9:58 am
Excel Ver: 2007,2010

Re: สอบถามวิธีการ Vlookup หรือ Index Match จาก Row ที่ Merge

#13

Post by pro602 »

Bo_ry wrote: Wed Oct 30, 2019 11:01 am a. IF(Rawdata!$A$14:$A$179>0,ROW(Rawdata!$A$14:$A$179)) ได้ทุก Row ที่มีค่า
b. SMALL( a. ,ROWS(A$7:A7)) ดึงค่า Row จากน้อย ไปมาก ทีละค่า
c. INDEX(Rawdata!$A:$A, b) ดึงค่าจาก Column A แถวที่มีค่า

d. +(COLUMNS($B7:B7)>1)*($A7<>"รวมแผนก") ปรับตำแหน่ง row ถ้าไม่ใช่ "รวมแผนก" ให้ + อีก 1
e. Rawdata!$A$7:$AJ$7,)-(A7="รวมแผนก")*3-(A7="แผนก")*2)) ปรับตำแหน่ง column เพื่อดึงเลขแผนก
-ขอบคุณครับสำหรับข้อมูลผมจะนำไปศึกษาต่อครับ
Post Reply