Funções If e Switch no PowerAppsIf and Switch functions in PowerApps

Determina se qualquer condição em um conjunto é verdadeira (If) ou se o resultado de uma fórmula corresponde a qualquer valor em um conjunto (Switch) e, em seguida, retorna um resultado ou executa uma ação.Determines whether any condition in a set is true (If) or the result of a formula matches any value in a set (Switch) and then returns a result or executes an action.

DescriçãoDescription

A função If testa uma ou mais condições até que um resultado true seja encontrado.The If function tests one or more conditions until a true result is found. Se tal resultado for encontrado, um valor correspondente será retornado.If such a result is found, a corresponding value is returned. Se tal resultado não for encontrado, um valor padrão será retornado.If no such result is found, a default value is returned. Em ambos os casos, o valor retornado pode ser uma cadeia de caracteres para mostrar, uma fórmula para avaliar ou outra forma de resultado.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

A função Switch avalia uma fórmula e determina se o resultado corresponde a qualquer valor em uma sequência especificada.The Switch function evaluates a formula and determines whether the result matches any value in a sequence that you specify. Se uma correspondência for encontrada, um valor correspondente será retornado.If a match is found, a corresponding value is returned. Se nenhuma correspondência for encontrada, um valor padrão será retornado.If no match is found, a default value is returned. Em ambos os casos, o valor retornado pode ser uma cadeia de caracteres para mostrar, uma fórmula para avaliar ou outra forma de resultado.In either case, the returned value might be a string to show, a formula to evaluate, or another form of result.

If e Switch são muito semelhantes, mas a melhor função para sua situação é a que deve ser usada:If and Switch are very similar, but you should use the best function for your situation:

  • Use If para avaliar uma única condição.Use If to evaluate a single condition. A sintaxe mais comum para essa função é If( Condition, ThenResult, DefaultResult ), que fornece o frequente padrão "if…The most common syntax for this function is If( Condition, ThenResult, DefaultResult ), which provides the common “if … then…then … else…”else …” visto em outras ferramentas de programação.pattern seen in other programming tools.
  • Use If para avaliar várias condições não relacionadas.Use If to evaluate multiple unrelated conditions. No PowerApps (ao contrário do Microsoft Excel), é possível especificar várias condições sem precisar aninhar fórmulas If.In PowerApps (unlike Microsoft Excel), you can specify multiple conditions without having to nest If formulas.
  • Use Switch para avaliar uma única condição em relação a várias correspondências possíveis.Use Switch to evaluate a single condition against multiple possible matches. Também é possível usar If nesse caso, mas seria necessário repetir a fórmula para cada correspondência possível.You can also use If in this case, but you'd need to repeat the formula for each possible match.

É possível usar ambas as funções em fórmulas de comportamento para o branch entre duas ou mais ações.You can use both of these functions in behavior formulas to branch between two or more actions. Apenas um branch disparará uma ação.Only one branch will trigger an action. Condições e correspondências são avaliadas em ordem e param se uma condição é true ou se uma correspondência é encontrada.Conditions and matches are evaluated in order, and they stop if a condition is true or a match is found.

Blank será retornado se nenhuma condição for true, se não houver correspondências e se um resultado padrão não for especificado.Blank is returned if no conditions are true, no matches are found, and you don't specify a default result.

