Page 1 of 1

หาค่าในตาราง โดยต้องใช้เงื่อนไขมากกว่า 2 เงื่อนไข

Posted: Fri Oct 17, 2014 12:12 pm
by prahousefamily
คือแนบตัวอย่าง มาให้ดูด้วย ต้องรบกวนผู้รู้ด้วยครับ ว่าต้องประยุกต์ใช้ Function อะไรในการหาค่าที่ต้องการ
เป็นแบบประเมินกาวะไขมัน
โดยดูเงื่อนไขจาก
1.ช่อง G กลุ่มอายุ
2.ช่อง H ค่าที่เครื่องวัดแสดงผล ต้องอยู่ระหว่าง ในช่วง minvalue และ maxvalue

โดยผลลัพธ์ต้องแสดงค่าในช่อง ขวาสุดของตาราง print_group ว่าอยู่ในสภาวะใด

คือลองใช้ Vloopup กับ Hlookup มันใช้เงื่อนไขได้เพียงอย่างเดียว เลยทำให้หาคำตอบไม่ได้ ต้องรบกวนผู้รู้ทุกๆท่าน เป็นวิทยาทานแก่กบในกะลาตัวนี้ ด้วยเทอญ สาธุ มีมาตอบทีเถอะ

Re: หาค่าในตาราง โดยต้องใช้เงื่อนไขมากกว่า 2 เงื่อนไข

Posted: Fri Oct 17, 2014 2:57 pm
by snasui
:D ลองตามนี้ครับ

เซลล์ I2 คีย์

=INDEX($E$2:$E$25,MATCH(1,IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)),0))

Ctrl+Shift+Enter > Copy ลงด้านล่าง

!
Note: Ctrl+Shift+Enter หมายถึง
  1. กรณีคีย์สูตรเอง เมื่อคีย์สูตรแล้ว แทนที่จะกด Enter ให้กดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
  2. กรณี Copy สูตรไปวางให้กดแป้น F2 เพื่อทำการ Edit Cell นั้นก่อน จากนั้นกดแป้น Ctrl+Shift ค้างไว้แล้วกด Enter เพื่อสร้างเป็นสูตร Array
  3. หากกดแป้นถูกต้องสูตรนั้นจะมีเครื่องหมายปีกกาครอบ เช่น {=YourFormulas(...)} ปีกกานี้คีย์เข้าไปเองไม่ได้ ถ้ายังไม่เห็นปีกกาครอบสูตรแสดงว่ากดแป้นให้รับสูตรไม่ถูกต้อง
  4. การแก้ไขเปลี่ยนแปลงสูตร Array จะต้องกดแป้นให้รับสูตรด้วย Ctrl+Shift+Enter ทุกครั้ง

Re: หาค่าในตาราง โดยต้องใช้เงื่อนไขมากกว่า 2 เงื่อนไข

Posted: Fri Oct 17, 2014 6:25 pm
by prahousefamily
=INDEX($E$2:$E$25, //เหมือนการทำแถบดำเพื่อเลือกขนาดเขตตาราง ส่วน Index ใช้เพื่อหาจุดตัด a และ b
MATCH(1, //ดูจากคอลัมม์แรกเป็นหลัก
IF($B$2:$B$25<=H2, //เปรียบเทียบค่า ว่า ค่าที่อยู่ในตาราง minvalue ที่ไม่เกินกว่า ค่า ที่เป็นเงื่อนไข =จุดตัด a
IF($C$2:$C$25>=H2, //เปรียบเทียบค่า ว่า ค่าทีอยู่ในตาราง maxvalue ที่ไม่ต่ำกว่า ค่า ที่เป็นเงื่อนไข =จุดตัด b
1) //หลังจากนั้นคือนค่า ที่ถัดไปอีก คอลัมม์
),0)) //แต่ตรงส่วนนี้ ยังไม่เข้าใจว่าคืออะไร

ผมเข้าใจถูกไหมครับ คือคำตอบออกมาได้ถูกต้อง แต่ว่า อยากเข้าใจหลักการของการใช้นะครับ

อีกอย่างครับ คือสงสัย ความแตกต่างระหว่าง การกด Enter กับ Ctrl+Shift+Enter

Re: หาค่าในตาราง โดยต้องใช้เงื่อนไขมากกว่า 2 เงื่อนไข

Posted: Fri Oct 17, 2014 6:57 pm
by snasui
:D เข้าใจถูกต้องบ้าง แต่เข้าใจไม่ถูกต้องหลายประการครับ

