Forum Discussion

deiseformolo's avatar
deiseformolo
Copper Contributor
Sep 20, 2024

Fórmula

Estou com dificuldades para descobrir qual fórmula do Excel poderia me auxiliar na seguinte organização de tarefas. Possuo 250 projetos, 5 pessoas na equipe para análise, preciso que cada projeto seja analisado por 3 pessoas das 5 citadas. Qual comando poderia ser utilizado para otimizar essa divisão? Obrigada 

  • deiseformolo 

    Para otimizar a divisão de 250 projetos entre 5 pessoas para que cada projeto seja analisado por 3 das 5 pessoas da equipe, uma solução é criar uma fórmula ou estrutura que faça essa distribuição automaticamente. Para garantir que as pessoas não sejam atribuídas à mesma tarefa várias vezes, podemos implementar uma abordagem, seja com fórmulas ou usando VBA (se preferir automatizar). Explicarei como fazer isso usando colunas auxiliares e fórmulas no Excel, evitando revisores iterativos para cada projeto.

    Abordagem com Colunas Auxiliares e Fórmulas

    Vamos dividir essa tarefa em algumas etapas. Aqui, você usará funções como SE, CONT.SE, e ALEATÓRIOENTRE para garantir que não haja revisores repetidos para o mesmo projeto.

    1. Estrutura da Planilha

    Projeto

    Revisor 1

    Revisor 2

    Revisor 3

    Projeto 1

    Pessoa A

    Pessoa B

    Pessoa C

    Projeto 2

    Pessoa A

    Pessoa D

    Pessoa B

    ...ect

    ...ect

    ...ect

    ...ect

    Você terá uma lista de projetos (coluna A) e três colunas para revisores (colunas B, C e D). O objetivo é que cada projeto tenha três revisores diferentes, escolhidos de uma lista de cinco pessoas.

    2. Lista de Revisores

    Em uma parte separada da planilha (ou em outra aba), você pode listar os nomes das 5 pessoas que farão as revisões. Vamos assumir que os nomes estão nas células G1

    (pode colocar os nomes de cada pessoa nesse intervalo).

    Nome

    Pessoa A

    Pessoa B

    Pessoa C

    Pessoa D

    Pessoa E

     

    3. Fórmula para Evitar Repetição

    Vamos usar uma função combinada para selecionar revisores aleatoriamente e garantir que não haja repetições no mesmo projeto. Aqui está o passo a passo para cada coluna:

    Passo 1: Revisor 1 (Coluna B)

    Para selecionar o primeiro revisor de forma aleatória, você pode usar a função ÍNDICE combinada com ALEATÓRIOENTRE:

    =ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5))

    Essa fórmula seleciona aleatoriamente uma pessoa da lista de cinco revisores.

    Passo 2: Revisor 2 (Coluna C)

    Para o segundo revisor, devemos garantir que ele seja diferente do primeiro. Isso pode ser feito com a função SE e CONT.SE:

    =ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5))

    Essa fórmula seleciona o segundo revisor de maneira semelhante à fórmula do Revisor 1, mas aqui você precisará garantir que a pessoa não se repete:

    =SE(B2<>ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)))

    Passo 3: Revisor 3 (Coluna D)

    Finalmente, para o terceiro revisor, você também precisa garantir que seja diferente dos dois anteriores. Use a função SE para verificar se ele já foi escolhido:

    =ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5))

    Ou, como fizemos anteriormente:

    =SE(E(C2<>ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));B2<>ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)))

    Essas fórmulas verificam se o nome já foi usado nos dois revisores anteriores e, caso tenha sido, sorteiam um novo nome.

    4. Garantindo que Não Há Repetições com CONT.SE

    Se quiser adicionar mais robustez, pode usar CONT.SE para verificar se o nome já foi escolhido em qualquer uma das colunas anteriores:

    =SE(CONT.SE(B2:C2;ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)))=0;ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));"")

    Essa fórmula funciona da seguinte forma:

    • Ela verifica se o nome sorteado já foi escolhido em qualquer uma das colunas anteriores usando CONT.SE.
    • Se o nome não foi escolhido ainda (=0), ele é atribuído como o revisor. Caso contrário, a fórmula repete o processo até encontrar uma pessoa diferente.

    Abordagem Alternativa com VBA (Macro)

    Se você preferir uma solução automática sem precisar usar muitas fórmulas, pode criar uma macro em VBA para distribuir os revisores. Aqui está um exemplo de código VBA que faz isso automaticamente:

    Código VBA para Distribuir Revisores sem Repetições:

    O código VBA não foi testado, salve seu arquivo com antecedência para garantir a segurança.

     

    Sub DistribuirRevisores()
        Dim ws As Worksheet
        Dim rng As Range
        Dim revisores As Variant
        Dim i As Long, j As Long, k As Long
        Dim escolhido(1 To 5) As Boolean
        Dim result(1 To 3) As String
        Set ws = ActiveSheet ' Define a planilha ativa
        revisores = Array("Pessoa A", "Pessoa B", "Pessoa C", "Pessoa D", "Pessoa E")
    
        ' Loop pelos projetos
        For i = 2 To 251 ' Supondo que os projetos estejam nas linhas 2 a 251
            ' Inicializa a matriz para garantir que não há repetição
            For k = 1 To 5
                escolhido(k) = False
            Next k
    
            ' Seleciona 3 revisores
            For j = 1 To 3
                Do
                    k = Application.WorksheetFunction.RandBetween(1, 5) ' Gera um número aleatório entre 1 e 5
                Loop Until Not escolhido(k) ' Continua até encontrar um que não foi escolhido
    
                result(j) = revisores(k - 1)
                escolhido(k) = True ' Marca o revisor como escolhido
            Next j
    
            ' Atribui os revisores às colunas
            ws.Cells(i, 2).Value = result(1)
            ws.Cells(i, 3).Value = result(2)
            ws.Cells(i, 4).Value = result(3)
        Next i
    End Sub

     

    Como Usar o VBA:

    1. Pressione ALT + F11 para abrir o editor VBA.
    2. Clique em Inserir > Módulo e cole o código acima.
    3. Feche o editor VBA e pressione ALT + F8 para executar a macro.
    4. Isso preencherá automaticamente os revisores nas colunas para cada projeto, garantindo que não haja repetições.

    Conclusão:

    • Fórmulas: Se preferir usar fórmulas, você pode usar uma combinação de ÍNDICE, ALEATÓRIOENTRE, e SE para garantir que os revisores sejam diferentes.
    • VBA (Macro): A solução com VBA é mais automatizada e evita repetição de forma mais eficiente, especialmente para um número grande de projetos.

     

    Nota: Todas as informações foram inseridas em uma IA para facilitar a resposta e por isso estou incluindo o resultado aqui. Nem todas as fórmulas de IA funcionam conforme desejado, portanto, sempre salve o arquivo existente com antecedência. O texto foi traduzido através de software; pode haver erros gramaticais ou de fraseado.

    Espero que isso ajude você.

  • NikolinoDE's avatar
    NikolinoDE
    Gold Contributor

    deiseformolo 

    Para otimizar a divisão de 250 projetos entre 5 pessoas para que cada projeto seja analisado por 3 das 5 pessoas da equipe, uma solução é criar uma fórmula ou estrutura que faça essa distribuição automaticamente. Para garantir que as pessoas não sejam atribuídas à mesma tarefa várias vezes, podemos implementar uma abordagem, seja com fórmulas ou usando VBA (se preferir automatizar). Explicarei como fazer isso usando colunas auxiliares e fórmulas no Excel, evitando revisores iterativos para cada projeto.

    Abordagem com Colunas Auxiliares e Fórmulas

    Vamos dividir essa tarefa em algumas etapas. Aqui, você usará funções como SE, CONT.SE, e ALEATÓRIOENTRE para garantir que não haja revisores repetidos para o mesmo projeto.

    1. Estrutura da Planilha

    Projeto

    Revisor 1

    Revisor 2

    Revisor 3

    Projeto 1

    Pessoa A

    Pessoa B

    Pessoa C

    Projeto 2

    Pessoa A

    Pessoa D

    Pessoa B

    ...ect

    ...ect

    ...ect

    ...ect

    Você terá uma lista de projetos (coluna A) e três colunas para revisores (colunas B, C e D). O objetivo é que cada projeto tenha três revisores diferentes, escolhidos de uma lista de cinco pessoas.

    2. Lista de Revisores

    Em uma parte separada da planilha (ou em outra aba), você pode listar os nomes das 5 pessoas que farão as revisões. Vamos assumir que os nomes estão nas células G1

    (pode colocar os nomes de cada pessoa nesse intervalo).

    Nome

    Pessoa A

    Pessoa B

    Pessoa C

    Pessoa D

    Pessoa E

     

    3. Fórmula para Evitar Repetição

    Vamos usar uma função combinada para selecionar revisores aleatoriamente e garantir que não haja repetições no mesmo projeto. Aqui está o passo a passo para cada coluna:

    Passo 1: Revisor 1 (Coluna B)

    Para selecionar o primeiro revisor de forma aleatória, você pode usar a função ÍNDICE combinada com ALEATÓRIOENTRE:

    =ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5))

    Essa fórmula seleciona aleatoriamente uma pessoa da lista de cinco revisores.

    Passo 2: Revisor 2 (Coluna C)

    Para o segundo revisor, devemos garantir que ele seja diferente do primeiro. Isso pode ser feito com a função SE e CONT.SE:

    =ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5))

    Essa fórmula seleciona o segundo revisor de maneira semelhante à fórmula do Revisor 1, mas aqui você precisará garantir que a pessoa não se repete:

    =SE(B2<>ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)))

    Passo 3: Revisor 3 (Coluna D)

    Finalmente, para o terceiro revisor, você também precisa garantir que seja diferente dos dois anteriores. Use a função SE para verificar se ele já foi escolhido:

    =ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5))

    Ou, como fizemos anteriormente:

    =SE(E(C2<>ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));B2<>ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)))

    Essas fórmulas verificam se o nome já foi usado nos dois revisores anteriores e, caso tenha sido, sorteiam um novo nome.

    4. Garantindo que Não Há Repetições com CONT.SE

    Se quiser adicionar mais robustez, pode usar CONT.SE para verificar se o nome já foi escolhido em qualquer uma das colunas anteriores:

    =SE(CONT.SE(B2:C2;ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5)))=0;ÍNDICE($G$1:$G$5;ALEATÓRIOENTRE(1;5));"")

    Essa fórmula funciona da seguinte forma:

    • Ela verifica se o nome sorteado já foi escolhido em qualquer uma das colunas anteriores usando CONT.SE.
    • Se o nome não foi escolhido ainda (=0), ele é atribuído como o revisor. Caso contrário, a fórmula repete o processo até encontrar uma pessoa diferente.

    Abordagem Alternativa com VBA (Macro)

    Se você preferir uma solução automática sem precisar usar muitas fórmulas, pode criar uma macro em VBA para distribuir os revisores. Aqui está um exemplo de código VBA que faz isso automaticamente:

    Código VBA para Distribuir Revisores sem Repetições:

    O código VBA não foi testado, salve seu arquivo com antecedência para garantir a segurança.

     

    Sub DistribuirRevisores()
        Dim ws As Worksheet
        Dim rng As Range
        Dim revisores As Variant
        Dim i As Long, j As Long, k As Long
        Dim escolhido(1 To 5) As Boolean
        Dim result(1 To 3) As String
        Set ws = ActiveSheet ' Define a planilha ativa
        revisores = Array("Pessoa A", "Pessoa B", "Pessoa C", "Pessoa D", "Pessoa E")
    
        ' Loop pelos projetos
        For i = 2 To 251 ' Supondo que os projetos estejam nas linhas 2 a 251
            ' Inicializa a matriz para garantir que não há repetição
            For k = 1 To 5
                escolhido(k) = False
            Next k
    
            ' Seleciona 3 revisores
            For j = 1 To 3
                Do
                    k = Application.WorksheetFunction.RandBetween(1, 5) ' Gera um número aleatório entre 1 e 5
                Loop Until Not escolhido(k) ' Continua até encontrar um que não foi escolhido
    
                result(j) = revisores(k - 1)
                escolhido(k) = True ' Marca o revisor como escolhido
            Next j
    
            ' Atribui os revisores às colunas
            ws.Cells(i, 2).Value = result(1)
            ws.Cells(i, 3).Value = result(2)
            ws.Cells(i, 4).Value = result(3)
        Next i
    End Sub

     

    Como Usar o VBA:

    1. Pressione ALT + F11 para abrir o editor VBA.
    2. Clique em Inserir > Módulo e cole o código acima.
    3. Feche o editor VBA e pressione ALT + F8 para executar a macro.
    4. Isso preencherá automaticamente os revisores nas colunas para cada projeto, garantindo que não haja repetições.

    Conclusão:

    • Fórmulas: Se preferir usar fórmulas, você pode usar uma combinação de ÍNDICE, ALEATÓRIOENTRE, e SE para garantir que os revisores sejam diferentes.
    • VBA (Macro): A solução com VBA é mais automatizada e evita repetição de forma mais eficiente, especialmente para um número grande de projetos.

     

    Nota: Todas as informações foram inseridas em uma IA para facilitar a resposta e por isso estou incluindo o resultado aqui. Nem todas as fórmulas de IA funcionam conforme desejado, portanto, sempre salve o arquivo existente com antecedência. O texto foi traduzido através de software; pode haver erros gramaticais ou de fraseado.

    Espero que isso ajude você.

    • deiseformolo's avatar
      deiseformolo
      Copper Contributor
      Perfeito. Muita obrigada. Outra pergunta, o código VBA sem repetições garante a distribuição mais igualitária possível de projetos entre as 5 pessoas? Obrigada
    • deiseformolo's avatar
      deiseformolo
      Copper Contributor

      NikolinoDE perfeito, muito obrigada. Outra dúvida, o código VBA sugerido, sem repetições, garante a distribuição mais igualitária (quantidade de projetos) entre as 5 pessoas? Obrigada 

Resources