Forum Discussion
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
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:
- Pressione ALT + F11 para abrir o editor VBA.
- Clique em Inserir > Módulo e cole o código acima.
- Feche o editor VBA e pressione ALT + F8 para executar a macro.
- 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ê.
- NikolinoDEGold Contributor
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:
- Pressione ALT + F11 para abrir o editor VBA.
- Clique em Inserir > Módulo e cole o código acima.
- Feche o editor VBA e pressione ALT + F8 para executar a macro.
- 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ê.
- deiseformoloCopper ContributorPerfeito. 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
- deiseformoloCopper 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