Organização do Excel

0

Eu fiz uma versão de amostra do que eu gostaria.

Este formulário está sempre repetindo e os valores de valores nas linhas do meio variam sempre. Gostaria de saber se você sabe como fazer a coluna da extrema direita verificar se todas as colunas do meio foram aprovadas e, de lá, elas serão automaticamente rejeitadas se uma ou mais forem rejeitadas e aprovadas se todas forem aprovadas.

Isso precisa ser repetível e expansível, pois é um arquivo com centenas de exemplos como este.

    
por P. Lou 19.06.2018 / 15:42

1 resposta

1

Isso é possível usando apenas uma fórmula, sem nenhum VBA.

Eu configurei uma planilha da seguinte forma:

DigiteaseguintefórmulaemN1eN20:

=IF(ISNUMBER(MATCH("Rejected",INDEX(G:G,ROW()):INDEX(G:G,IFERROR(MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,MATCH("",G:G,-1))),0)),"Rejected","Approved")

Eu usei L:L na fórmula, pois não sei os detalhes precisos da sua planilha. Para que a fórmula funcione corretamente, substitua L:L por qualquer coluna de células mescladas somente de texto que não contenha espaços em branco.

Infelizmente, como as células mescladas são de tamanhos diferentes, você não pode preencher a fórmula. Além disso, você só pode copiar e colar a fórmula em células mescladas do mesmo tamanho.

A maneira mais fácil de inserir a fórmula na coluna mais à direita é usar uma dessas sequências de pressionamento de tecla:

  • F2 Ctrl + V Introduzir

ou

  • Backspace Ctrl + V Introduzir

Você pode até gravar uma macro para acelerar as coisas.

A fórmula prettificada é a seguinte:

=
IF(
  ISNUMBER(
    MATCH(
      "Rejected",
      INDEX(G:G,ROW())
      :INDEX(G:G,
        IFERROR(
          MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,
          MATCH("",G:G,-1)
        )
      ),
      0
    )
  ),
  "Rejected",
  "Approved"
)

Notas:

  • A fórmula prettificada realmente funciona se inserida.
  • Os parênteses em torno de (G:G) na versão prettified são necessários para forçar o G:G a permanecer em sua própria linha.

EDITAR:

Se você deseja aumentar a lista de valores de status de apenas Rejected e Approved para Rejected , Void , Pending e Approved , você pode aninhar as funções IF() em a fórmula assim:

=
IF(
  ISNUMBER(
    MATCH(
      "Rejected",
      INDEX(G:G,ROW())
      :INDEX(G:G,
        IFERROR(
          MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,
          MATCH("",G:G,-1)
        )
      ),
      0
    )
  ),
  "Rejected",
IF(
  ISNUMBER(
    MATCH(
      "Pending",
      INDEX(G:G,ROW())
      :INDEX(G:G,
        IFERROR(
          MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,
          MATCH("",G:G,-1)
        )
      ),
      0
    )
  ),
  "Pending",
IF(
  ISNUMBER(
    MATCH(
      "Void",
      INDEX(G:G,ROW())
      :INDEX(G:G,
        IFERROR(
          MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,
          MATCH("",G:G,-1)
        )
      ),
      0
    )
  ),
  "Void",
  "Approved"
)
)
)

Uma solução muito melhor seria usar uma fórmula que funcione com matrizes:

=
CHOOSE(
  SMALL(
    IF(
      ISERROR(
        MATCH(
          {"Rejected","Void","Pending","Approved"},
          INDEX(G:G,ROW())
          :INDEX(G:G,
            IFERROR(
              MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,
              MATCH("",G:G,-1)
            )
          ),
          0
        )
      ),
      FALSE,
      {1,2,3,4}
    ),
    1
  ),
  "Rejected","Void","Pending","Approved"
)

Se você preferir a versão simplificada da fórmula, aqui está:

=CHOOSE(SMALL(IF(ISERROR(MATCH({"Rejected","Void","Pending","Approved"},INDEX(G:G,ROW()):INDEX(G:G,IFERROR(MATCH("*",INDEX(L:L,ROW()+1):INDEX(L:L,ROWS(L:L)),0)+ROW()-1,MATCH("",G:G,-1))),0)),FALSE,{1,2,3,4}),1),"Rejected","Void","Pending","Approved")

Esta última versão da fórmula é facilmente extensível a mais (ou menos) valores simplesmente ajustando as duas matrizes constantes e a lista de valores na segunda última linha.

Observe que a ordem exata dos valores determina qual valor será retornado se houver mais de um tipo de valor no intervalo apropriado. O maior valor de prioridade é o da esquerda.

    
por 19.06.2018 / 18:46