SOLVED

Fórmula

Copper Contributor

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 

3 Replies
best response confirmed by deiseformolo (Copper Contributor)
Solution

@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ê.

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

@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 

1 best response

Accepted Solutions
best response confirmed by deiseformolo (Copper Contributor)
Solution

@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ê.

View solution in original post