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

ฟอรัมถาม-ตอบปัญหาการใช้งาน 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. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
Kapoon24
Member
Member
Posts: 21
Joined: Fri Feb 11, 2011 3:34 pm

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

#1

Post by Kapoon24 »

ผมไม่รู้ว่าตั้งคำถามถูกไหมครับอาจารย์ :D พอดีผมไปเห็นสูตรนี้ในไฟล์ของคุณ Panuwat เลยจะเอามาประยุกต์ใช้ในงานของตัวเอง แต่ติดปัญหามันมีข้อมูลซ้ำกันอยู่ แต่คำตอบที่ได้มันได้แค่คำตอบเดียว ไม่ทราบว่าผมต้องใช้สูตรอะไรครับ ขอบคุณครับอาจารย์ :D
You do not have the required permissions to view the files attached to this post.
kmb
Bronze
Bronze
Posts: 305
Joined: Thu Oct 14, 2010 10:03 pm

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

#2

Post by kmb »

คงต้องมีเงื่อนไขเพิ่มเติมครับ ว่าค่าในเซลล์ B5, B6 หรือ B7 ควรจะได้ค่าในเซลล์ C และ D ที่ต่างกันเพราะอะไร :D
Kapoon24
Member
Member
Posts: 21
Joined: Fri Feb 11, 2011 3:34 pm

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

#3

Post by Kapoon24 »

ยังไงครับ ผมยังไม่เข้าใจ
kmb
Bronze
Bronze
Posts: 305
Joined: Thu Oct 14, 2010 10:03 pm

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

#4

Post by kmb »

ความหมายคือ เงื่อนไขคืออะไรครับที่เซลล์ C5 และ C6 ต้องได้ค่า 1/3 ในขณะที่เซลล์ C7 ต้องได้ค่า 2/3 :?:
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#5

Post by snasui »

:D ลองดูว่าใช่คำตอบที่ต้องการหรือเปล่าครับ

ที่ C5 คีย์

=IF(COUNTIF($B$5:$B5,$B5)>COUNTIF($J$5:$J$6,$B5),"",INDEX(K$5:K$6,SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5))))

Ctrl+Shift+Enter ต้องกด 3 แป้นคือ Ctrl+Shift ค้างไว้แล้วตามด้วย Enter เนื่องจากเป็นสูตร Array หากกดแป้นถูกต้องจะเห็นเครื่องหมายปีกกาคร่อมสูตร ดูไฟล์แนบประกอบครับ
You do not have the required permissions to view the files attached to this post.
Kapoon24
Member
Member
Posts: 21
Joined: Fri Feb 11, 2011 3:34 pm

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

#6

Post by Kapoon24 »

ตรงตามที่ต้องการเลยครับอาจารย์ แต่ผมขอความกรุณาช่วยอธิบายที่มาที่ไปของสูตรได้ไหมครับ ขอบคุณครับ
Kapoon24
Member
Member
Posts: 21
Joined: Fri Feb 11, 2011 3:34 pm

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

#7

Post by Kapoon24 »

อ๋อ คุณ kmb เงื่อนไขของผมคือการคีย์ข้อมูลลงไปตรง b5:b7 แล้วให้ข้อมูลในช่วง c5:d8 แสดงข้อมูลที่อยู่ในตาราง j5:l7 ออกมา ครับ ส่วนปัญหาของผมคือข้อมูลที่ b5:b6 มันซ้ำกันอยู่ค่าที่ได้มันจะแสดงแค่ค่า 1/3 มันไม่แสดงค่า 2/3 ให้ครับ
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#8

Post by snasui »

:D จะลองอธิบายดูนะครับ

1. จากสูตร

=IF(COUNTIF($B$5:$B5,$B5)>COUNTIF($J$5:$J$6,$B5),"",INDEX(K$5:K$6,SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5))))

หมายความว่า ถ้าผลลัพธ์ของสูตร COUNTIF($B$5:$B5,$B5) มีค่ามากกว่าผลลัพธ์ของสูตร COUNTIF($J$5:$J$6,$B5) แ้ล้ว ให้แสดงค่าว่าง แต่หากว่าไม่มากกว่า ให้แสดงผลลัพธ์ของสูตร INDEX(K$5:K$6,SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5)))

