Excel 2010 移动数据

Excel 2010 移动数据

我有一张表,需要提取一些数据,但我不太确定如何做到这一点。

以下是该表的一个示例。

|   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。我假设您使用的是列 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然后,如果需要,隐藏列 。

列 是(在新工作表上) 我们(主要)从中提取数据的G行的索引。它比上一行的索引多一个,除非它指向 CODE 为 的行,在这种情况下我们假设它是一行并在前一行上加两行(即跳过该行)。列 -和 只是从 上的同一列复制而来,如 Column 所索引 。Column (EFFORT) 中的公式 查看当前学生是否是具有两行的学生(因此指的是同一个学生,CODE 为),如果是,则从第二行的 Column 中提取 EFFORT 成绩 。Sheet1GRADEEFFORTEFFORTADFSheet1GE$G2+1EFFORTD

对于这些数据:

+   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插入数组公式。ShiftEnter

解释

Sheet1!$D$2:$D$10EffortSheet1 上源表中的列。

(Sheet2!$C2 = Sheet1!$C$2:$C$10)正在查找匹配FULLNAME

(Sheet1!$F$2:$F$10 = "EFFORT")正在查找匹配项CODE“EFFORT”

两者都返回布尔值,01。如果两个条件都匹配(找到具有匹配 FULLNAME 和 CODE 的行),则它1 * 1向函数返回 1()MATCH

相关内容