Page 1 of 1

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

Posted: Sat Mar 05, 2011 9:48 am
by Kapoon24
ผมไม่รู้ว่าตั้งคำถามถูกไหมครับอาจารย์ :D พอดีผมไปเห็นสูตรนี้ในไฟล์ของคุณ Panuwat เลยจะเอามาประยุกต์ใช้ในงานของตัวเอง แต่ติดปัญหามันมีข้อมูลซ้ำกันอยู่ แต่คำตอบที่ได้มันได้แค่คำตอบเดียว ไม่ทราบว่าผมต้องใช้สูตรอะไรครับ ขอบคุณครับอาจารย์ :D

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

Posted: Sat Mar 05, 2011 10:18 am
by kmb
คงต้องมีเงื่อนไขเพิ่มเติมครับ ว่าค่าในเซลล์ B5, B6 หรือ B7 ควรจะได้ค่าในเซลล์ C และ D ที่ต่างกันเพราะอะไร :D

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

Posted: Sat Mar 05, 2011 10:24 am
by Kapoon24
ยังไงครับ ผมยังไม่เข้าใจ

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

Posted: Sat Mar 05, 2011 10:30 am
by kmb
ความหมายคือ เงื่อนไขคืออะไรครับที่เซลล์ C5 และ C6 ต้องได้ค่า 1/3 ในขณะที่เซลล์ C7 ต้องได้ค่า 2/3 :?:

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

Posted: Sat Mar 05, 2011 10:39 am
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 หากกดแป้นถูกต้องจะเห็นเครื่องหมายปีกกาคร่อมสูตร ดูไฟล์แนบประกอบครับ

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

Posted: Sat Mar 05, 2011 11:16 am
by Kapoon24
ตรงตามที่ต้องการเลยครับอาจารย์ แต่ผมขอความกรุณาช่วยอธิบายที่มาที่ไปของสูตรได้ไหมครับ ขอบคุณครับ

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

Posted: Sat Mar 05, 2011 11:22 am
by Kapoon24
อ๋อ คุณ kmb เงื่อนไขของผมคือการคีย์ข้อมูลลงไปตรง b5:b7 แล้วให้ข้อมูลในช่วง c5:d8 แสดงข้อมูลที่อยู่ในตาราง j5:l7 ออกมา ครับ ส่วนปัญหาของผมคือข้อมูลที่ b5:b6 มันซ้ำกันอยู่ค่าที่ได้มันจะแสดงแค่ค่า 1/3 มันไม่แสดงค่า 2/3 ให้ครับ

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

Posted: Sat Mar 05, 2011 11:39 am
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

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

Posted: Sat Mar 05, 2011 3:59 pm
by Kapoon24
ขอบคุณครับอาจารย์

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

Posted: Tue Mar 08, 2011 10:46 pm
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)))

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

Posted: Tue Mar 08, 2011 11:00 pm
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: