: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 หลายเงื่อนไข

ฟอรัมถาม-ตอบปัญหาการใช้งานสูตรและฟังก์ชัน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
babuiebest
Member
Member
Posts: 18
Joined: Wed Mar 02, 2016 8:47 am

Vlookup หลายเงื่อนไข

#1

Post by babuiebest »

ผมมีข้อมูลอยู่ 3 sheet โดย
Sheet1 เป็นไฟล์ตั้งต้นที่มีการเปลี่ยนแปลงข้อมูลอยู่เสมอ โดย user คีย์ข้อมูลลงไป

Sheet2 เป็นลิสต์รายการสินค้าที่มีทั้งหมดและรหัสสินค้าเพื่อไว้อ้างอิงใน sheet3

Sheet3 คือตารางสรุปข้อมูลที่ได้จาก sheet1 และsheet2 โดยต้องการให้ดึงจำนวนสินค้าแบบแยก pack size และวันที่เริ่มผลิต จาก sheet1 และดึงรหัสสินค้าจาก sheet2 ครับ

คำถามคือ ผมจะทำอย่างไร หากมีการเปลี่ยนแปลงข้อมูลใน sheet1 และต้องการให้ sheet3 เปลี่ยนแปลงไปด้วย หรือผมควรจะจัดตารางข้อมูลใน sheet1,2 ให้เหมาะสมก่อนดึงมาครับ รบกวนผู้รู้ด้วยครับ
You do not have the required permissions to view the files attached to this post.
menem
Silver
Silver
Posts: 549
Joined: Mon Jan 26, 2015 11:02 am

Re: Vlookup หลายเงื่อนไข

#2

Post by menem »

แบบนี้ใช่ตามที่ต้องการหรือเปล่าครับ ?

หมายเหตุ : ผมใช้ Array Formula ไม่เป็น ก็เลยเขียนได้แต่แบบนี้
(หากใช้ได้ สูตรอาจจะกระชับมากกว่านี้ครับ)
You do not have the required permissions to view the files attached to this post.
User avatar
snasui
Site Admin
Site Admin
Posts: 31191
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 2019
Contact:

Re: Vlookup หลายเงื่อนไข

#3

Post by snasui »

:D อีกตัวอย่างสูตรที่ Sheet3 ครับ
  1. เซลล์ A3 คีย์สูตร
    =Sheet2!C3
    Enter > Copy ลงด้านล่าง
  2. เซลล์ B3 คีย์สูตร
    =INDEX(Sheet1!$C$3:$D$8,MATCH(INDEX(Sheet2!$A$3:$A$8,MATCH($A3,Sheet2!$C$3:$C$8,0)),Sheet1!$B$3:$B$8,0),MATCH(INDEX(Sheet2!$B$3:$B$8,MATCH($A3,Sheet2!$C$3:$C$8,0)),Sheet1!$C$2:$D$2,0))
    Enter > Copy ลงด้านล่าง
  3. เซลล์ C3 คีย์สูตร
    =INDEX(Sheet1!$A$3:$A$8,MATCH(INDEX(Sheet2!$A$3:$A$8,MATCH($A3,Sheet2!$C$3:$C$8,0)),Sheet1!$B$3:$B$8,0))
    Enter > Copy ลงด้านล่าง
babuiebest
Member
Member
Posts: 18
Joined: Wed Mar 02, 2016 8:47 am

Re: Vlookup หลายเงื่อนไข

#4

Post by babuiebest »

menem wrote:แบบนี้ใช่ตามที่ต้องการหรือเปล่าครับ ?

หมายเหตุ : ผมใช้ Array Formula ไม่เป็น ก็เลยเขียนได้แต่แบบนี้
(หากใช้ได้ สูตรอาจจะกระชับมากกว่านี้ครับ)
ขอบคุณครับ ตรงกับความต้องการเลย เดี๋ยวจะเอาไปปรับใช้กับไฟล์จริงดู แต่อยากจะขอคอนเซปของสูตรที่ใส่มาหน่อยได้ไหมครับ มีแนวคิดอย่างไร
babuiebest
Member
Member
Posts: 18
Joined: Wed Mar 02, 2016 8:47 am

