我有一个带有开始时间戳记和结束时间戳记的活动列表,我需要用相应的活动和持续时间填充日期列表。
我尝试了各种复杂的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
答案 0 :(得分:0)
理想情况下,您希望在Power Query中执行此操作。但是,这个问题带有excel-2010
标签,我认为Power Query仅可作为Excel 2010中的外部加载项使用(至少对于Windows)。
第二种最简单的方法可能是使用VBA。但是这个问题没有vba
标签。因此,假设您只想使用公式来实现这一目标。
这是我的工作表"Sheet1"
的布局,我认为它与您的第一个表匹配。
这是我的输出工作表的布局(在这里,我使用公式来重新构造数据)。我认为它与您的第二张桌子匹配。
•黄色单元格(B1
)中的公式为:
="Loc""IENT(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)
将数组公式(绿色和蓝色单元格)向右拖动时,需要确保您不会用*_Hours
列的公式覆盖*_Activities
列的公式。如果将它们作为选定的单位(单元格或列)拖动,Excel将自动为您处理。希望有道理。
标题的公式(尽管上面的方法没有必要):
B3
中:=B$1&"_Activities"
C3
中:=C$1&"_Hours"
然后将其(作为一个单元)拖动到右侧。