:D snasui.com ยินดีต้อนรับ :D
ยินดีต้อนรับสู่กระดานถามตอบ Excel and VBA และอื่น ๆ ที่เป็นมิตรกับทุกท่าน มีไฟล์แนบมหาศาล ช่วยให้ท่านค้นหาและติดตามศึกษาได้โดยง่าย :thup: สมาชิกท่านใดที่ยังไม่ได้ระบุ Version ของ Excel ที่ใช้งานจริง สามารถทำตาม Link นี้เพื่อจะได้รับคำตอบที่ตรงกับ Version ของท่านครับ :arrow: ระบุ Version ของ Excel
:!: โปรดทราบ :!:
  1. กรุณาอ่านกฎการใช้บอร์ด (Forum rules) ในตำแหน่งด้านบนของแต่ละบอร์ด
  2. การสมัครสมาชิก การ Login การกู้คืนรหัสผ่าน
    1. สมัครสมาชิกดูขั้นตอนได้ที่ :arrow: สมัครสมาชิก
    2. Login เข้าระบบโดยคลิกปุ่ม Login ตรงมุมขวาบนของหน้านี้ :roll:
    3. การ Login ผ่าน Facebook ดูวิธีที่ :arrow: Login ผ่าน Facebook
    4. ลืมรหัสผ่านสามารถรับรหัสใหม่ได้ที่ :arrow: Reset รหัสผ่าน
  3. มีปัญหาการใช้งาน แจ้งผู้ดูแลระบบได้ที่ :arrow: ติดต่อผู้ดูแลระบบ
  4. กำหนดการตั้งค่าส่วนตัว เช่นตั้งค่าภาษาเป็นไทยหรืออังกฤษดูได้ที่ :arrow: ตั้งค่าส่วนตัว
  5. การตั้งและตอบกระทู้ดูได้ที่ :arrow: วิธีการตั้งและตอบกระทู้
  6. การจัดรูปแบบตัวอักษรด้วย bbcode ในช่องแสดงความคิดเห็นดูได้ที่ :arrow: จัดรูปแบบตัวอักษร
  7. กำหนดขนาดตัวอักษรใน Browser ดูได้ที่ :arrow: กำหนดขนาดตัวอักษรใน Browser

คำสั่ง IF

ฟอรัมถาม-ตอบปัญหาการใช้งาน MS Excel and VBA
Forum rules
  1. ไม่อนุญาตให้ใช้ภาษาแชทในการถามและตอบปัญหา ไม่ใช้คำว่า "คับ" หรือ "อ่ะครับ" แทนคำว่า "ครับ" ไม่ใช้คำว่า "เด๋ว" แทนคำว่า "เดี๋ยว" เป็นต้น เนื่องจากเมื่อแปลเป็นภาษาต่างประเทศแล้วจะให้ความหมายผิดไปจากที่ควรจะเป็น
  2. ห้ามถามโดยระบุชื่อผู้ตอบและต้องตั้งชื่อกระทู้ให้สื่อถึงปัญหาที่จะถาม ไม่ตั้งชื่อว่า ช่วยด้วยครับ, มีปัญหามาปรึกษาครับ เป็นต้น
  3. กรุณาอธิบายปัญหาและระบุคำตอบที่ต้องการมาในกระทู้ด้วยเสมอถึงแม้จะอธิบายไว้ในไฟล์แนบแล้วก็ตาม ทั้งนี้เพื่ออำนวยความสะดวกแก่เพื่อนสมาชิกในการค้นหาข้อมูล
  4. กรุณาแนบไฟล์ตัวอย่างพร้อมแสดงคำตอบที่ถูกต้องมาในไฟล์ด้วยเพื่อให้ง่ายต่อการทำความเข้าใจและสะดวกต่อการตอบคำถาม (ขนาดไฟล์ไม่เกิน 500Kb ขนาดภาพไม่เกิน 800*600 Pixel) ไม่แนบเป็น Link มาจากแหล่งอื่นที่อาจจะถูกลบทิ้งไปโดยต้นทางในภายหลัง นอกจากนี้ไม่ควรแนบไฟล์ที่มีข้อมูลสำคัญอันก่อให้เกิดความเสียหายกับตนเองและผู้อื่น
  5. กรณีเป็นคำถามเกี่ยวกับ Programming เช่น VBA, VB.Net, C#, SQL ฯลฯ ต้องลองเขียนมาเองก่อนเสมอ ถามเฉพาะที่ติดปัญหา ระบุ Module, Procedure ที่ติดปัญหาให้ชัดเจน กรุณาโพสต์ Code ให้แสดงเป็น Code คือเปิดด้วย [code] และปิดด้วย [/code] ตัวอย่างเช่น [code]dim r as range[/code] เพื่อให้แตกต่างจากข้อความทั่วไป สะดวกในการอ่านและทดสอบ (คลิกเพื่อดูตัวอย่าง)
  6. กรุณาแจ้งผลการใช้งานเมื่อได้รับคำตอบว่าตรงกับความต้องการหรือไม่
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

