excel - 减少 Excel 中的单元格数量

标签 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

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

最佳答案

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

  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. 将包含新扩展表的数据透视表插入到新工作表中:
    设置行标签来命名串联列。
    添加开始时间列作为值,值字段设置为分钟 添加结束时间列作为值,值字段设置为 max
    将开始时间的最小值和结束时间的最大值的数字格式设置为“0000”,以便正确显示时间 Pivot table settings

在可维护性方面:

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

简化/假设:

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

对于 Excel,我的建议始终是尽可能多地利用现有工具,而不是使用过于复杂的单元格公式,因为这可能难以调试且效率可能较低。

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

关于excel - 减少 Excel 中的单元格数量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21172814/

相关文章:

java - 有没有办法读取oracle中的RAW和TIMESTAMP数据类型并使用JAVA代码导出到Excel

Excel vba - 在空白之间分组行

vba - Excel VBA : Positioning and Alignment of Shapes

java - 有没有一种工具可以代替来回传递 Excel 文件并合并它们?

excel - 用于删除已位于另一张工作表中的重复行的 VBA 代码

excel - Worksheet 类的 ShowAllData 方法失败

excel - 在 Excel VBA 中使用 XMLHTTP 下载网站的表格不起作用

javascript - 使用 Web api 和 Angular JS 将数据下载为 Excel 文件

Excel 宏 - 自动电子邮件

sql-server - SSIS 能满足我的需求吗?