Page 1 of 1

ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Thu Jan 23, 2014 9:35 pm
by nopanan
ใช้ datavalidation และสูตรอาร์เรย์ พบทั้งถูกต้องและเออเร่อร์ครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Thu Jan 23, 2014 10:11 pm
by snasui
:D ช่วยแจ้งเงื่อนไขในการแสดงผล พร้อมตัวอย่างคำตอบที่ถูกต้องมาด้วยครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Thu Jan 23, 2014 10:16 pm
by nopanan
snasui wrote::D ช่วยแจ้งเงื่อนไขในการแสดงผล พร้อมตัวอย่างคำตอบที่ถูกต้องมาด้วยครับ
หลังจากเลือกตัวเลือกในดรอปดาวน์ลิสต์แล้ว บางค่าเออเร่อร์บางค่าไม่เออเร่อร์ครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Thu Jan 23, 2014 10:18 pm
by snasui
:D ผมขอเงื่อนไขการแสดงผลครับ จึงจะตอบได้ว่า Error เพราะเหตุใด ควรตอบในสิ่งที่ผมถามครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Thu Jan 23, 2014 10:39 pm
by nopanan
ครับ ในชีท toppb ที่ C6 เป็น drop down list เมื่อเลือกตัวเลือกใดๆแล้วให้แสดงค่าในเซลที่ไฮไล้สีเหลือง ตามที่ได้ใส่สูตรไว้เพื่อนำข้อมูลจากชีท Topsales มาแสดงได้อย่างถูกต้องครับ คือสูตรน่าจะถูกต้องครับเพราะสามารถแสดงได้ เมื่อเลือกในบางรายการใน list จึงไม่ทราบว่าเกิดจากอะไรที่ไม่สามารถแสดงผลได้ทุก การเลือกใน ชีท toppb ที่ C6 ครับ ขออภัยครับหากยังไม่ชัดเจน

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Thu Jan 23, 2014 10:46 pm
by snasui
:D จากไฟล์ที่แนบมา คำตอบทั้ง 6 เซลล์ควรเป็นค่าใด และเหตุใดจึงได้ค่านั้นครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Fri Jan 24, 2014 9:36 am
by nopanan
ขอแนบไฟล์ตัวอย่างมาใหม่ครับ คือต้องการให้แสดงข้อมูลตัวเลขสูงสุด 3 อันดับแรกจากตารางข้างบนตามสีที่ทำไว้ มาแสดงในตารางข้างล่างตามสูตรที่เคยได้รับจากอาจารย์มาครับ โดยใช้ตัวเลือก dropdownlist ไฟล์ที่แนบมาใหม่นี้ไม่ได้มีปัญหาเออเร่อร์แต่อย่างใด ปัญหาคือว่า เมื่อผมมีจำนวนของคอลัมน์และแถวของข้อมูลที่มากขึ้นในการใช้งานจริง มันแสดงค่าเออเร่อร์ ซึ่งไฟล์แรกผมใช้สูตรน่าจะถูกต้องเพราะมีการแสดงลำดับขึ้นมาได้แต่ไม่ทั้งหมด บางส่วนที่เลือกแสดงค่าเออเร่อร์ ครับ ขออภัยครับไฟล์แรกตัวเลขอาจซ้ำกันเพราะผมได้ใช้เป็นตัวอย่าง สูตรนี้ได้มาจากอาจารย์แล้วได้ผลปัญหาคือเมื่อเพิ่มคอลัมน์และแถวแล้วมีค่าเออเร่อร์ ขออภัยครับหากอธิบายแล้วเข้าใจยากสักนิด :flw:

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Fri Jan 24, 2014 9:48 am
by joo
:Dลองแนบไฟล์ที่แสดงค่า Error มาดูกันหน่อยครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Fri Jan 24, 2014 10:49 am
by snasui
:D Dropdown ที่เลือกในไฟล์แรกเป็นการเลือกจากคอลัมน์ A ของ Database ซึ่งป็นหัวบรรทัด แต่ไฟล์ตัวอย่างที่แนบมาใหม่เป็นการเลือกจากบรรทัดที่ 2 ซึ่งเป็นหัวคอลัมน์ จึงต้องปรับสูตรใหม่

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

หากผมเข้าใจถูกต้อง ความต้องการของคุณคือต้องการค่าที่มากทีสุด 3 ลำดับ โดยให้แสดงชื่อเดือนและค่าจากชีท sales12,13 มีเงื่อนไขว่า หาก C6 ในชีท toppb ตรงกับค่าใด ๆ ในช่วง A2:A57 ของชีท sales12,13 ก็ให้หาค่าที่มากที่สุด 3 ลำดับจากบรรทัดนั้นมาแสดงเรียงจากมากไปหาน้อย

สูตรจึงควรจะเป็น
  1. ที่ C7 คีย์
    =LARGE(INDEX('sales12,13'!$B$2:$M$57,MATCH(toppb!$C$6,'sales12,13'!$A$2:$A$57,0),0),toppb!$A7)
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
  2. ที่ B7 คีย์
    =INDEX('sales12,13'!$B$1:$M$1,SMALL(IF(INDEX('sales12,13'!$B$2:$M$57,MATCH(toppb!$C$6,'sales12,13'!$A$2:$A$57,0),0)=toppb!$C7,COLUMN('sales12,13'!$B$1:$M$1)-COLUMN('sales12,13'!$B$1)+1),COUNTIF(toppb!$C$7:C7,C7)))
    Ctrl+Shift+Enter > Copy ลงด้านล่าง
สังเกตว่าแม้สูตร Index จะคล้ายกันแต่ไม่เหมือนกันครับ

Re: ปัญหาสูตร อาเรย์ ข้ามชีทแล้ว เออเร่อร์

Posted: Fri Jan 24, 2014 12:31 pm
by nopanan
ขอบคุณครับอาจารย์ ผมอธิบายไม่ชัดเจนเอง แก้ได้แล้วครับ ผิดตรง การใช้ index ข้อมูลต่างกันตรงที่การนำข้อมูลทางคอลัมน์มาแสดงในแถว กับการให้แสดงข้อมูลจากแถวมาแสดงเป็นแถว :cp: