Consegui fazer isso com duas "matrizes auxiliares". Uma “célula auxiliar” é uma célula que deriva / calcula algum valor intermediário dos dados de entrada. Este valor intermediário é então usado em outra (s) célula (s) para produzir o resultado desejado. É comum ter uma "coluna auxiliar" em uma planilha de dados tabulares. Estou ansioso para ver se alguém pode agilizar minha resposta e torná-la mais elegante mas isso é o melhor que consegui em 59 minutos.
É possível colocar ajudantes na mesma planilha que os dados reais. em coluna (s) ou linha (s) diferente (s), normalmente ocultas. Ou você pode colocá-los em folhas separadas. Como essa resposta chama dois deles, ilustrarei as duas técnicas; você pode então escolher usar uma técnica de forma consistente.
Suponho que seus dados de origem (apresentados na sua pergunta)
estão em Sheet1!A2:D8
, com os cabeçalhos na Linha 1.
Coloque
=IF(B2="", "blank", B2)
na célula AB2
e arraste / preencha para AB8
e à direita para Coluna AD
.
Isso resulta em
| AA | AB | AC | AD |
---+----------+----------+----------+----------+
1 | | | | |
2 | | I | blank | I |
3 | | I | blank | I |
4 | | I | I | blank |
5 | | I | I | blank |
6 | | I | I | I |
7 | | blank | I | I |
8 | | blank | I | I |
Eu confio que nenhuma explicação é necessária.
Agora fica mais complicado.
Crie Sheet3
e insira as seguintes fórmulas:
-
B2
→=MATCH("I", Sheet1!AB$2:AB$8, 0)
-
B3
→=MATCH("I", OFFSET(Sheet1!AB$2,B2,0):Sheet1!AB$8, 0) + B2
-
B7
→=MATCH("blank", Sheet1!AB$2:AB$8, 0)
-
B8
→=MATCH("blank", OFFSET(Sheet1!AB$2,B7,0):Sheet1!AB$8, 0) + B7
Arraste / preencha a célula B3
para B6
.
Se você mudar o seu esquema para ter mais de dois jogadores
de cada vez, você precisará arrastar / preencher adequadamente a célula B8
.
E, como antes, arraste / preencha a coluna B
para a direita para Coluna D
.
Você deve receber:
| A | B | C | D |
---+---------+---------+---------+---------+
1 | | | | |
2 | | 1 | 3 | 1 |
3 | | 2 | 4 | 2 |
4 | | 3 | 5 | 5 |
5 | | 4 | 6 | 6 |
6 | | 5 | 7 | 7 |
7 | | 6 | 1 | 3 |
8 | | 7 | 2 | 4 |
Explicação:
-
B2
contém a localização (relativa) do primeiroI
no intervaloSheet1!AB$2:AB$8
. Isso é1
, porqueSheet1!AB2
contémI
, e é a primeira célula nesse intervalo. Da mesma forma,C2
eD2
contêm3
e1
, respectivamente, porqueSheet1!AC4
eSheet1!AD2
(a terceira e primeira células, correspondendo a Player3 e Player1, respectivamente), são os locais do primeiroI
nessas colunas. - Olhando para
B3
-OFFSET(Sheet1!AB$2,B2,0)
isOFFSET(Sheet1!AB$2,1,0)
, que é equivalente aSheet1!AB3
. Então, esseMATCH
está olhando para o intervaloSheet1!AB3:AB8
. EsseMATCH
também retornará1
, porqueSheet1!AB3
contémI
e é a primeira célula no intervalo que . Em seguida, adicionamosB2
(1
) a isso, recebendo2
, que é a localização do segundoI
emSheet1!AB2:AB8
. - Da mesma forma, o
MATCH
na célulaD4
está a olhar para o intervaloSheet1!AD4:AB8
. EsteMATCH
retornará3
, porqueSheet1!AD6
é a primeira célula no intervalo que que contémI
. AdicionarD3
(2
) nos dá5
, porque essa linha corresponde a Player5. -
Em seguida, fazemos o mesmo nas linhas 7 e 8, procurando apenas
blank
.Eu não precisaria da matriz de ajuda
Sheet1!AA:AD
, exceto que, aparentemente, você não pode usarMATCH("", …)
para encontrar uma célula em branco.
Agora podemos apenas descer a costa
e coloque =INDEX(Sheet1!$A$2:$A$8, Sheet3!B2)
em Sheet2!B2
.
+--------+---------+---------+---------+
| Status | Round 1 | Round 2 | Round 3 |
+--------+---------+---------+---------+
| IN | Player1 | Player3 | Player1 |
| IN | Player2 | Player4 | Player2 |
| IN | Player3 | Player5 | Player5 |
| IN | Player4 | Player6 | Player6 |
| IN | Player5 | Player7 | Player7 |
| OUT | Player6 | Player1 | Player3 |
| OUT | Player7 | Player2 | Player4 |