Re: Vlookup หลายเงื่อนไข

#5

Post by babuiebest »

snasui wrote::D อีกตัวอย่างสูตรที่ Sheet3 ครับ
  1. เซลล์ A3 คีย์สูตร
    =Sheet2!C3
    Enter > Copy ลงด้านล่าง
  2. เซลล์ B3 คีย์สูตร
    =INDEX(Sheet1!$C$3:$D$8,MATCH(INDEX(Sheet2!$A$3:$A$8,MATCH($A3,Sheet2!$C$3:$C$8,0)),Sheet1!$B$3:$B$8,0),MATCH(INDEX(Sheet2!$B$3:$B$8,MATCH($A3,Sheet2!$C$3:$C$8,0)),Sheet1!$C$2:$D$2,0))
    Enter > Copy ลงด้านล่าง
  3. เซลล์ C3 คีย์สูตร
    =INDEX(Sheet1!$A$3:$A$8,MATCH(INDEX(Sheet2!$A$3:$A$8,MATCH($A3,Sheet2!$C$3:$C$8,0)),Sheet1!$B$3:$B$8,0))
    Enter > Copy ลงด้านล่าง
ขอบคุณมากๆครับ เดี๋ยวผมขอไปลองก่อนนะครับ
babuiebest
Member
Member
Posts: 18
Joined: Wed Mar 02, 2016 8:47 am

Re: Vlookup หลายเงื่อนไข

#6

Post by babuiebest »

menem wrote:แบบนี้ใช่ตามที่ต้องการหรือเปล่าครับ ?

หมายเหตุ : ผมใช้ Array Formula ไม่เป็น ก็เลยเขียนได้แต่แบบนี้
(หากใช้ได้ สูตรอาจจะกระชับมากกว่านี้ครับ)
ผมลองเอาสูตรของคุณ menem ไปปรับใช้กับข้อมูลจริงพบว่าค่อนข้างโอเคครับ แต่ติดนิดเดียวที่ว่า ในไฟล์ของคุณ menem หากวันไหนมีผลิตสินค้าชนิดหนึ่งๆ เพียง pack size เดียว อีก pack size นึงที่ไม่ผลิตก็จะไม่โชว์บนตาราง แต่ไฟล์ของผมกลับโชว์สินค้าขึ้นมาโดยแสดงจำนวนเป็น 0 ครับ (จริงๆแล้วไม่ควรจะโชว์หากไม่มีผลิต pack size นั้นๆ) แบบนี้แล้วต้องปรับแก้ในสูตร cell ไหนครับ
menem
Silver
Silver
Posts: 549
Joined: Mon Jan 26, 2015 11:02 am

Re: Vlookup หลายเงื่อนไข

#7

Post by menem »

เอาหลักการคิดของผมก่อนนะครับ
ผมถือเสมอว่า บรรทัดที่ 3 ต้องมีข้อมูล เพียงแต่ต้องหาให้เจอก่อนว่า คอลัมน์ไหนมีข้อมูลกันแน่
สูตร F2=IF(Sheet1!C3>0,"C",IF(Sheet1!D3>0,"D","Err"))

จากนั้นให้ถือว่าคอลัมน์เริ่มต้น คือค่าตาม F2 ( สูตรใน F3=F2 )
และกำหนดว่า บรรทัดเริ่มแรกที่มีข้อมูลคือ 3 ( สูตรใน E3=3 )

จากนั้นให้หาว่าบรรทัดถัดไปคืออะไร โดย
- ถ้า Column ก่อนหน้าเป็น C ให้เช็ค D บรรทัดเดียวกันว่า > 0 ถ้าใช่ เลขบรรทัดถัดไปเท่ากับบรรทัดเดิม
ถ้าไม่ ให้เลขบรรทัดถัดไปเท่ากับ + 1
- ถ้า Column ก่อนหน้าเป้น D ให้เลขบรรทัดถัดไปเท่ากับ + 1

