Page 1 of 1

สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบน

Posted: Sat Apr 05, 2014 11:10 pm
by nutpochan
ถ้ามีสินค้า 2 ชนิด สูตรช่อง P12 ไม่ยากแต่ถ้าเปลี่ยนเป็น 4 ชนิด ขออยากทราบสูตรหน่อยครับให้บรรทัดข้างพายสับปะรดมาแทนพายครีมถ้าพายครีมมีจำนวนเป็นศูนย์ครับ

ขอเดิมผมใช้ =IF(Z2>0,Z2,(IF(Z2=0,AA2)))
กับ =IF(AA2=0,0,(IF(Z2>0,AA2,0)))

ถ้ามีเพิ่มมาเป็น 4 ชผนิด เราจะเขียนสูตรว่าอย่างไรดีครับ

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sat Apr 05, 2014 11:20 pm
by nutpochan
=IF(AND(Z2>0,AA2=0,AB2=0,AC2=0),Z2,IF(AND(Z2=0,AA2>0,AB2=0,AC2=0),AA2,IF(AND(Z2=0,AA2=0,AB2>0,AC2=0),AB2,IF(AND(Z2=0,AA2=0,AB2=0,AC2>0),AC2,IF(AND(Z2>0,AA2>0,AB2=0,AC2=0),z2,IF(AND(Z2=0,AA2>0,AB2>0,AC2=0),AA2,IF(AND(Z2=0,AA2=0,AB2>0,AC2>0),AB2,IF(AND(Z2>0,AA2>0,AB2>0,AC2=0),z2,IF(AND(Z2=0,AA2>0,AB2>0,AC2>0),AA2,IF(AND(Z2>0,AA2>0,AB2>0,AC2>0),z2,0))))))))

เคยใช้สูตรนี้ในช่อง P12 แต่มีข้อความออกมาว่า สูตรแสดงไม่ได้เพราะใช้สูตรซ้อนกันมากเกินไป เราจะแก้อย่างไรดีครับ

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sat Apr 05, 2014 11:27 pm
by snasui
:D ให้อธิบายเงื่อนไขในการแสดงข้อมูลแทนการเขียนมาเป็นสูตร เซลล์ใดต้องการให้เป็นค่าเท่าใด ด้วยเงื่อนไขใด ช่วยแจ้งมาทั้งหมดไม่ว่าจะกี่เงื่อนไขก็ตามครับ

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 6:59 am
by nutpochan
เงือนไขมีดังต่อไปนี้ครับ
1. เงื่อนไขในช่อง E12 คือ
ถ้าช่อง Z2>0 และAA2=0 และ AB2=0 และ AC2=0 ช่อง E12 จะแสดง Z2
ถ้าช่อง Z2=0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E12 จะแสดง AA2
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2=0 ช่อง E12 จะแสดง AB2
ถ้าช่อง Z2=0 และ AA2=0 และ AB2=0 และ AC2>0 ช่อง E12 จะแสดง AC2
ถ้าช่อง Z2>0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E12 จะแสดง z2
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E12 จะแสดง AA2
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2>0 ช่อง E12 จะแสดง AB2
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E12 จะแสดง z2
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E12 จะแสดง AA2
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E12 จะแสดง z2

2.เงื่อนไขในช่อง E13 คือ
ถ้าช่อง Z2>0 และAA2=0 และ AB2=0 และ AC2=0 ช่อง E13 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E13 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2=0 ช่อง E13 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2=0 และ AC2>0 ช่อง E13 จะแสดง 0
ถ้าช่อง Z2>0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E13 จะแสดง AA2
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E13 จะแสดง AB2
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2>0 ช่อง E13 จะแสดง AC2
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E13 จะแสดง AA2
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E13 จะแสดง AB2
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E13 จะแสดง AA2

3.เงื่อนไนในช่อง E14 คือ
ถ้าช่อง Z2>0 และAA2=0 และ AB2=0 และ AC2=0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2=0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2=0 และ AC2>0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2>0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2>0 ช่อง E14 จะแสดง 0
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E14 จะแสดง AB2
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E14 จะแสดง AC2
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E14 จะแสดง zB2

4.เงื่อนไขในช่อง E15 คือ
ถ้าช่อง Z2>0 และAA2=0 และ AB2=0 และ AC2=0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2=0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2=0 และ AC2>0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2>0 และ AA2>0 และ AB2=0 และ AC2=0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2=0 และ AB2>0 และ AC2>0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2=0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2=0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E15 จะแสดง 0
ถ้าช่อง Z2>0 และ AA2>0 และ AB2>0 และ AC2>0 ช่อง E15 จะแสดง AC2

เงื่อนไขอาจยาวแต่นาจะมีสูตรอื่นที่ง่ายกว่านี้ครับ คอนเสปเดิมคือ ช่องผต้องเลื่อนมาที่ E12 เสมอถ้าจำนวนสินค้าไม่ครบ 4ชนิด

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 7:36 am
by snasui
:D เงื่อนไขมีจำนวนมาก ให้เขียนด้วย VBA แทน

สำหรับ VBA ลองเขียนมาเองก่อน ติดตรงไหนแล้วค่อยถามกันต่อครับ

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 10:45 am
by tupthai
:D ถ้าผมเข้าใจถูก
มีขนมอยู่ 4 ชนิด ถ้าลูกค้าไม่ได้สั่งก็คือจำนวนเท่ากับ 0 ไม่ต้องเอามาแสดง
1.หาชื่อขนม ที่B12 พิมพ์สูตร
=IFERROR(INDEX($Z$1:$AC$1,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"")
เป็นสูตร array กด Ctrl+Shift+Enterแล้ว copy ลงด้านล่าง
2.หาจำนวน ที่P12 พิมพ์สูตร
=IFERROR(INDEX($Z$2:$AC$2,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"")
เป็นสูตร array กด Ctrl+Shift+Enterแล้ว copy ลงด้านล่าง

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 8:09 pm
by nutpochan
มีขนมอยู่ 4 ชนิด ถ้าลูกค้าไม่ได้สั่งก็คือจำนวนเท่ากับ 0 ไม่ต้องเอามาแสดง
1.หาชื่อขนม ที่B12 พิมพ์สูตร
=IFERROR(INDEX($Z$1:$AC$1,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"")
เป็นสูตร array กด Ctrl+Shift+Enterแล้ว copy ลงด้านล่าง
2.หาจำนวน ที่P12 พิมพ์สูตร
=IFERROR(INDEX($Z$2:$AC$2,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"")
เป็นสูตร array กด Ctrl+Shift+Enterแล้ว copy ลงด้านล่าง


หมายถึง copy =IFERROR(INDEX($Z$1:$AC$1,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"") ไปก่อน เอาไว้วาง B12 แล้วกด Ctrl+Shift+Enter ใช่ไหมครับ

หรือว่า ไปกด Ctrl+Shift+Enter ที่ B12 ก่อนจึงค่อยวางสูตร =IFERROR(INDEX($Z$1:$AC$1,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"")

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 8:26 pm
by nutpochan
:| :| :| :| :| :| :| :|

:cry: :cry: :cry: :cry: :cry: :cry: :cry:

งานผมไม่เสร็จแน่เลย เจ้านายเร่งใช้สิ้นเดือนนี้ด้วยหงิ พี่ๆช่วยผมหน่อยยย

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 8:48 pm
by snasui
:shock: ถ้าเจ้านายเร่งมาก บอกให้มาถามเอง การตอบปัญหาขึ้นกับความสะดวกของผู้ตอบ ไม่สามารถเร่งหรือขอคำตอบด่วน ซึ่งเสมอภาคกันสำหรับสมาชิกทุกคนครับ

ตามที่ผมเข้าใจผมตอบไปแล้ว ผมเห็นว่าเงื่อนไขมีจำนวนมาก ไม่เหมาะกับการเขียนสูตร ให้เขียนมาเป็น VBA แทน ติดแล้วค่อยถามกันต่อ
หมายถึง copy =IFERROR(INDEX($Z$1:$AC$1,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"") ไปก่อน เอาไว้วาง B12 แล้วกด Ctrl+Shift+Enter ใช่ไหมครับ
ให้ Copy สูตรไปวางใน B12 แล้วกดแป้น F2 เพื่อทำการ Edit Cell แล้วกดแป้น Ctrl+Shift ค้างไว้แล้วตามด้าย Enter เพื่อสร้างเป็นสูตร Array ครับ

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 10:33 pm
by nutpochan
ได้แล้วครับ สูตร

=IFERROR(INDEX($Z$1:$AC$1,SMALL(IF($Z$2:$AC$2>0,{1,2,3,4}),ROW()-11)),"")

ใช้ได้จริงๆ ด้วย ขอบคุณ tupthai กับอาจารย์มากๆครับ ถ้าไม่ได้คนช่วยผมคงงมเข็มอีกนาน

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Sun Apr 06, 2014 10:35 pm
by nutpochan
ผมก็พยายามใช้สูตร if ทำเรื่องยากตั้งนาน เจอสูตรนี้นสูตรเดียวจอดเลย ความรู้excell ไม่มีที่สิ้นสุดจริงๆ

Re: สอบถามเรื่องสูตรที่ทำให้บรรทัดเลื่อนขึ้นมาแทนบรรทัดข้างบ

Posted: Mon Apr 07, 2014 7:24 am
by snasui
nutpochan wrote:ผมก็พยายามใช้สูตร if ทำเรื่องยากตั้งนาน เจอสูตรนี้นสูตรเดียวจอดเลย ความรู้excell ไม่มีที่สิ้นสุดจริงๆ
:D จากสูตรในเซลล์ B12 ที่คุณ tubthai เขียนมา หากแสดงผลได้ตรงกับที่ต้องการ ตัวอย่างคำอธิบายโจทย์นี้ควรเขียนว่า

ให้นำค่าใน Z1:AC1 มาเรียงต่อกันลงไปด้านล่างที่เซลล์ B12 เป็นต้นไป โดยมีเงื่อนไขว่า Z2:AC2 ต้องมีค่ามากกว่า 0