Sep 20 2024 03:03 PM
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
Sep 21 2024 05:10 AM
SolutionPara 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:
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:
Conclusão:
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ê.
Sep 22 2024 01:39 PM
Sep 22 2024 02:28 PM
@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
Sep 21 2024 05:10 AM
SolutionPara 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:
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:
Conclusão:
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ê.