คำสั่ง IF

#1

Post by impim »

if.xlsx
7.59>=A9>=7.46 และ 7.46<=A9<=7.59
ความหมายไม่เหมือนกันเหรอ ทำไมพอใช้ อันหลังมัน FALSE เมื่อ A9=7.46

สิ่งที่ต้องการคือ (เวลาเข้างานตอนเช้า)
1.ถ้า ก่อน 7.46 =0
2.ถ้า ตั้งแต่ 7.46- 7.59 = A19-7.45
3.ถ้า เวลา 8.00 ดังนั้น A9 = 8.00 คำตอบที่ถูกคือ 0.15
4.ถ้า A9 มากกว่า 8.00 คำตอบที่ถูกคือ [(A19-8.00)*3]+0.15

=IF(7.46>A9,0,IF(7.59>=A9>=7.46,A9-7.45,IF(A9=8,0.15,IF(A9>8,((A9-8)*3)+0.15))))

ถ้าใช้สูตรนี้ เวลาตั้งแต่ 8.00 จะได้คำตอบเป็น0.55 ซึ่งไม่ถูกต้อง

1. ถ้าเข้างาน 8.00 คำตอบต้องเป็น 0.15
แต่ได้คำตอบเป็น 0.55
2. ถ้าเข้างาน 8.01 คำตอบต้องเป็น (0.01*3)+0.15 ซึ่งต้องเท่ากับ 0.18
แต่ได้คำตอบเป็น 0.56

ซึ่งถ้าดูจากคำตอบ แสดงว่า 8.00 ยังไม่พ้นช่วง
7.59>=A9>=7.46,A9-7.45

ต้องทำอย่างไร
You do not have the required permissions to view the files attached to this post.
Last edited by impim on Thu May 29, 2014 12:53 pm, edited 1 time in total.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: คำสั่ง IF

#2

Post by bank9597 »

:D ขอไฟล์ตัวอย่างได้ไหมครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

Re: คำสั่ง IF

#3

Post by impim »

เพิ่งแนบในคำถาม ไม่แน่ใจว่าได้รับหรือเปล่าค่ะ
You do not have the required permissions to view the files attached to this post.
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: คำสั่ง IF

#4

Post by bank9597 »

:D ลองดูครับ

ที่ B12 คีย์ =IF(7.46>A12,0,IF(AND(7.59>=A12,A12>=7.46),A12-7.45,IF(A12=8,0.15,IF(A12>8,((A12-8)*3)+0.15)))) คัดลอกลงมา
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

Re: คำสั่ง IF

#5

Post by impim »

ขอบคุณมากค่ะ
ต้องเขียนแบบนี้หรือค่ะ

