แชร์ผ่าน


ฟังก์ชัน If และ Switch

ใช้กับ: แอปพื้นที่ทำงาน คอลัมน์สูตร Dataverse โฟลว์เดสก์ท็อป แอปแบบจำลอง Power Platform CLI

พิจารณาว่า เงื่อนไขใดๆ ในชุดเป็นจริง (ถ้า) หรือผลลัพธ์ของสูตรตรงกับค่าใดๆ ในชุด (สลับ) แล้วส่งกลับผลลัพธ์ หรือดำเนินการการกระทำ

คำอธิบาย

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

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

If และ Switch มีความคล้ายคลึงกัน แต่คุณควรใช้ฟังก์ชันที่ดีที่สุดสำหรับสถานการณ์ของคุณ:

  • ใช้ ถ้า เพื่อประเมินเงื่อนไขข้อเดียว ไวยากรณ์พบบ่อยที่สุดสำหรับฟังก์ชันนี้คือ If( ConditionThenResultDefaultResult ) ซึ่งให้รูปแบบ "if... จากนั้น... else …" ที่เห็นได้บ่อยในเครื่องมือการเขียนโปรแกรมอื่นๆ
  • ใช้ ถ้า เพื่อประเมินเงื่อนไขหลายเงื่อนไขที่ไม่เกี่ยวข้องกัน ใน Power Apps (ไม่เหมือนกับ Microsoft Excel) คุณสามารถระบุหลายเงื่อนไข โดยไม่ต้องซ้อนสูตร สูตร ได้
  • ใช้ สลับ เพื่อประเมินเงื่อนไขเดียวกับค่าที่ตรงกันได้หลายค่า คุณยังสามารถใช้ ถ้า ในกรณีนี้ แต่คุณจำเป็นต้องใช้สูตรซ้ำๆ สำหรับแต่ละค่าที่มีโอกาสตรงกัน

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

Blank จะถูกส่งกลับถ้าไม่มีเงื่อนไขที่เป็น จริง หรือไม่พบรายการที่ตรงกัน และคุณไม่ได้ระบุค่าเริ่มต้นผลลัพธ์

ไวยากรณ์

If( Condition, ThenResult [, DefaultResult ] )
If( Condition1, ThenResult1 [, Condition2, ThenResult2, ... [ , DefaultResult ] ] )

  • เงื่อนไข - จำเป็นต้องมี สูตรที่จะทดสอบว่าเป็น true สูตรดังกล่าวมักเป็น ตัวดำเนินการ เปรียบเทียบ (เช่น <, > และ =) และฟังก์ชันทดสอบ เช่น IsBlank และ IsEmpty
  • ThenResult(s) - จำเป็นต้องมี เป็นค่าที่สอดคล้องกัน ที่จะส่งคืนสำหรับเงื่อนไขที่ประเมินเป็น จริง
  • DefaultResult - ไม่บังคับ เป็นค่าที่ส่งคืน ถ้าไม่มีเงื่อนไขที่ประเมินเป็น จริง ถ้าคุณไม่ได้ระบุอาร์กิวเมนต์นี้ ว่าง จะถูกส่งคืน

Switch( Formula, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] ] )

  • สูตร – จำเป็น สูตรจะประเมินหาค่าที่ตรงกัน สูตรนี้จะถูกประเมินเพียงครั้งเดียว
  • Match(s) จำเป็นต้องมี ค่าเพื่อเปรียบเทียบกับผลลัพธ์จาก สูตร ถ้าพบค่าที่ตรงกัน ผลลัพธ์ ที่สอดคล้องกันจะถูกส่งกลับ
  • ผลลัพธ์ - จำเป็นต้องมี ค่าที่สอดคล้องกันที่จะส่งกลับ เมื่อพบการตรงกัน
  • DefaultResult - ไม่บังคับ ถ้าไม่พบการตรงกันเลย ค่านี้จะถูกส่งกลับ ถ้าคุณไม่ได้ระบุอาร์กิวเมนต์นี้ ว่าง จะถูกส่งคืน

ตัวอย่าง

ค่าในสูตร

ในตัวอย่างต่อไปนี้ ตัวควบคุม แถบเลื่อน (ที่ชื่อ Slider1) มีค่าเป็น 25

