减少Excel中的单元格数量

时间:2014-01-16 21:02:25

标签: excel

我有一个电子表格,用于管理时段中的组列表。想象一下,下面是细胞:

0830-0845, Bob Hoskins, Jack Table, Phil Cup
0845-0900, Bob Hoskins, Jack Table, Phil Cup
0900-0915, Bob Hoskins, Jack Table, Phil Cup
0915-0930, Bob Hoskins, Jack Table, Phil Cup
0930-0945, Bob Hoskins, Jack Table, Phil Cup
0945-1000, Jane Dunnit, Henry Badass
1000-1015, Jane Dunnit, Henry Badass
1015-1030, Jane Dunnit, Henry Badass
1030-1045, Terry Turbo
1045-1100, Terry Turbo
1100-1115, Simon Car, Maggie Blah, Jack Paper

在工作簿中的新工作表中,我可以使用什么样的公式来将时间段压缩在一起(将所有值组合在一起以获得总开始时间)并生成一个看起来更像这样的工作表:

0830-0945, Bob Hoskins, Jack Table, Phil Cup
0945-1030, Jane Dunnit, Henry Badass
1030-1100, Terry Turbo
1100-1115, Simon Car, Maggie Blah, Jack Paper

逗号是单元格的墙,因此时间戳和名称位于不同的单元格中。这需要使用公式来实现,因为源数据将定期更新

3 个答案:

答案 0 :(得分:2)

使用数据透视表非常容易维护的部分解决方案:

  1. 获取开始时间列:
    添加公式为=VALUE(MID(RC[-4],1,4))的新列 RC [-4]是你原来的时间范围。

  2. 获取结束时间列:
    添加公式为=VALUE(MID(RC[-5],6,10))的新列 RC [-5]是你原来的时间范围。

  3. 连接名称列:
    =CONCATENATE(RC[-5],RC[-4],RC[-3])
    其中RC [-5],RC [-4],RC [-3]是具有名称值的单元格 这是用于在数据透视表中进行分组 你应该得到这样的东西: New extended table
    注释标题很重要!

  4. 将带有新扩展表的数据透视表插入新工作表:
    将行标签设置为名称连接列 将开始时间列添加为值,将值字段设置为min 添加结束时间列作为值,值字段设置为最大
    将开始最小值和结束最大值的数字格式设置为“0000”,以便正确显示时间 Pivot table settings

  5. 在可维护性方面:

    • 为您的数据透视表设置动态源范围(相当容易)。
    • 通过拖动公式或使用热键来更新扩展列:ctrl +,ctrl + d来扩展。
    • 编写一个非常简单的宏来扩展/更新扩展列。

    <强>及其简化/假设:

    • 名称的排序很重要,即不要将名称集合视为集合

    对于excel,我的建议是尽可能多地利用现有工具,而不是使用过于复杂的单元格公式,这些公式很难调试,效率可能会降低。

    让我知道这个输出是否足够有用,否则我会看到还能做些什么。

答案 1 :(得分:1)

我按照Excel 2010执行了这些步骤,但这也适用于其他版本(稍作修改)。

<强>步骤:

a)选择所有数据单元格 b)转到数据 - &gt;数据工具 - &gt;删除重复项 c)似乎数据文件中有4列,因此在弹出窗口中您将看到4列(例如,列A,列B,列C和列D)。检查除A列之外的所有列(即存在时间戳的位置)。按OK。

注意:在此解决方案中,第一个时间戳(而不是范围)将显示每个唯一行,例如

0830-0845, Bob Hoskins, Jack Table, Phil Cup
0945-1000, Jane Dunnit, Henry Badass    
1030-1045, Terry Turbo      
1100-1115, Simon Car, Maggie Blah, Jack Paper

答案 2 :(得分:0)

假设您的数据在A2中开始。将输入解析为固定宽度以隔离-和第一个,。为第一列和第三列选择“文本”。将工作表格式化为常规。在D2中:

=IF(E1<>E2,"S",IF(E2<>E3,"F",""))  

并复制以适应。

将ColumnD,Paste Special,Values复制到顶部,并删除D列中带有空格的行。 在B2中:

=IF(AND(D2="S",D3="F"),A2&"-"&C3,IF(D2="S",A2&"-"&C2,""))  

并复制以适应。

将ColumnB,Paste Special,Values复制到顶部,并删除B列中带有空格的行。在A2中放置=B2&", "&E2并复制以适应。将ColumnA,Paste Special,Values复制到顶部。

删除除ColumnA之外的所有内容。