【问题标题】:Populate calendar list from start and end timestamps in excel从excel中的开始和结束时间戳填充日历列表
【发布时间】:2019-10-24 01:41:29
【问题描述】:

我有一个包含开始时间戳和结束时间戳的活动列表,我需要用相应的活动和持续时间填充日期列表。

我尝试过各种复杂的 IF 语句、VLOOKUPS 和 INDEX MATCH。

我的数据如下:

Activity Name   Location          Start                  End          
--------------- ---------- --------------------- --------------------- 
Act1            Loc1       13/07/2019 12:00 AM   15/07/2019 12:00 PM  
Act2            Loc1       20/07/2019 12:00 AM   22/07/2019 12:00 PM  
Act3            Loc2       11/07/2019 12:00 AM   13/07/2019 12:00 PM  

并想如下显示:

 Date         Loc1_Activities   Hours   Loc2_Activities   Hours  
------------ ----------------- ------- ----------------- ------- 
1/07/2019                                                       
2/07/2019                                                       
3/07/2019                                                       
4/07/2019                                                       
5/07/2019                                                       
6/07/2019                                                       
7/07/2019                                                       
8/07/2019                                                       
9/07/2019                                                       
10/07/2019                                                      
11/07/2019                             Act3                 24  
12/07/2019                             Act3                 24  
13/07/2019   Act1                 24   Act3                 12  
14/07/2019   Act1                 24                            
15/07/2019   Act1                 12                            
16/07/2019                                                      
17/07/2019                                                      
18/07/2019                                                      
19/07/2019                                                      
20/07/2019   Act2                 24                            
21/07/2019   Act2                 24                            
22/07/2019   Act2                 12                            
23/07/2019                                                      
24/07/2019                                                      
25/07/2019                                                      
26/07/2019                                                      
27/07/2019                                                      
28/07/2019                                                      
29/07/2019                                                      
30/07/2019                                                      
31/07/2019                                                      

【问题讨论】:

  • 显示您对 vlookup、索引和匹配所做的操作......也许只是更正会有所帮助。

标签: excel excel-formula timestamp excel-2010


【解决方案1】:

理想情况下,您希望在 Power Query 中执行此操作。但是,这个问题有一个excel-2010 标签,我认为 Power Query 只能作为 Excel 2010 中的外部加载项使用(至少对于 Windows)。

第二种最简单的方法可能是使用 VBA。但是这个问题没有vba 标签。所以假设你只想用公式来实现。

这是我名为"Sheet1" 的工作表的布局,我认为它与您的第一个表格相匹配。

这是我的输出工作表的布局(我使用公式来重新构建数据)。我认为它与您的第二张桌子相匹配。


• 黄色单元格 (B1) 中的公式为:

="Loc"&QUOTIENT(COLUMN()-COLUMN($B$1),2)+1

可以向右拖动到需要的地方。


• 绿色单元格 (B4) 中的数组公式为:

=IFERROR(INDEX(Sheet1!$A$2:$A$4,AGGREGATE(15,6,IF(($A4>=INT(Sheet1!$C$2:$C$4))*($A4<ROUNDUP(Sheet1!$D$2:$D$4,0))*(Sheet1!$B$2:$B$4=B$1),ROW(Sheet1!$A$2:$A$4)-ROW(Sheet1!$A$2)+1,NA()),1)),"")

这必须使用CTRL+SHIFT+ENTER 输入(Excel 会自动在你的公式周围加上花括号{},让你知道它是一个数组公式)。向下拖动以填充下面的单元格。


• 蓝色单元格 (C4) 中的数组公式为:

=IF(LEN(B4),(MIN($A4+1,INDEX(Sheet1!$D$2:$D$4,AGGREGATE(15,6,IF(($A4>=INT(Sheet1!$C$2:$C$4))*($A4<ROUNDUP(Sheet1!$D$2:$D$4,0))*(Sheet1!$B$2:$B$4=B$1),ROW(Sheet1!$A$2:$A$4)-ROW(Sheet1!$A$2)+1,NA()),1)))-MAX($A4,INDEX(Sheet1!$C$2:$C$4,AGGREGATE(15,6,IF(($A4>=INT(Sheet1!$C$2:$C$4))*($A4<ROUNDUP(Sheet1!$D$2:$D$4,0))*(Sheet1!$B$2:$B$4=B$1),ROW(Sheet1!$A$2:$A$4)-ROW(Sheet1!$A$2)+1,NA()),1))))*24,"")

这必须使用CTRL+SHIFT+ENTER 输入(Excel 会自动在你的公式周围加上花括号{},让你知道它是一个数组公式)。向下拖动以填充下面的单元格。


• 您可以在单元格A4 中输入日期,也可以使用这个公式(并将其拖到下面的单元格中):

=DATE(2019,7,1)+ROW()-ROW($A$4)

当您将数组公式(绿色和蓝色单元格)拖到右侧时,您需要确保不会用 *_Activities 列的公式覆盖 *_Hours 列的公式。如果您将它们作为一个选定的单元(单元格或列)拖动,Excel 将自动为您处理此问题。希望这是有道理的。


标题公式(尽管上述方法不是必需的):

  • 在单元格中B3=B$1&amp;"_Activities"
  • 在单元格C3:=C$1&amp;"_Hours"

然后(作为一个单位)向右拖动。

【讨论】:

    猜你喜欢
    • 2020-02-22
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2017-09-28
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    相关资源
    最近更新 更多