สูตร Description Result
If( Slider1.Value = 25, "Result1" ) เงื่อนไขคือ จริง และจะส่งกลับผลลัพธ์ที่สอดคล้องกัน "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) เงื่อนไขคือ จริง และจะส่งกลับผลลัพธ์ที่สอดคล้องกัน "Result1"
If( Slider1.Value>1000, "Result1" ) เงื่อนไขคือ เท็จ และไม่ได้กำหนดค่า DefaultResult ว่างเปล่า
If( Slider1.Value>1000, "Result1", "Result2" ) เงื่อนไขคือ เท็จ และให้ค่า DefaultResult มา และค่านี้จะถูกส่งกลับ "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) เงื่อนไขแรกคือ จริง และจะส่งกลับผลลัพธ์ที่สอดคล้องกัน เงื่อนไขที่สองยังเป็น จริง แต่จะไม่ถูกประเมิน เนื่องจากปรากฏขึ้นในรายการอาร์กิวเมนต์หลังเงื่อนไขที่ประเมินว่าเป็น จริง แล้ว "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) เงื่อนไขแรกเป็น เท็จ เนื่องจากแถบเลื่อนไม่ได้ ว่าง เงื่อนไขสองคือ จริง เนื่องจากค่าของแถบเลื่อนเป็นตัวเลข และจะส่งกลับผลลัพธ์สอดคล้องกัน "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") ทั้งเงื่อนไขที่หนึ่งและที่สองเป็น เท็จ แต่ให้ค่า DefaultResult มา และค่านี้จะถูกส่งกลับ "Result3"
Switch( Slider1.Value, 25, "Result1" ) ค่าของแถบเลื่อนตรงกับค่าแรกที่จะตรวจสอบ และจะส่งกลับเป็นผลลัพธ์ที่สอดคล้องกัน "Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) ค่าของแถบเลื่อนตรงกับค่าที่สองจะตรวจสอบ และจะส่งกลับผลลัพธ์ที่สอดคล้องกัน "Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) ค่าของแถบเลื่อนไม่ตรงกับค่าใดๆ ที่จะตรวจสอบ มีค่า DefaultResult ให้มา ดังนั้นค่านี้จะถูกส่งกลับ "DefaultResult"

การแตกสาขาในสูตรลักษณะการทำงาน

ในตัวอย่างเหล่านี้ ตัวควบคุม การป้อนข้อความ ที่ชื่อว่า FirstName มีค่า "John" พิมพ์ลงในนั้น

สูตร คำอธิบาย ผลลัพธ์
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) เงื่อนไขเป็น จริง ดังนั้นฟังก์ชัน Navigate จึงทำงาน คุณสามารถใช้ฟังก์ชัน IsBlank เพื่อทดสอบว่าิฟิลด์ฟอร์มที่จำเป็น มีการกรอกข้อมูลแล้วหรือไม่ ถ้า FirstName เป็น blank สูตรนี้จะไม่มีผล true

หน้าจอจะเปลี่ยนการแสดงผลเป็น Screen1
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) หากไม่มีตัวดำเนินการ ! เงื่อนไขเป็น เท็จ ดังนั้นฟังก์ชัน Navigate จึงไม่ทำงาน ฟังก์ชัน Back ให้เป็น DefaultResult ดังนั้นฟังก์ชันนี้จะทำงาน true

หน้าจอจะกลับไปยังหน้าจอที่แสดงไว้ก่อนหน้านี้
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) ค่าของ FirstName.Text ถูกเปรียบเทียบกับ "Carlos" "Kirstin" และ "John" ตามลำดับ พบค่าที่ตรงกันคือ "จอห์น" ดังนั้นแอปจะนำทางไปยัง Screen3 true

หน้าจอจะเปลี่ยนการแสดงผลเป็น Screen3

ทีละขั้นตอน

  1. เพิ่มตัวควบคุม การป้อนข้อความ และตั้งชื่อ Text1 ถ้าไม่มีชื่อที่เป็นค่าเริ่มต้น

  2. ใน Text1 พิมพ์ 30

  3. เพิ่มตัวควบคุม ป้ายชื่อ แล้วตั้งค่าคุณสมบัติ Text เป็นสูตรนี้:
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    ตัวควบคุม ป้ายชื่อ แสดง Order more! เพราะค่าของ Text1 มากกว่า 20 แต่น้อยกว่า 40

  4. ใน Text1 พิมพ์ 15

    ตัวควบคุม ป้ายชื่อ แสดง Order MANY more! เพราะค่าของ Text1 น้อยกว่า 20

  5. ใน Text1 พิมพ์ 50

    ตัวควบคุม ป้ายชื่อ แสดงค่าที่คุณพิมพ์ เนื่องจากมีค่ามากกว่า 40