snasui.com ยินดีต้อนรับ
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ ระบุ Version ของ Excel
ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code]
และปิดด้วย [/code]
ตัวอย่างเช่น [code]dim r as range[/code]
เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#21
Post
by snasui » Sun Jul 02, 2017 8:58 am
patchsinee wrote: เงื่อนไขสำหรับสูตรนี้คือดังนี้ค่ะอาจารย์
1.หากตัวเลขที่นำมาใส่ ไม่ถึง 500 นำค่าจริงมาใส่เลย สมมติ 300 ให้นำ 300 มาใส่
2.ถ้าเกิน 500 ขึ้นไปถึงกี่แสนก็ตาม ให้นำมาคูณ 10% แต่ถ้าคูณ 10% แล้วยอดที่ต้องใส่ไม่ถึง 500 ก็ให้กลับไปข้อ 1 คือ นำยอดจริงมาใส่ ยอดของเงื่อนไขข้อ 2 คือ ต้องใส่ 500 บาทขึ้นไปเมื่อคูณ 10% แล้วค่ะอาจารย์
ผมยึดตามโพสต์นี้ครับ
สูตรจะเป็นด้านล่างครับ
=IF(C6="Closed","",IF(C6<500,C6 ,IF(C6*10%<500,C6,C6*10%) ))
ที่ระบายสีน้ำเงินและเขียวคือเงื่อนไขตามข้อ 1 และ 2 ตามลำดับครับ
patchsinee
Member
Posts: 64 Joined: Fri Nov 30, 2012 1:19 pm
#22
Post
by patchsinee » Sun Jul 02, 2017 9:38 am
อาจารย์คะ
ได้แก้ไขสูตรใน cell C29 = =IF(C6="Closed","",IF(C26>499,C9*10%,LOOKUP(C26,{0,499},C26:C28)))
รบกวนอาจารย์ตรวจให้หน่อยค่ะ
ขอบคุณค่ะ
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#23
Post
by snasui » Sun Jul 02, 2017 10:43 am
อธิบายเงื่อนไขทุกเงื่อนไขมาทั้งหมดอีกรอบ ย้ำว่าทุกเงื่อนไข เขียนมาเป็นข้อ ๆ ครับ
เรียงลำดับความสำคัญมาเลยว่าเงื่อนไขใดต้องคิดก่อน เงื่อนไขใดต้องคิดในลำดับถัดมา เมื่อมีเงื่อนไขทั้งหมดแล้วจึงจะช่วยตรวจสอบให้ได้ ไม่เช่นนั้นก็จะถามตอบกันไปเรื่อย ๆ วนกลับไปกลับมาอยู่เช่นเดิมครับ
patchsinee
Member
Posts: 64 Joined: Fri Nov 30, 2012 1:19 pm
#24
Post
by patchsinee » Sun Jul 02, 2017 11:16 am
ค่ะอาจารย์
เงื่อนไข
1.ถ้า C26 < 500 นำค่าจริงใน C9 มาใส่ ไม่ต้องคำนวณ
2.ถ้า C26 > 500 นำมาคูณ10% แล้ว C26 > 500 ให้นำยอดที่คูณ 10% ได้แล้ว นำค่าที่ได้มาใส่ C29
3.ถ้า C26 > 500 นำมาคูณ10% แล้ว แต่ได้ค่า C26 < 500 ให้นำยอด 500 มาใส่ C29
หากคิดตามนี้ในสูตรคำนวณได้ข้อ 1 และ 2 ขาดข้อ 3 ค่ะ
ตามไฟล์ที่แนบมาเพิ่มเติมค่ะ
หลักการตามที่หนูคิด คือ
1. ถ้าลูกค้าใช้ card น้อยกว่า 500 บาท จ่ายตามจริง
2. ถ้าลูกค้าใช้ card มากกว่า 500 บาท (500ถึง 4999) แต่ยอดขั้นต่ำต้องชำระ 10% ของ card
เมื่อคำนวณแล้วไม่ถึง 500 บาท ให้ลูกค้าชำระ 500 บาท
3. ถ้าลูกค้าใช้ card มากกว่า 500 บาท เมื่อคำนวณขั้นต่ำต้องชำระ 10% ของ card เกิน 500 บาท ให้นำยอดขั้นต่ำที่คำนวณได้มาใส่
ขอบคุณค่ะอาจารย์
You do not have the required permissions to view the files attached to this post.
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#25
Post
by snasui » Sun Jul 02, 2017 11:36 am
patchsinee wrote: ค่ะอาจารย์
เงื่อนไข
1.ถ้า C26 < 500 นำค่าจริงใน C9 มาใส่ ไม่ต้องคำนวณ
2.ถ้า C26 > 500 นำมาคูณ10% แล้ว C26 > 500 ให้นำยอดที่คูณ 10% ได้แล้ว นำค่าที่ได้มาใส่ C29
3.ถ้า C26 > 500 นำมาคูณ10% แล้ว แต่ได้ค่า C26 < 500 ให้นำยอด 500 มาใส่ C29
หากคิดตามนี้ในสูตรคำนวณได้ข้อ 1 และ 2 ขาดข้อ 3 ค่ะ
ตามไฟล์ที่แนบมาเพิ่มเติมค่ะ
หลักการตามที่หนูคิด คือ
1. ถ้าลูกค้าใช้ card น้อยกว่า 500 บาท จ่ายตามจริง
2. ถ้าลูกค้าใช้ card มากกว่า 500 บาท (500ถึง 4999) แต่ยอดขั้นต่ำต้องชำระ 10% ของ card
เมื่อคำนวณแล้วไม่ถึง 500 บาท ให้ลูกค้าชำระ 500 บาท
3. ถ้าลูกค้าใช้ card มากกว่า 500 บาท เมื่อคำนวณขั้นต่ำต้องชำระ 10% ของ card เกิน 500 บาท ให้นำยอดขั้นต่ำที่คำนวณได้มาใส่
ขอบคุณค่ะอาจารย์
สังเกตจากเซลล์ที่ผมระบายสีนะครับ ซึ่ง ณ ปัจจุบันเรากำลังเขียนสูตรเพื่อหาคำตอบที่เซลล์ C26 แต่จากอธิบายมานั้น เป็นกรณีใช้ผลลัพธ์ไปคำนวณหาผลลัพธ์เรื่อย ๆ จะเกิดความซับซ้อนที่ไม่จำเป็น คำถามคือเซลล์ที่ผมระบายสีไว้นั้นควรจะเป็น C9 หรือ C26 ครับ
สามารถใช้ C9 แทน C26 ได้หรือไม่เนื่องจาก C9 เป็นค่าต้นทางโดยตรง หากไม่ได้ ติดปัญหาใดครับ
patchsinee
Member
Posts: 64 Joined: Fri Nov 30, 2012 1:19 pm
#26
Post
by patchsinee » Sun Jul 02, 2017 12:23 pm
อาจารย์ค่ะ เขียนสูตรได้แล้ว แต่พอดึงเพื่อ copy ไปด้านขวา ขึ้น #VALUE! ต้องแก้ไขตรงไหนคะ
=IF(C4="Closed","",IF(C26<500,C26,IF(C26*10%<500,500,C26*10%)))
ขอบคุณค่ะ
snasui
Site Admin
Posts: 30744 Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:
#27
Post
by snasui » Sun Jul 02, 2017 12:37 pm
เขียนไว้ตรงไหน อย่างไร แนบไฟล์มาด้วยครับ