【问题标题】:Excel merging and combining like cellsExcel合并和组合类似单元格
【发布时间】:2012-05-05 05:59:20
【问题描述】:

我有一个简单的 Excel 电子表格,它是每日更新的计数器列表。表单格式如下:

A         B          C             D          E
date      name       computer      info       counter

例子:

A             B          C         D              E
04/04/2012    John       186       Workstation    4813
04/04/2012    Mary       181       Workstation    2273
04/05/2012    John       186       Workstation    4822
04/05/2012    Mary       181       Workstation    2274
04/06/2012    John       186       Workstation    4854
04/06/2012    Mary       181       Workstation    2275
04/06/2012    Bill       183       Workstation    3698

和儿子……

我需要做的是将所有类似的单元格组合起来。因此,例如合并每个月的所有行,并从第一列中减去最后一个 E 列,这样它在新工作表中将如下所示。

A             B          C         D              E
April 2012    John       186       Workstation    41
April 2012    Mary       181       Workstation    2
April 2012    Bill       183       Workstation    0

每个人都以此类推...请记住,这是每天更新的,并且有很多天、几个月和几年。

我什至不知道如何考虑这样做,但我认为我需要一个宏。如果有人有任何帮助,那就太好了!

【问题讨论】:

  • 您是否使用 MS Excel?如果这是在数据库中,比如 MS Access,这会变得容易一些。
  • 不,您可以使用公式来完成。检查我的答案:)

标签: excel merge


【解决方案1】:

我在这方面花了一些时间,感觉我终于得到了你需要的东西。我会上传一个示例文件,但这里阻止了文件共享站点:)。

现在我知道,您希望您的输出在不同的选项卡中,但现在请耐心等待。

以下解决方案很长(由于您的问题的性质而预期)。按照这里做的到T,不要在意可能会在某些单元格中弹出的中间错误,它会在一段时间内全部解决。

我假设您的工作表看起来像图像的黄色部分。 (别管第一栏中的日期,它们都是 2012 年 4 月的日期,这很重要。)

在 F2 单元格中,粘贴以下公式

=IF(A2="","",MONTH(A2))

在单元格G2中,粘贴以下公式,

=IF(A2="","",YEAR(A2))

在单元格H2中,粘贴以下公式,

=IF(B2="","",B2&"|"&F2&"@"&G2)

我正在使用字符“|”和“@”在这里,因为我假设它们不会出现在任何名称中! 请确定是不是这样!!

现在将单元格 F2 复制到 H2,并将它们一直粘贴到您有数据的地方。

现在,我还假设您有 8000 行数据。如果您有超过 8000 行,请将以下公式中的所有“8000”替换为您想要的数字。

在单元格Q2中,粘贴以下公式,

=IF(ISERROR(INDEX($H$2:$H$8000,MATCH(0,COUNTIF($Q$1:Q1,$H$2:$H$8000),0))),"",INDEX($H$2:$H$8000,MATCH(0,COUNTIF($Q$1:Q1,$H$2:$H$8000),0)))

请注意,这是一个数组公式,需要用Ctrl+Shift+Enter输入。因此,在第二季度,您将此公式粘贴到公式栏中,而不是按 Enter,而是按 Ctrl + Shift + Enter。我从here借用了这个公式。您可以查看该网站以了解此公式的工作原理。

现在,在单元格 K2 中,粘贴以下公式

=IF(OR(Q2=0,Q2=""),"",LEFT(Q2,FIND("|",Q2)-1))

在单元格P2中,粘贴以下公式

=IF(OR(Q2=0,Q2=""),"",VALUE(RIGHT(Q2,LEN(Q2)-(FIND("@",Q2)))))

在单元格O2中,粘贴以下公式

=IF(OR(Q2=0,Q2=""),"",VALUE(MID(Q2,FIND("|",Q2)+1,LEN(Q2)-LEN(K2)-LEN(P2)-2)))

在单元格J2中,粘贴以下公式

=IF(OR(Q2=0,Q2=""),"",TEXT(DATE(P2,O2,1),"mmm yyyy"))

在 L2 单元格中,粘贴以下公式

=IF(OR(Q2=0,Q2=""),"",INDEX($C$2:$C$8000,MATCH(K2,$B$2:$B$8000,0)))

在单元格M2中,粘贴以下公式

=IF(OR(Q2=0,Q2=""),"",INDEX($D$2:$D$8000,MATCH(K2,$B$2:$B$8000,0)))

在N2单元格中,粘贴以下公式,

=IF(OR(Q2=0,Q2=""),"",MAX(IF((($B$2:$B$8000=K2)*($F$2:$F$8000=O2)*($G$2:$G$8000=P2)),($E$2:$E$8000)))-MIN(IF((($B$2:$B$8000=K2)*($F$2:$F$8000=O2)*($G$2:$G$8000=P2)),($E$2:$E$8000))))

再次提醒,这是一个数组公式,需要用Ctrl+Shift+Enter输入。确保您已完成上述所有步骤

