
Eu tenho uma tabela da qual preciso extrair alguns dados e não tenho muita certeza de como fazer isso.
Aqui está um exemplo da tabela.
| A + B + C + D + E + F |
|--------+--------+---------------+-------+--------+--------|
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A | | GRADE |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | H | | EFFORT |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C | | GRADE |
|--------+--------+---------------+-------+--------+--------|
O que preciso é mover a nota de esforço para a coluna de esforço, mas em uma linha diferente. Exemplo abaixo.
| A + B + C + D + E + F |
|-------+-------+-----------+-------+--------+--------|
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
|-------+-------+-----------+-------+--------+--------|
| NAME1 | NAME1 | NAMENAME1 | A | | GRADE | ← To column E here ←
|-------+-------+-----------+-------+--------+--------| ↑
| NAME1 | NAME1 | NAMENAME1 | H | | EFFORT | → Move this Grade from column D ↑
|-------+-------+-----------+-------+--------+--------|
Então, um exemplo do que eu quero...
| A + B + C + D + E + F |
|--------+--------+---------------+-------+--------+--------|
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
|--------+--------+---------------+-------+--------+--------|
| FNAME1 | LNAME1 | FNAME1 LNAME1 | A | H | GRADE |
|--------+--------+---------------+-------+--------+--------|
| FNAME2 | LNAME2 | FNAME2 LNAME2 | C | | GRADE |
|--------+--------+---------------+-------+--------+--------|
O problema é que nem todos os alunos têm nota de esforço e, se não tiverem, não haverá briga por isso. Além disso, às vezes haverá uma linha extra com comentários, etc... então os dados não são constantes.
Responder1
Em uma nova planilha, copie os cabeçalhos ( A1:F1
) e insira 1 em uma coluna auxiliar. Presumo que você esteja usando Column G
; ou seja, célula G1
. Digitar
=IF(INDEX(Sheet1!A:A, $G2)<>"", INDEX(Sheet1!A:A, $G2), "")
into A2
e arraste/preencha para a direita, para F2
. Então mude E2
para
=IF(INDEX(Sheet1!F:F, $G2+1)="EFFORT", INDEX(Sheet1!D:D, $G2+1), "")
e entre
=IF(INDEX(Sheet1!F:F, $G1+1)="GRADE", $G1+1, $G1+2)
em G2
. Selecione A2:G2
e arraste/preencha até onde for necessário.
Em seguida, oculte Column G
, se desejar.
Coluna G
é o índice (na nova planilha) da linha da Sheet1
qual estamos (principalmente) extraindo dados. É um a mais que o índice da linha anterior, a menos que aponte para a linha cujo CODE é GRADE
, caso em que assumimos que é uma EFFORT
linha e adicionamos dois à linha anterior (ou seja, para pular a EFFORT
linha). Colunas A
- D
e F
são simplesmente copiadas da mesma coluna em Sheet1
, conforme indexado por Column G
. A fórmula na Coluna E
(ESFORÇO) procura ver se o aluno atual é aquele com duas linhas (portanto, $G2+1
refere-se ao mesmo aluno, com um CÓDIGO de EFFORT
) e, em caso afirmativo, extrai a nota de ESFORÇO da Coluna D
dessa segunda linha.
Para estes dados:
+ A + B + C + D + E + F +
+-------+--------+--------------+-------+--------+--------+
| FNAME | LNAME | FULLNAME | GRADE | EFFORT | CODE |
+-------+--------+--------------+-------+--------+--------+
| John | Smith | John Smith | A | | GRADE |
| John | Smith | John Smith | H | | EFFORT |
| Mary | Jones | Mary Jones | B | | GRADE |
| Isaac | Newton | Isaac Newton | A+ | | GRADE |
| Isaac | Newton | Isaac Newton | C | | EFFORT |
+-------+--------+--------------+-------+--------+--------+
Eu obtive este resultado:
Responder2
Você pode lidar com isso sem pivô.
Com base no seu exemplo, coloque isso na sua Effort
coluna Sheet2
:
=INDEX(Sheet1!$D$2:$D$10, MATCH(1, (Sheet2!$C2 = Sheet1!$C$2:$C$10) * (Sheet1!$F$2:$F$10 = "EFFORT"), 0))
e pressione Ctrl+ Shift+ Enterpara inserir a fórmula de matriz.
Explicação
Sheet1!$D$2:$D$10
é a sua Effort
coluna na tabela de origem na Planilha1.
(Sheet2!$C2 = Sheet1!$C$2:$C$10)
está procurando a correspondênciaFULLNAME
(Sheet1!$F$2:$F$10 = "EFFORT")
está procurando a correspondência CODE
, que é "EFFORT"
Ambos retornam valor booleano 0
e 1
. Se ambas as condições corresponderem (encontrada uma linha com FULLNAME e CODE correspondentes), ela retornará 1 ( 1 * 1
) para a MATCH
função.