Compartilhar via

Ajuda com fórmula no excel

Anônima
2024-07-23T19:33:09+00:00

Boa tarde!

Estou precisando de uma ajuda para desenvolver uma fórmula, já tentei várias opções e não consegui chegar a algo que funcionasse como eu preciso. 

Na coluna "Pot. (CV):" os valores são fixos, mas podem se repetir, eu preciso calcular a coluna "FD" sendo que ela tem a seguinte regra, para o maior valor o FD é 1, para os demais é 0,5. Até aí eu consigo fazer sem problema, porém o FD=1 só se aplica para a primeira vez que o máximo aparecer, no caso só no primeiro 1 o FD seria 1, no segundo seria 0,5. Como eu poderia fazer isso? 

Agradeço desde já quem puder **** dica. 

Equipamento: 1ɸ/3ɸ: Pot. (CV): Tensão(V): Quant.: Carga(kW): FD: kVA:
Policorte 1/2 220 1 0,58 0,87
Bomba d'água 1 220 1 1,05 1,52
Exaustor 1 220 1 1,14 1,56
Portão eletrônico 1/3 220 2 1,02 1,54
0 0
0 0
0 0
0 0
0 0
0 0
Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários

2 respostas

Classificar por: Mais útil
  1. Anônima
    2024-07-24T08:13:03+00:00

    Olá, tudo bem?

    Estou te dando duas opções porque não sei qual você quer (veja a tela de impressão para ver os resultados de ambas as variantes).

    A primeira variante, onde apenas o primeiro valor máximo permanece 1 e todos os outros valores serão definidos como 0,5.

    =LET(

    PotCV; C2:C11;

    seq; SEQUÊNCIA(LINS(PotCV));

    iferr; SEERRO(seq / (MÁXIMO(PotCV) = PotCV); "");

    fltr; SE(PotCV = ""; ""; SE((MÍNIMO(iferr) = iferr) = VERDADEIRO; 1; 0,5));

    FILTRO(fltr; fltr <> "")

    )

    A segunda variante, onde apenas o primeiro valor máximo de todos os valores máximos permanece 1 enquanto os demais valores máximos passam a 0,5 enquanto os demais valores que não são máximos permanecem como estão.

    =LET(

    PotCV; C2:C11;

    seq; SEQUÊNCIA(LINS(PotCV)) / (MÁXIMO(PotCV) = PotCV);

    fls; seq = AGREGAR(15; 6; seq; 1);

    iferr; SEERRO(SE(fls = FALSO; PotCV / 2; PotCV); PotCV);

    FILTRO(iferr; iferr <> 0)

    )

    Se nenhuma dessas variantes for o que você deseja, explique melhor o seu problema mostrando os valores esperados.

    Por favor, deixe-me saber se o seu problema foi resolvido ou não. Se sim, marque minha resposta como Resolvida.

    Att.

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2024-07-24T04:31:30+00:00

    Hello,alan_lima

    Bem-vindo à comunidade Microsoft.

    Para suas necessidades, parece que sua necessidade é “FD = 1 é aplicável à primeira vez que o valor máximo aparece, na segunda vez que o mesmo valor máximo é recuperado, também é expresso como 1, não 0,5”. Estou correcto?

    Tentei testar isso, até mesmo utilizando fórmulas em análise estatística. No entanto, parece incapaz de procurar consistentemente o valor máximo de existências idênticas. Minha hipótese é que ele só pode recuperar um valor máximo de 1, tratando os valores subsequentes como menores que 1 após a pesquisa, mesmo que sejam iguais a 1. Isso poderia ser uma salvaguarda dentro da fórmula para evitar o estouro de dados.

    Simultaneamente, poderíamos contemplar a criação de uma nova fórmula para realizar esta tarefa. Especificamente, criando uma nova fórmula usando VBA e incorporando quantas condições forem necessárias. Abaixo estão os resultados de alguns testes preliminares:

    **1.**Abra a pasta de trabalho do Excel -> Pressione Alt + F11 para abrir o editor VBA. ->

    **2.**Clique com o botão direito em qualquer um dos objetos no painel esquerdo -> Escolha Inserir > Módulo ->

    Copie e cole o seguinte código VBA no módulo:

    Function CalculateFD(PotColumn As Range) As Variant

    Dim FD() As Variant

    Dim maxValue As Double

    Dim i As Long, countMax As Long

    ' Initialize the FD array

    ReDim FD(1 To PotColumn.Rows.Count, 1 To 1)

    ' Find the maximum value in the PotColumn

    maxValue = Application.WorksheetFunction.Max(PotColumn)

    ' Loop through the PotColumn to calculate FD

    countMax = 0

    For i = 1 To PotColumn.Rows.Count

    If PotColumn.Cells(i, 1).Value = maxValue Then

    countMax = countMax + 1

    If countMax <= 2 Then

    FD(i, 1) = 1

    Else

    FD(i, 1) = 0.5

    End If

    Else

    FD(i, 1) = 0.5

    End If

    Next i

    CalculateFD = FD

    End Function

    Importante: Verifique as condições para atribuição de FD abaixo.

    If countMax <= 2 Then

    *FD(i, 1) = 1* 
    

    Else

    *FD(i, 1) = 0.5* 
    

    End If

    Feche o editor VBA e retorne à sua pasta de trabalho do Excel. -> Use a função personalizada em sua planilha:

    • Na primeira célula da coluna “FD” (digamos H2), insira a seguinte fórmula:
    • =CalculateFD(C2:C5)

    **3.**Este código modificado garantirá que a primeira e a segunda ocorrências do valor máximo tenham um FD de 1 e as ocorrências subsequentes tenham um FD de 0,5.

    O arquivo de teste será visto em sua mensagem privada aqui, verifique:

    Sinta-se à vontade para tentar fazer isso e me avise se precisar de mais ajuda!

    Atenciosamente,

    Chandy.L | Especialista em Suporte à Comunidade Microsoft

    Esta resposta foi útil?

    0 comentários Sem comentários