SintaxeSyntax

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

  • Condições - obrigatório.Condition(s) - Required. Fórmulas a serem testadas para true.Formula(s) to test for true. Normalmente, essas fórmulas contêm operadores de comparações (como <, >, e =) e funções de teste como IsBlank e IsEmpty.Such formulas commonly contain comparison operators (such as <, >, and =) and test functions such as IsBlank and IsEmpty.
  • ThenResult(s) – obrigatório.ThenResult(s) - Required. O valor correspondente para retornar uma condição que é avaliada como verdadeira.The corresponding value to return for a condition that evaluates to true.
  • DefaultResult – opcional.DefaultResult - Optional. Valor a ser retornado se nenhuma das condições for avaliada como true.The value to return if no condition evaluates to true. Se você não especificar esse argumento, o valor retornará em branco.If you don't specify this argument, blank is returned.

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

  • Formula – Obrigatório.Formula - Required. Fórmula a ser avaliada para correspondências.Formula to evaluate for matches. Essa fórmula é avaliada apenas uma vez.This formula is evaluated only once.
  • Match(s) – Obrigatório.Match(s) - Required. Valores a se comparar com o resultado de Fórmula.Values to compare with the result from Formula. Se uma correspondência exata for encontrada, o Resultado correspondente será retornado.If an exact match is found, the corresponding Result is returned.
  • Resultados - obrigatório.Result(s) - Required. O valor correspondente a ser retornado quando uma correspondência exata for encontrada.The corresponding value to return when an exact match is found.
  • DefaultResult – opcional.DefaultResult - Optional. Se uma correspondência exata não for encontrada, o valor será retornado.If an exact match isn't found, this value is returned. Se você não especificar esse argumento, o valor retornará em branco.If you don't specify this argument, blank is returned.

ExemplosExamples

Valores em fórmulasValues in formulas

Nos exemplos a seguir, um controle Deslizante (chamado Slider1) tem um valor de 25.In the following examples, a Slider control (named Slider1) has a value of 25.

FórmulaFormula DescriçãoDescription ResultadoResult
If( Slider1.Value = 25, "Resultado1")If( Slider1.Value = 25, "Result1" ) A condição é verdadeira e o resultado correspondente é retornado.The condition is true, and the corresponding result is returned. "Resultado1""Result1"
If( Slider1.Value = 25, "Resultado1", "Resultado2")If( Slider1.Value = 25, "Result1", "Result2" ) A condição é verdadeira e o resultado correspondente é retornado.The condition is true, and the corresponding result is returned. "Resultado1""Result1"
If( Slider1.Value > 1000, "Resultado1")If( Slider1.Value > 1000, "Result1" ) A condição é false e não é fornecido nenhum DefaultResult.The condition is false, and no DefaultResult was provided. em brancoblank
If( Slider1.Value > 1000, "Resultado1", "Resultado2")If( Slider1.Value > 1000, "Result1", "Result2" ) A condição é false, um DefaultResult foi fornecido e retornado.The condition is false, a DefaultResult was provided, and it's returned. "Resultado2""Result2"
If( Slider1.Value = 25, "Resultado1" Slider1.Value > 0, "Resultado2")If( Slider1.Value = 25, "Result1", Slider1.Value > 0, "Result2" ) A primeira condição é verdadeira e o resultado correspondente é retornado.The first condition is true, and the corresponding result is returned. A segunda condição é também verdadeira, mas não é avaliada, porque aparece posteriormente na lista de argumentos do que uma condição avaliada como verdadeira.The second condition is also true, but it isn't evaluated because it appears later in the argument list than a condition that evaluates to true. "Resultado1""Result1"
If( IsBlank( Slider1.Value ), "Resultado1", IsNumeric( Slider1.Value ), "Resultado2")If( IsBlank( Slider1.Value ), "Result1", IsNumeric( Slider1.Value ), "Result2" ) A primeira condição é false, porque o controle deslizante não está em branco.The first condition is false because the slider isn't blank. A segunda condição é verdadeira porque o valor do controle deslizante é um número e o resultado correspondente será retornado.The second condition is true because the slider's value is a number, and the corresponding result is returned. "Resultado2""Result2"
If(Slider1.Value > 1000, "Resultado1" Slider1.Value > 50, "Resultado2", "Resultado3")If( Slider1.Value > 1000, "Result1", Slider1.Value > 50, "Result2", "Result3") A primeira e segunda condições são false e o DefaultResult foi fornecido e retornado.Both the first and second conditions are false, a DefaultResult was provided, and it's returned. "Resultado3""Result3"
Switch( Slider1.Value, 25, "Result1" )Switch( Slider1.Value, 25, "Result1" ) O valor do controle deslizante corresponde ao primeiro valor a ser verificado e o resultado correspondente é retornado.The slider's value matches the first value to be checked, and the corresponding result is returned. "Resultado1""Result1"
Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" )Switch( Slider1.Value, 20, "Result1", 25, "Result2", 30, "Result3" ) O valor do controle deslizante corresponde ao segundo valor a ser verificado e o resultado correspondente é retornado.The slider's value matches the second value to be checked, and the corresponding result is returned. "Resultado2""Result2"
Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" )Switch( Slider1.Value, 20, "Result1", 10, "Result2", 0, "Result3", "DefaultResult" ) O valor do controle deslizante não corresponde a qualquer valor a ser verificado.The slider's value doesn't match any value to be checked. Um DefaultResult foi fornecido, portanto, será retornado.A DefaultResult was provided, so it's returned. "DefaultResult""DefaultResult"

