减lessExcel中的单元格数量

我有一个电子表格pipe理时隙中的组列表。 想象下面是单元格:

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 

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

部分解决scheme使用Pivot表很容易维护:

  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]是具有名称值的单元格。
    这是在数据透视表中分组。
    你应该得到这样的东西: 新的扩展表
    注意标题很重要!

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

在可维护性方面:

  • 为你的Pivot表设置一个dynamic的源代码范围(相当容易)。
  • 拖动公式或使用热键更新您的扩展列:ctrl +,ctrl + d来扩展。
  • 编写一个非常简单的macros来为你扩展/更新扩展列。

简化/假设:

  • 名字的sorting是重要的,即不要把名字的集合看作一个集合

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

让我知道如果这个输出是有用的,否则我会看看还有什么可以做的。

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

脚步:

a)select所有数据单元b)转到数据 – >数据工具 – >删除重复c)看起来数据文件有4列,所以在popup窗口中会看到4列(比如列A,列B ,C列和D列)。 检查列A以外的所有列(即您的时间戳存在的位置)。 按OK。

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

 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 

假设你的数据从A2开始。 parsing你的input作为固定宽度来隔离-和第一个。 为第一列和第三列select文本。 将表格格式化为常规。 在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 put =B2&", "&E2并复制以适合。 将ColumnA,Paste Special,Column复制到顶部。

删除所有,但ColumnA。