Minha tabela é a seguinte (embora seja um exemplo, a tabela real é 12Rx20C):
Ordem | Marcadores | Marcadores | Marcadores | Resultado |
---|---|---|---|---|
50 mil | Marcador A | 0 | 0 | NEGRO |
50 mil | Marcador A | 0 | 0 | NEGRO |
601 | Marcador A | Marcador B | 0 | NEGRO |
95 anos | Marcador B | Marcador C | 0 | PDV |
95 anos | Marcador B | Marcador C | 0 | NEGRO |
M22 | Marcador F | 0 | 0 | PDV |
M22 | Marcador F | 0 | 0 | NEGRO |
K3S | Marcador F | 0 | 0 | NEGRO |
K3S | Marcador F | 0 | 0 | NEGRO |
K12 | 0 | 0 | 0 | PDV |
K12 | 0 | 0 | 0 | NEGRO |
0 | 0 | 0 | ||
0 | 0 | 0 | ||
0 | 0 | 0 |
Na planilha também há uma lista de todos os fabricantes (chamada lista MARKERLIST):
Lista de marcadores |
---|
Marcador A |
Marcador B |
Marcador C |
Marcador D |
Marcador E |
Marcador F |
Marcador G |
Marcador H |
Marcador I |
Tanto a coluna de pedido quanto as colunas de marcadores são preenchidas por uma fórmula.
Estou tentando criar uma fórmula que preencha a coluna 'Resultado'. As seguintes regras devem ser aplicadas:
- Adicionar um marcador não é um problema, então NEG (então 50K a 601, o marcador B é adicionado);
- Quando um marcador é substituído ou descartado, isso é um POS (601 a 97Y, o marcador A é trocado pelo marcador C/ K3S a K12, o marcador F é descartado);
- Mudar de um conjunto de marcadores para outro é um POS (95Y para M22 é um conjunto diferente);
- Mudar a ordem, mas manter os marcadores, é um NEG (M22 a K3S);
Até agora, tentei COUNTIFs: =TRANSPOSE(COUNTIFS(B2:B4 , MARKERLIST)
para todas as linhas. Em seguida, aplicando uma função MAP entre duas linhas para encontrar diferenças, nos moldes de =MAP(COUNTIFS row 1, COUNTIFS row2, LAMBDA(a, b, IF(a>=b, 0, 1)
; que é então somado.
Mas esse método fornece muitos resultados falsos, especialmente quando um marcador (conjunto) aparece várias vezes seguidas.
Tentei adicionar uma função SCAN da lista de pedidos, para detectar alterações ali (um pedido sempre tem o mesmo marcador definido), mas isso ainda não resolve completamente.=SCAN(0, Ordercolumn, LAMBDA(a, b, IF(b = OFFSET(b, 1, 0), 1, "")
De preferência, isso seria feito em uma única coluna, mas colunas auxiliares são permitidas, embora eu queira mantê-las no mínimo.
Espero que faça sentido, se algo não estiver claro, me avise e tentarei editar uma explicação melhor.