Ramificação em fórmulas de comportamentoBranching in behavior formulas

Nos exemplos a seguir, um controle Entrada de texto chamado FirstName tem o valor “John” digitado nele.In these examples, a Text input control named FirstName has the value "John" typed into it.

FórmulaFormula DescriçãoDescription ResultadoResult
If( ! IsBlank( FirstName.Text ), Navigate( Tela1, ScreenTransition.None ) )If( ! IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ) ) A condição é verdadeira, então a função Navegar é executada.The condition is true, so the Navigate function runs. Você pode usar a função IsBlank para testar se um campo de formulário obrigatório foi preenchido.You can use the IsBlank function to test whether a required form field has been filled in. Se FirstName estivesse em branco, essa fórmula não teria efeito.If FirstName were blank, this formula would have no effect. truetrue

A exibição é alterada para Tela1.The display is changed to Screen1.
If( IsBlank( FirstName.Text ), Navigate( Tela1, ScreenTransition.None ), Back() )If( IsBlank( FirstName.Text ), Navigate( Screen1, ScreenTransition.None ), Back() ) Sem o operador !,Without the ! a condição é false e a função Navegar não é executada.operator, the condition is false, so the Navigate function doesn't run. A função Back foi fornecida como DefaultResult, então, será executada.The Back function was provided as a DefaultResult, so it runs. truetrue

A exibição volta a exibir a tela que estava em exibição anteriormente.The display goes back to the screen that was previously shown.
Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) )Switch( FirstName.Text, "Carlos", Navigate( Screen1, ScreenTransition.None ), "Kirstin", Navigate( Screen2, ScreenTransition.None ), "John", Navigate( Screen3, ScreenTransition.None ) ) O valor de FirstName.Text é comparado com "Carlos", "Kirstin" e "John", nessa ordem.The value of FirstName.Text is compared against "Carlos", "Kirstin", and "John" in that order. Uma correspondência é encontrada para "John", então o aplicativo navega para Screen3.A match is found with "John", so the app navigates to Screen3. truetrue

A exibição é alterada para Screen3.The display is changed to Screen3.

Passo a passoStep by step

  1. Adicione um controle Entrada de texto e nomeie-o Text1 caso ele não tenha esse nome por padrão.Add a Text input control, and name it Text1 if it doesn't have that name by default.
  2. Em Text1, digite 30.In Text1, type 30.
  3. Adicione um controle Rótulo e defina sua propriedade Text com esta fórmula:Add a Label control, and set its Text property to this formula:
    If( Value(Text1.Text) < 20, "Solicitar MUITO mais!", Value(Text1.Text) < 40, "Solicitar mais!", Text1.Text )If( Value(Text1.Text) < 20, "Order MANY more!", Value(Text1.Text) < 40, "Order more!", Text1.Text )

    O controle Rótulo mostra Order more!The Label control shows Order more! porque o valor de Text1 é maior que 20, mas inferior a 40.because the value of Text1 is more than 20 but less than 40.

  4. Em Texto1, digite 15.In Text1, type 15.

    O controle Rótulo mostra Order MANY more!The Label control shows Order MANY more! porque o valor de Text1 é menor que 20.because the value of Text1 is less than 20.

  5. Em Text1, digite 50.In Text1, type 50.

    O controle Rótulo mostra o valor digitado, pois ele é maior do que 40.The Label control shows the value that you typed because it's more than 40.