If 및 Switch 함수

적용 대상: 캔버스 앱 Dataverse 수식 열 데스크톱 흐름 모델 기반 앱 Power Platform CLI

집합의 조건이 참 인지(If) 또는 수식의 결과가 집합의 값과 일치하는지(Switch) 확인한 다음, 결과를 반환하거나 작업을 실행합니다.

설명

If 함수는 true 결과를 찾을 때까지 하나 이상의 조건을 테스트합니다. 그러한 결과를 찾으면 해당 값이 반환됩니다. 그러한 결과가 없으면 기본값이 반환됩니다. 두 경우 모두, 표시할 문자열, 평가할 수식 또는 다른 양식의 결과가 반환 값이 될 수 있습니다.

Switch 함수는 수식을 평가하고 그 결과가 사용자가 지정한 시퀀스의 값과 일치하는지 확인합니다. 일치하는 항목을 찾으면 해당 값이 반환됩니다. 일치하는 항목이 없으면 기본값이 반환됩니다. 두 경우 모두, 표시할 문자열, 평가할 수식 또는 다른 양식의 결과가 반환 값이 될 수 있습니다.

IfSwitch는 매우 유사하지만 상황에 가장 적합한 함수를 사용해야 합니다.

  • 단일 조건을 평가하려면 If를 사용합니다. 이 함수의 가장 일반적인 구문은 If( Condition, ThenResult, DefaultResult )이며, 다른 프로그래밍 도구에서 볼 수 있는 일반적인 “if … then … else …" 패턴을 제공합니다.
  • 관련이 없는 여러 조건을 평가하려면 If를 사용합니다. Microsoft Excel과 달리 Power Apps에서는 If 수식을 중첩하지 않고 여러 조건을 지정할 수 있습니다.
  • 다수의 가능한 일치 항목에 대해 단일 조건을 평가하려면 Switch를 사용합니다. 이 경우 If를 사용할 수도 있지만 가능한 일치 항목마다 수식을 반복해야 합니다.

두 가지 이상의 작업을 분기하기 위해 동작 수식에 이 두 가지 함수를 모두 사용할 수 있습니다. 하나의 분기만 작업을 트리거합니다. 조건과 일치는 순서대로 평가되고 조건이 true이거나 일치가 발견되면 중지됩니다.

true인 조건이 없고 일치하는 항목이 없고 기본 결과를 지정하지 않으면 공백이 반환됩니다.

구문

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

  • Condition(s) - 필수 항목입니다. true가 있는지 테스트할 수식입니다. 이러한 수식에는 일반적으로 비교 연산자(예: <, >=)와 IsBlankIsEmpty와 같은 테스트 함수가 포함됩니다.
  • ThenResult(s) - 필수 항목입니다. true로 평가되는 조건에 대해 반환할 해당 값입니다.
  • DefaultResult – 선택 사항입니다. true로 평가되는 조건이 없는 경우 반환할 값입니다. 이 인수를 지정하지 않으면 공백이 반환됩니다.

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

  • Formula - 필수 항목입니다. 일치 항목이 있는지 평가할 수식입니다. 이 수식은 한 번만 평가됩니다.
  • Match(s) - 필수 항목입니다. Formula의 결과와 비교할 값입니다. 정확히 일치하는 항목이 발견되면 해당하는 Result가 반환됩니다.
  • Result(s) - 필수 항목입니다. 정확히 일치하는 항목이 발견되면 반환할 해당 값입니다.
  • DefaultResult – 선택 사항입니다. 정확히 일치하는 항목이 없으면 이 값이 반환됩니다. 이 인수를 지정하지 않으면 공백이 반환됩니다.

예제

수식의 값

다음 예제에서 Slider1이라는 Slider 컨트롤의 값은 25입니다.

수식 Description Result
If( Slider1.Value = 25, "Result1" ) 조건은 true이고 해당 결과가 반환됩니다. "Result1"
If( Slider1.Value = 25, "Result1", "Result2" ) 조건은 true이고 해당 결과가 반환됩니다. "Result1"
If( Slider1.Value>1000, "Result1" ) 조건은 false이고 DefaultResult가 제공되지 않았습니다. blank
If( Slider1.Value>1000, "Result1", "Result2" ) 조건은 false이고 DefaultResult가 제공되었고 반환됩니다. "Result2"
If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) 첫 번째 조건은 true이고 해당 결과가 반환됩니다. 두 번째 조건도 true이지만, 인수 목록에서 true로 평가되는 조건보다 뒷부분에 표시되기 때문에 평가되지 않습니다. "Result1"
If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) 슬라이더가 공백이 아니어서 첫 번째 조건은 false입니다. 슬라이더의 값이 숫자이고 해당 결과가 반환되기 때문에 두 번째 조건은 true입니다. "Result2"
If( Slider1.Value>1000, "Result1", Slider1.Value>50, "Result2", "Result3") 첫 번째와 두 번째 조건이 모두 false이며 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이라는 Text input 컨트롤에 "John"이라는 값이 입력되어 있습니다.

수식 설명 결과
If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) 조건이 true이므로 Navigate 함수가 실행됩니다. IsBlank 함수를 사용하면 필수 양식 필드가 채워져 있는지 테스트할 수 있습니다. FirstNameblank인 경우 이 수식은 아무 효과가 없습니다. true

화면이 Screen1으로 변경됩니다.
If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) ! 연산자가 없으면 조건이 false이므로 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" 순서로 비교됩니다. 'John'과 일치하는 항목이 있으므로 앱이 Screen3으로 이동합니다. true

화면이 Screen3으로 변경됩니다.

단계별

  1. Text input 컨트롤을 추가하고 기본적으로 해당 이름이 없는 경우 이름을 Text1로 지정합니다.

  2. Text130을 입력합니다.

  3. Label 컨트롤을 추가하고 Text 속성을 다음 수식으로 설정합니다.
    If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    Text1의 값이 20보다 크지만 40보다 작기 때문에 Label 컨트롤에 더 주문하세요!가 표시됩니다.

  4. Text115을 입력합니다.

    Text1의 값이 20보다 작기 때문에 Label 컨트롤에 더 많이 주문하세요!가 표시됩니다.

  5. Text150을 입력합니다.

    입력한 값이 40 이상이기 때문에 Label 컨트롤에 이 값이 표시됩니다.