在 Excel 中合并重复的行并将不同的单元格转换为新列

在 Excel 中合并重复的行并将不同的单元格转换为新列

我有一张这样的出勤表,

  Name | Date      | Time        |
  abc  | 12/3/2018 | 12:36:11 PM |
  abc  | 12/3/2018 | 08:30:11 PM |
  EFG  | 13/3/2018 | 09:35:11 PM |
  EFG  | 13/3/2018 | 06:23:11 PM |
  EFG  | 13/3/2018 |  9:36:11 PM |
  abc  | 14/3/2018 | 11:36:11 PM |
  GHT  | 14/3/2018 |  3:36:11 PM |
  GHT  | 14/3/2018 | 01:36:11 PM |
  abc  | 15/3/2018 | 10:36:11 PM |

我想要做的是这样的:获取名称和日期(如果两者都重复),如果名称和日期相同,则需要将不同的时间发送到新的单元格。

  Name | Date      | Time        | new cell    | new cell    |
  abc  | 12/3/2018 | 12:36:11 PM | 08:30:11 PM |
  EFG  | 13/3/2018 | 09:35:11 PM | 06:23:11 PM |  9:36:11 PM |
  abc  | 14/3/2018 | 11:36:11 PM |
  GHT  | 14/3/2018 |  3:36:11 PM | 01:36:11 PM |
  abc  | 15/3/2018 | 10:36:11 PM |

到目前为止我尝试过 合并 Excel 工作表中的两行,其中一个单元格具有相同的内容,但其他单元格具有不同的内容有不同的内容,这是我接近的唯一解决方案。

并尝试将其导出到 Access 并编写 SQL 查询以获得上述结果。我该如何实现这一点?

答案1

使用工作表公式并不难做到这一点。我假设您现有的“名称”、“日期”和“时间”列分别为 AB和 C。我假设您想要将数据投影到新工作表上;即,您在 Sheet1 上的第一个插图中有数据,并且您希望在 Sheet2 上布局第二个插图。除了公式的细节外,将其投影到同一张工作表上的另一个区域是相同的。在任一情况下,如果您想替换原始数据,您可以复制和粘贴值。

在 Sheet1 上选择三列您不使用的列;例如XY和 Z

  • 确保该单元格X1是空白的(或0在那里输入)。
  • 在单元格中X2输入=IF(AND(A1=A2,B1=B2),X1,X1+1)
  • 在单元格中Y2输入=MATCH(ROW()-1,X:X,0)
  • 在单元格中Z2输入=COUNTIF(X:X,ROW()-1)
  • 选择X2:Z2并向下拖动/填充(至少)直至您有数据。

在 Sheet2 上,

  • 在第 1 行中输入所需的列标题。
  • 在单元格中A2输入=IFERROR(INDEX(Sheet1!A:A,Sheet1!Y2),"")
  • 在单元格中B2输入=IFERROR(INDEX(Sheet1!B:B,Sheet1!Y2),"")
  • 在单元格中C2输入=IF((COLUMN()-COLUMN($C:$C))<Sheet1!$Z2, INDEX(Sheet1!$C:$C,Sheet1!$Y2+(COLUMN()-COLUMN($C:$C))),"")
  • 选择C2并拖动/填充到右侧(至少)足够远以覆盖您的数据(即,任何名称/日期对的最大重复行数)。
  • 选择第 2 行中已填充的单元格(即, A2通过上一步中拖动到的单元格)并向下拖动/填充(至少)足够远以覆盖您的数据(即,您拥有的唯一名称/日期对的数量)。

瞧!

工作表1:

       工作表1

工作表2:

       工作表2

相关内容