รบกวนถามหน่อยค่ะ
if(7.59>=A1>=7.46, กับ
if(7.46<=A1<=7.59,
ไม่เหมือนกันหรือค่ะ

แล้ว
(AND(7.59>=A12,A12>=7.46
ใช้ในกรณีไหนค่ะ

ขอบคุณอีกครั้งค่ะ
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: คำสั่ง IF

#6

Post by bank9597 »

impim wrote:ขอบคุณมากค่ะ
ต้องเขียนแบบนี้หรือค่ะ

รบกวนถามหน่อยค่ะ
if(7.59>=A1>=7.46, กับ
if(7.46<=A1<=7.59,
ไม่เหมือนกันหรือค่ะ

แล้ว
(AND(7.59>=A12,A12>=7.46
ใช้ในกรณีไหนค่ะ

ขอบคุณอีกครั้งค่ะ
:D

if(7.59>=A1>=7.46 ไม่สามารถใช้ได้ครับ เพราะมันเป็น 2 เงื่อน แต่สูตรจะมองเห็นแค่เงื่อนไขเดียว คือ if(7.59>=A1 คุณต้องใช้ if อีกตัวเข้ามา เช่น if(7.59>=A1if(A1>=7.46,1,0)) เป็น

ส่วน (AND(7.59>=A12,A12>=7.46 จะมีสูตร AND เข้ามาช่วย คือ ช่วยให้สามารถระบุเงื่อนไขได้มากกว่า 1 เงื่อนไขครับ จะใช้ก็ต่อเมื่อเราต้องการใช้เงื่อนไขที่มากกว่า 1 ข้อครับ
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

Re: คำสั่ง IF

#7

Post by impim »

ขอบคุณมากค่ะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง IF

#8

Post by snasui »

impim wrote:if(7.59>=A1>=7.46 ไม่สามารถใช้ได้ครับ เพราะมันเป็น 2 เงื่อน แต่สูตรจะมองเห็นแค่เงื่อนไขเดียว
:D มาช่วยเสริมครับ

สูตรจะมองเห็นทุกเงื่อนไขครับ แต่อาจจะไม่ตรงกับที่เราเข้าใจ

อธิบายย่อ ๆ

การคำนวณของ Excel จะคำนวณจากซ้ายไปขวาสำหรับเครื่องหมายการคำนวณที่มีศักดิ์เท่ากัน

สำหรับกรณีนี้ Excel จะแปลผลโดยหาผลลัพธ์ของ 7.59>=A1 ออกมาก่อน หากเป็นจริงผลลัพธ์คือ True หากเป็นเท็จผลลัพธ์คือ False จากนั้นนำ True หรือ False ที่ได้ไปเทียบกับตัวถัดไป จะได้เป็น

True>=7.46 หรือ False>=7.46

ทั้งสองกรณีผลลัพธ์จะได้ True อย่างเดียวเท่านั้น ไม่สามารถเป็น False ได้ ทั้งนี้เพราะ True และ False ถูกรับรู้เป็น Text ส่วน 7.46 เป็น Number ซึ่งในโปรแกรม Excel จะถือว่า Text มากว่า Number เสมอ ไม่ว่า Number นั้นจะมีค่ามากเท่าใดก็ตาม

สรุป 7.59>=A1>=7.46 เป็นการเขียนเงื่อนไขทีไม่ถูกต้อง ผลลัพธ์จะเป็น True เสมอไปครับ ตามความมุ่งหมายของสูตรนี้ต้องการให้เข้าเงื่อนไข 2 เงื่อนไขพร้อมกัน ดังนั้นจึงควรใช้ And เข้ามาช่วย เป็น And(7.59>=A1, A1>=7.46) แปลว่า 7.59>=A1 และ A1>=7.46
User avatar
bank9597
Guru
Guru
Posts: 3868
Joined: Wed Aug 17, 2011 11:49 am

Re: คำสั่ง IF

#9

Post by bank9597 »

:mrgreen: ขอบคุณอาจารย์มากน่ะครับ ให้ความกระจ่างมากๆเลย
Forum Rules
  1. อย่าใช้ภาษาแชทในการตอบ-ถาม
  2. ตั้งชื่อกระทู้ให้สื่อถึงปัญหาและไม่เจาะจงตัวผู้ตอบ
  3. ให้อธิบายปัญหาและระบุคำตอบที่ต้องการมาในฟอรัม
  4. ควรแนบไฟล์ตัวอย่างมาที่ฟอรั่ม
  5. หากใช้ VBA ให้ลองเขียนมาเองก่อนเสมอ
  6. แจ้งผลการใช้งานทุกครั้งเมื่อได้รับคำตอบ
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

Re: คำสั่ง IF

#10

Post by impim »

คือตอนแรกก็ยังงง ว่า

7.59>=A9>=7.46 และ 7.46<=A9<=7.59
ทำไมจึงได้คำตอบไม่เหมือนกันค่ะ

แต่ตอนนี้เข้าใจแล้วค่ะ


ขอบคุณอาจารย์มากนะคะ
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

คำสั่ง IF

#11

Post by impim »

ต้องการเขียนสูตรว่า
ถ้า A1 น้อยกว่า 0 คำตอบที่ต้องการ คือ 0 และ
ถ้า A1 มากกว่ากว่า 0 แต่น้อยกว่า 300,000 คำตอบที่ต้องการ คือ AI และ
ถ้า A1 มากกว่า 300,000 คำตอบที่ต้องการ คือ 300,000

ปัญหาคือ เงื่อนไขที่ 2 ไม่ผ่านค่ะ

สูตรที่เขียนคือ
=IF(A1<0,0,IF(0<A1<300000,A1,IF(0<A1>=300000,300000)))
คำตอบที่ได้ = 300,000

สูตรที่เขียนคือ
=IF(A1<0,0,IF(0<A1<300000,A1,IF(and(A1>0,A1>=300000),300000)))
คำตอบที่ได้ = FALSE

รบกวนขอคำแนะนำหน่อยค่ะ
User avatar
XDoll
Bronze
Bronze
Posts: 261
Joined: Sun Mar 03, 2013 9:23 pm

Re: คำสั่ง IF

#12

Post by XDoll »

:D ใช่แบบนี้ไหมครับ
=IF(A1<0,0,IF(A1<300000,A1,IF(A1>=300000,300000)))
primevalm
Member
Member
Posts: 37
Joined: Tue Aug 26, 2014 6:17 pm

Re: คำสั่ง IF

#13

Post by primevalm »

impim wrote:ต้องการเขียนสูตรว่า
ถ้า A1 น้อยกว่า 0 คำตอบที่ต้องการ คือ 0 และ
ถ้า A1 มากกว่ากว่า 0 แต่น้อยกว่า 300,000 คำตอบที่ต้องการ คือ AI และ
ถ้า A1 มากกว่า 300,000 คำตอบที่ต้องการ คือ 300,000

ปัญหาคือ เงื่อนไขที่ 2 ไม่ผ่านค่ะ

สูตรที่เขียนคือ
=IF(A1<0,0,IF(0<A1<300000,A1,IF(0<A1>=300000,300000)))
คำตอบที่ได้ = 300,000

สูตรที่เขียนคือ
=IF(A1<0,0,IF(0<A1<300000,A1,IF(and(A1>0,A1>=300000),300000)))
คำตอบที่ได้ = FALSE

รบกวนขอคำแนะนำหน่อยค่ะ
=MIN(300000,MAX(0,A1))
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

Re: คำสั่ง IF

#14

Post by impim »

ขอบคุณนะคะ คุณ primevalm
จะลองเอาสูตรที่คุณบอกไปใช้ดูนะคะ..

ลองอ่านที่อาจารย์อธิบายไว้ แล้วแก้ใหม่เป็นแบบนี้ได้คำตอบแล้วค่ะ
=IF(A1<0,0,IF(and(0<A1<300000),A1,IF(and(A1>0,A1>=300000),300000)))

ขอบคุณอีกครั้งนะคะ
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง IF

#15

Post by snasui »

impim wrote:ขอบคุณนะคะ คุณ primevalm
จะลองเอาสูตรที่คุณบอกไปใช้ดูนะคะ..

ลองอ่านที่อาจารย์อธิบายไว้ แล้วแก้ใหม่เป็นแบบนี้ได้คำตอบแล้วค่ะ
=IF(A1<0,0,IF(and(0<A1<300000),A1,IF(and(A1>0,A1>=300000),300000)))

ขอบคุณอีกครั้งนะคะ
:D ส่วนที่ผมระบายสีไว้เขียนเช่นนั้นไม่ได้ครับ

ที่ถูกต้องควรเป็นด้านล่างครับ

And(0<A1,A1<300000)
impim
Bronze
Bronze
Posts: 304
Joined: Thu May 29, 2014 12:32 pm

Re: คำสั่ง IF

#16

Post by impim »

เรียน อ.snasui ค่ะ

จากสูตร
=IF(A1<0,0,IF(and(0<A1<300000),A1,IF(and(A1>0,A1>=300000),300000)))

รบกวนถามหน่อยค่ะว่าทำไมเขียนแบบนี้ไม่ได้ค่ะ
(and(0<A1<300000)

แต่ต้องเขียนแบบนี้
And(0<A1,A1<300000)

ไม่ทราบว่าเพราะอะไรคะ

ขอบคุณค่ะ
วังวู ช่ง
Silver
Silver
Posts: 805
Joined: Thu May 31, 2012 2:27 pm
Location: Laos
Excel Ver: MS Excel for office 365 MSO
Contact:

Re: คำสั่ง IF

#17

Post by วังวู ช่ง »

ลองศึกษาตามนี้ก่อนครับ
http://snasui.blogspot.com/2009/03/and-or.html
User avatar
snasui
Site Admin
Site Admin
Posts: 30917
Joined: Sun Jan 24, 2010 12:33 pm
Location: Songkhla, Thailand
Excel Ver: 2010, 365
Contact:

Re: คำสั่ง IF

#18

Post by snasui »

impim wrote:เรียน อ.snasui ค่ะ

จากสูตร
=IF(A1<0,0,IF(and(0<A1<300000),A1,IF(and(A1>0,A1>=300000),300000)))

รบกวนถามหน่อยค่ะว่าทำไมเขียนแบบนี้ไม่ได้ค่ะ
(and(0<A1<300000)

แต่ต้องเขียนแบบนี้
And(0<A1,A1<300000)

ไม่ทราบว่าเพราะอะไรคะ

ขอบคุณค่ะ
:D อ่านทบทวนที่โพสต์นี้ครับ viewtopic.php?f=3&t=6802&p=43358#p43361
Post Reply