2. จากสูตร

INDEX(K$5:K$6,SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5)))

หมายความว่าจากช่วง K$5:K$6 ให้แสดงข้อมูลในลำดับที่เป็นผลลัพธ์ของสูตร SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5))

3. จากสูตร

SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5))

หมายความว่าจากช่วงข้อมูลที่เป็นผลลัพธ์ของสูตร IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1) ให้นำค่าที่น้อยที่สุดเป็นลำดับที่เป็นผลลัพธ์ของสูตร COUNTIF($B$5:$B5,$B5) มาแสดง (ค่าที่น้อยที่สุดเป็นลำดับที่ เช่น ค่าที่น้อยที่สุดเป็นลำดับที่ 1, ค่าที่น้อยที่สุดเป็นลำดับที่ 100 ฯลฯ)

4. จากสูตร

IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1)

หมายความว่า ถ้าช่วงข้อมูล $J$5:$J$6 มีค่าเท่ากับค่าในเซลล์ $B5 แล้วให้แสดงผลลัพธ์ของสูตร ROW($K$5:$K$6)-ROW($K$5)+1

5. จากสูตร

ROW($K$5:$K$6)-ROW($K$5)+1

เป็นการแสดงค่าลำดับโดยเริ่มจาก 1 ไปจนเท่ากับจำนวนบรรทัดในช่วง $K$5:$K$6 ในที่นี้คือ 2 ค่า ซึ่งจะแสดงเป็น Array ให้เห็นเป็น {1,2} ลักษณะผลการคำนวณของสูตรนี้จะได้เป็นลำดับดังนี้

{5,6}-{5}+1 ผลลัพธ์ถัดมาจะได้เป็น {0,1}+1 และผลลัพธ์สุดท้ายจะได้เป็น {1,2}

ต้องค่อย ๆ ทำความเข้าใจครับ ฟังก์ชั่นต่าง ๆ สามารถศึกษาได้จากที่นี่ครับ http://office.microsoft.com/th-th/excel ... 04211.aspx
Kapoon24
Member
Member
Posts: 21
Joined: Fri Feb 11, 2011 3:34 pm

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

#9

Post by Kapoon24 »

ขอบคุณครับอาจารย์
kmb
Bronze
Bronze
Posts: 305
Joined: Thu Oct 14, 2010 10:03 pm

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

#10

Post by kmb »

snasui wrote::D ลองดูว่าใช่คำตอบที่ต้องการหรือเปล่าครับ

ที่ C5 คีย์

=IF(COUNTIF($B$5:$B5,$B5)>COUNTIF($J$5:$J$6,$B5),"",INDEX(K$5:K$6,SMALL(IF($J$5:$J$6=$B5,ROW($K$5:$K$6)-ROW($K$5)+1),COUNTIF($B$5:$B5,$B5))))

Ctrl+Shift+Enter ต้องกด 3 แป้นคือ Ctrl+Shift ค้างไว้แล้วตามด้วย Enter เนื่องจากเป็นสูตร Array หากกดแป้นถูกต้องจะเห็นเครื่องหมายปีกกาคร่อมสูตร ดูไฟล์แนบประกอบครับ

ถ้าเงื่อนไขในการใส่ข้อมูลไม่ซับซ้อนจนเกินไป พอจะใช้สูตรนี้แทนได้ไหมครับ :D
=IF(COUNTIF($B$5:$B5,$B5)>COUNTIF($J$5:$J$6,$B5),"",INDEX(K$5:K$6,COUNTIF($B$5:$B5,$B5)))
User avatar
snasui
Site Admin
Site Admin
Posts: 30744
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

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

#11

Post by snasui »

:D สำหรับสูตร

=IF(COUNTIF($B$5:$B5,$B5)>COUNTIF($J$5:$J$6,$B5),"",INDEX(K$5:K$6,COUNTIF($B$5:$B5,$B5)))

กรณีที่ค่าต้นทางเรียงลำดับสลับกับค่าอื่น ๆ จะทำให้ไม่ได้ผลลัพธ์ตามที่ต้องการครับ :mrgreen:
Post Reply