แชร์ผ่าน


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

นําไปใช้กับ: แอป พื้นที่ทํางาน Copilot Studio Desktop โฟลว์ คอลัมน์ สูตร Dataverse แอป แบบจําลอง Power Platform CLI Dataverse ฟังก์ชัน Power Pages

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

คำอธิบาย

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

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

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

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

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

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

ไวยากรณ์

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

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

Switch( สูตร, Match1, Result1 [, Match2, Result2, ... [, DefaultResult ] )

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

ตัวอย่าง

ค่าในสูตร

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

สูตร คำอธิบาย 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" พิมพ์ลงในนั้น

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

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

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

หน้าจอจะเปลี่ยนการแสดงผลเป็น 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