และหาว่า Column ต่อไปคือ C หรือ D
- ถ้า Column ก่อนหน้าคือ C ให้ดูว่า D > 0 ถ้าใช่ ให้เป็น D , ถ้าไม่ใช่ ให้เป็น C [ ตรงจุดนี้เลขบรรทัดถัดไปจะเพิ่มไปพร้อม ๆ กัน ]
- ถ้า Column ก่อนหน้าคือ D ให้ดูว่า C ถัดไป > 0 ถ้าใช่ ให้เป็น C ถ้าไม่ ให้เป็น D

ย้ำว่า ทุกบรรทัดต้องมีค่าการผลิต ช่องใดช่องหนึ่งเสมอ
User avatar
DhitiBank
Gold
Gold
Posts: 1676
Joined: Mon Oct 15, 2012 12:07 am

Re: Vlookup หลายเงื่อนไข

#8

Post by DhitiBank »

อีกแนวหนึ่งครับ ที่ Sheet3

1. E3 คีย์ (เพื่อแสดงวันที่ตามฐานข้อมูลใน Sheet1)
=Sheet1!A3
Enter -> คัดลอกลงล่างเผื่อเอาไว้

2. F3 คีย์ (เพื่อนับว่าแต่ละวันใน Sheet1 มีการใส่จำนวนในคอลัมน์ C และ D กี่ช่อง)
=COUNTIF(Sheet1!C3:D3,">"&0)
Enter -> คัดลอกลงล่างเผื่อเอาไว้

3. G3 คีย์ (เพื่อระบุว่าวันที่นั้นๆ จะให้ลงข้อมูลในแถวไหน)
=SUM(F$3:F3)-F3+1
Enter -> คัดลอกลงล่างเผื่อเอาไว้

4. F1 คีย์ (เพื่อดูว่า เมื่อเอามาเรียงแล้วจะมีกี่แถว)
=SUM(F3:F500)

5. C3 คีย์
=IF(ROWS(C$3:C3)>$F$1,"",LOOKUP(ROWS(C$3:C3),$G$3:$G$10,$E$3:$E$10))
Enter -> คัดลอกลงจนเห็นค่าว่าง

6. B3 คีย์
=IF(C3="","",INDEX(Sheet1!$C$3:$D$8,MATCH(C3,Sheet1!$A$3:$A$8,0),MATCH(TRUE,INDEX((INDEX(Sheet1!$C$3:$D$8,MATCH(C3,Sheet1!$A$3:$A$8,0),0)>0),0),0)+COUNTIF(C$3:C3,C3)-1))
Enter -> คัดลอกลงจนเห็นค่าว่าง

7. A3 คีย์
=IF(C3="","",SUMIFS(Sheet2!$C$3:$C$8,Sheet2!$A$3:$A$8,INDEX(Sheet1!$B$3:$B$8,MATCH(C3,Sheet1!$A$3:$A$8,0)),Sheet2!$B$3:$B$8,INDEX(Sheet1!$C$2:$D$2,MATCH(TRUE,INDEX((INDEX(Sheet1!$C$3:$D$8,MATCH(C3,Sheet1!$A$3:$A$8,0),0)>0),0),0)+COUNTIF(C$3:C3,C3)-1)))
Enter -> คัดลอกลงจนเห็นค่าว่าง

>>เวลาเอาไปใช้ก็ปรับช่วงอ้างอิงในสูตร 5 ให้สอดคล้องกับช่วงสูตรในคอลัมน์ E, G
>>และปรับสูตร 6, 7 ให้สอดคล้องกับข้อมูลจริงใน Sheet1 และ Sheet2 ครับ
You do not have the required permissions to view the files attached to this post.
Post Reply