โดยใจความหลัก สูตร Array เป็นสูตรที่กระทำกับช่วงข้อมูล คือเป็นสูตรที่กระทำกับค่าเดี่ยวได้ กระทำกับช่วงข้อมูลได้ หากเดิมเป็นสูตรที่ใช้กระทำกับค่าเดี่ยวและเราต้องการใช้กระทำกับช่วงข้อมูล เราจะ Enter ให้รับสูตรเพียงอย่างเดียวเหมือนเดิมไม่ได้ จะต้อง Ctrl+Shift+Enter ให้รับสูตร การกระทำกับช่วงข้อมูลจึงจะให้คำตอบได้ นี่คือความแตกต่างหลักของการ Enter และ Ctrl+Shift+Enter

สูตรด้านบนเป็นการใช้ฟังก์ชั่น If กระทำกับช่วงข้อมูล จึงกลายเป็นสูตร Array

:!: จากสูตร

=INDEX($E$2:$E$25,MATCH(1,IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)),0))

หมายถึง จากช่วง $E$2:$E$25 ให้นำตำแหน่งที่เป็นผลลัพธ์ของ MATCH(1,IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)),0) มาแสดง นั่นหมายความว่า MATCH(1,IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)),0) จะต้องให้ผลลัพธ์เป็นค่าใด ๆ เช่น 8, 10, 20 เป็นต้น คือให้ผลลัพธ์ออกมาเป็นตัวเลข เพราะค่าตัวเลขเท่านั้นที่จะถือว่าเป็นลำดับตำแหน่งได้

:!: จากสูตร

MATCH(1,IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)),0)

หมายถึงเป็นการหาว่า เลข 1 อยู่ในลำดับที่เท่าไรของ IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)) นั่นแสดงว่า IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)) จะต้องให้ผลลัพธ์เป็น 1 อยู่ในชุดผลลัพธ์ด้วย ส่วนเลข 0 ท้ายสุดเป็นการบอกว่าให้หาค่าแบบตรงตัว คือต้องเจอเลข 1 เท่านั้นเจอเลขอื่นใดนอกจากนั้นถือว่าไม่เจอ

:!: ส่วนขยายของสูตร IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1))

จากสูตร

IF($B$2:$B$25<=H2

หมายถึง ให้เทียบ B2:B25 กับ H2 ไปทีละค่าว่าน้อยกว่าหรือเท่ากับ H2 หรือไม่ ลักษณะการเทียบคือ
B2<=H2
B3<=H2
...
B25<=H2

หากเข้าเงื่อนไขก็จะได้ผลลัพธ์เป็น True ไม่เช่นนั้นก็เป็น False ส่วนที่เป็น True จะนำผลลัพธ์ของ IF($C$2:$C$25>=H2 มาใช้อีกที โดย

IF($C$2:$C$25>=H2,1) มีความหมายว่า
C2>=H2
C3>=H2
...
C25>=H2
หากเป็นจริงจะได้คำตอบเป็น 1 ไม่เช่นนั้นจะได้ค่าเป็น False

การจะเข้าใจสูตร Array จะต้องหัดแกะสูตร โดยคลุมช่วงข้อมูลที่สนใจในสูตรแล้วกดแป้น F9 จะได้เห็นผลลัพธ์ของช่วงที่คลุมนั้น

Re: หาค่าในตาราง โดยต้องใช้เงื่อนไขมากกว่า 2 เงื่อนไข

Posted: Fri Oct 17, 2014 8:33 pm
by prahousefamily
ขอบขอบพระคุณเป็นอย่างสูงครับ ที่อธิบายความหมาย ข้อแตกต่างระกว่างการใช้ Enter และ Ctrl+Shift+Enter
ส่วนคืนนี้ ผมจะขอลองศึกษา =INDEX($E$2:$E$25,MATCH(1,IF($B$2:$B$25<=H2,IF($C$2:$C$25>=H2,1)),0)) ทีละวงเล็บเลยครับ จะได้เข้าใจหลักการ เพราะไม่เคยพบการใช้ฟังค์ชั่นที่ประยุกต์ จนละเอียดขนาดนี้ มาก่อนเลย การได้ศึกษาหลักการถึงแม้จะจำไวยกรณ์ไม่ได้ เขียนผิดบ้าง แต่ก็สามารถเข้าใจนำไปประยุกต์กับโจทย์ หรือปัญหาอื่นๆได้ แต่การที่นำไปใช้โดยที่ไม่ได้ศึกษา ที่มาที่ไป ก็ดูท่าเสียของของคนที่อุตสาห์คิด กสียความตั้งใจวิเคราะห์มาให้ ขอน้อมรับความรู้นี้ครับอย่างสุดซึ้งเลยครับ
ขอขอบคุณอีกครั้งครับ ดูท่า เสาร์อาทิตย์นี้ คงได้ตาค้างแน่ละครับทีนี้ เอาหล่ะ เริ่ม แกะ