
我有一個表需要提取一些數據,但我不太確定如何執行此操作。
這是該表的範例。
| 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 |
|--------+--------+---------------+-------+--------+--------|
我需要的是將努力等級移至努力列,但在不同的行中。下面的例子。
| 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 ↑
|-------+-------+-----------+-------+--------+--------|
所以我想要的一個例子......
| 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 |
|--------+--------+---------------+-------+--------+--------|
更重要的是,並非所有學生都有努力成績,如果他們沒有努力成績,就不會有爭議。另外,有時會有額外的一行帶有註釋等......所以數據不是恆定的。
答案1
在新工作表中,複製標題 ( A1:F1
) 並在說明列中輸入 1。我假設您正在使用 Column G
;即細胞 G1
。進入
=IF(INDEX(Sheet1!A:A, $G2)<>"", INDEX(Sheet1!A:A, $G2), "")
到 中 A2
,然後向右拖曳/填滿到 F2
。然後更改 E2
為
=IF(INDEX(Sheet1!F:F, $G2+1)="EFFORT", INDEX(Sheet1!D:D, $G2+1), "")
並輸入
=IF(INDEX(Sheet1!F:F, $G1+1)="GRADE", $G1+1, $G1+2)
進入 G2
。A2:G2
根據需要選擇並向下拖曳/填充。
G
如果需要的話,然後隱藏 Column 。
列 是 我們(主要)從中提取資料的G
行的索引(在新工作表上) 。Sheet1
它比前一行的索引多一個,除非它指向 CODE 為 的行GRADE
,在這種情況下,我們假設它是一行,EFFORT
並向前一行添加 2(即,跳過該EFFORT
行)。 Columns A
-D
和 F
只是從 Column 上的同一列複製Sheet1
,由 Column 索引 G
。 Column (EFFORT) 中的公式 E
查看當前學生是否是具有兩行的學生(因此$G2+1
指的是同一學生,代碼為),如果是,則從第二行的EFFORT
Column 中提取 EFFORT 成績 。D
對於這些數據:
+ 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 |
+-------+--------+--------------+-------+--------+--------+
我得到這個結果:
答案2
你可以在沒有樞軸的情況下處理這個問題。
根據您的範例,將其放在您的Effort
專欄中Sheet2
:
=INDEX(Sheet1!$D$2:$D$10, MATCH(1, (Sheet2!$C2 = Sheet1!$C$2:$C$10) * (Sheet1!$F$2:$F$10 = "EFFORT"), 0))
然後按Ctrl+ Shift+Enter插入數組公式。
解釋
Sheet1!$D$2:$D$10
是Effort
Sheet1 上來源表中的欄位。
(Sheet2!$C2 = Sheet1!$C$2:$C$10)
正在尋找匹配的FULLNAME
(Sheet1!$F$2:$F$10 = "EFFORT")
正在尋找匹配項CODE
,即“EFFORT”
兩者都返回布爾值,0
並且1
.如果兩個條件都匹配(找到具有匹配 FULLNAME 和 CODE 的行),則它將1 * 1
向函數傳回 1 ( ) MATCH
。