现在选择从 J2 到 Q2 的单元格,将它们复制并粘贴到所需的位置。在示例屏幕截图中,最多为第 5 行(以涵盖所有可能性)。

你终于有了你需要的桌子。您现在可以使用简单的“等于”关系将该表链接到其他位置。此外,如果您愿意,可以从数据表中隐藏所有这些额外的列。

哇!!我真的希望能解决您的问题!!我认为我应该为所有这些努力而得到表扬!!希望能帮助到你! :)

【讨论】:

    【解决方案2】:

    在您的工作表中添加 4 个新列(FI)并输入以下公式: (假设有 100 行数据:根据需要调整!

    F --> =DATE(YEAR(A1), MONTH(A1), 1)
    
    G --> =MIN(IF(($B$1:$B$100=$B1)*($C$1:$C$100=$C1)*($D$1:$D$100=$D1)*($F$1:$F$100=$F1),$E$1:$E$100)) [press CTRL+SHIFT+ENTER (this is an array formula)]
    
    H --> =MAX(IF(($B$1:$B$100=$B1)*($C$1:$C$100=$C1)*($D$1:$D$100=$D1)*($F$1:$F$100=$F1),$E$1:$E$100)) [press CTRL+SHIFT+ENTER (this is an array formula)]
    
    I --> =H1-G1
    

    (向下拖动以将公式扩展到所有行)

    应该是这样的:

    A             B          C         D              E       F                              G                              H                              I
    04/04/2012    John       186       Workstation    4813    =DATE(YEAR(A1), MONTH(A1), 1)  {=MIN(IF(($B$1:$B$100=$B1)...  {=MAX(IF(($B$1:$B$100=$B1)...  =H1-G1
    04/04/2012    Mary       181       Workstation    2273    =DATE(YEAR(A2), MONTH(A2), 1)  {=MIN(IF(($B$1:$B$100=$B2)...  {=MAX(IF(($B$1:$B$100=$B2)...  =H2-G2
    04/05/2012    John       186       Workstation    4822    =DATE(YEAR(A3), MONTH(A3), 1)  {=MIN(IF(($B$1:$B$100=$B3)...  {=MAX(IF(($B$1:$B$100=$B3)...  =H3-G3
    04/05/2012    Mary       181       Workstation    2274    =DATE(YEAR(A4), MONTH(A4), 1)  {=MIN(IF(($B$1:$B$100=$B4)...  {=MAX(IF(($B$1:$B$100=$B4)...  =H4-G4
    04/06/2012    John       186       Workstation    4854    =DATE(YEAR(A5), MONTH(A5), 1)  {=MIN(IF(($B$1:$B$100=$B5)...  {=MAX(IF(($B$1:$B$100=$B5)...  =H5-G5
    04/06/2012    Mary       181       Workstation    2275    =DATE(YEAR(A6), MONTH(A6), 1)  {=MIN(IF(($B$1:$B$100=$B6)...  {=MAX(IF(($B$1:$B$100=$B6)...  =H6-G6
    04/06/2012    Bill       183       Workstation    3698    =DATE(YEAR(A7), MONTH(A7), 1)  {=MIN(IF(($B$1:$B$100=$B7)...  {=MAX(IF(($B$1:$B$100=$B7)...  =H7-G7
    

    结果是:

    A             B          C         D              E       F              G        H        I
    04/04/2012    John       186       Workstation    4813    04/01/2012     4813     4854     41
    04/04/2012    Mary       181       Workstation    2273    04/01/2012     2273     2275     2
    04/05/2012    John       186       Workstation    4822    04/01/2012     4813     4854     41
    04/05/2012    Mary       181       Workstation    2274    04/01/2012     2273     2275     2
    04/06/2012    John       186       Workstation    4854    04/01/2012     4813     4854     41
    04/06/2012    Mary       181       Workstation    2275    04/01/2012     2273     2275     2
    04/06/2012    Bill       183       Workstation    3698    04/01/2012     3698     3698     0
    

    为清楚起见,让我们在另一张表中获取相关数据的参考。假设上面的数据存储在Sheet1,在Sheet2输入如下:

    A           B            C           D           E
    =Sheet1!F1  =Sheet1!B1   =Sheet1!C1  =Sheet1!D1  =Sheet1!I1
    =Sheet1!F2  =Sheet1!B2   =Sheet1!C2  =Sheet1!D2  =Sheet1!I2
    ...
    

    结果是:

    A             B          C         D              E
    04/01/2012    John       186       Workstation    41
    04/01/2012    Mary       181       Workstation    2
    04/01/2012    John       186       Workstation    41
    04/01/2012    Mary       181       Workstation    2
    04/01/2012    John       186       Workstation    41
    04/01/2012    Mary       181       Workstation    2
    04/01/2012    Bill       183       Workstation    0
    

    最后,Sheet2:

    【讨论】:

      猜你喜欢
      • 2017-03-10
      • 2015-10-12
      • 2021-05-10
      • 2021-10-07
      • 2012-06-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-12
      相关资源
      最近更新 更多