我有下表:
╭───╥────────────┬────────────────╮
│ ║ A │ B │
╞═══╬════════════╪═════════════════╡
│ 1 ║ Jack │ 1 year 6 months │
│ 2 ║ Emily │ 6 months │
│ 3 ║ Carl │ 2 years 3 months│
│ 4 ║ │ │
│ 5 ║ Team avg: │ 1 years 5 months│
└───╨────────────┴─────────────────┘
我想从B列获取时间跨度的平均值。大约是1.42年或1年5个月。
是否可以在Excel中以年,月,日为单位输入时间段?我不知道如何在这种情况下使用日期格式。 如果可能的话,我希望使用非宏解决方案。
蚂蚁的想法?预先感谢。
答案 0 :(得分:1)
由于您写的是数字,所以您可以输入不同的数字,并希望在单个列中输入数字,例如,可以将数据输入为y.mm
,然后使用数组下面的公式来显示易于理解的输出。
请确保在前几个月保持前导零,如下面的屏幕截图所示。
=TEXT(INT(DOLLARFR(AVERAGE(INT(myRange)*12+MOD(myRange,1)*100)/12,12)),"[=1]0 ""year "";0"" years """) & TEXT(INT(MOD(DOLLARFR(AVERAGE(INT(myRange)*12+MOD(myRange,1)*100)/12,12),1)*100), "[=1]0"" month"";0"" months""")
要输入/确认数组公式,请在按下 enter 的同时按住 ctrl + shift 。如果正确执行此操作,Excel会在公式栏中显示的公式周围放置括号{...}
。
如果您希望输出的格式与条目相同,则可以使用更简单的公式(也可以作为数组公式输入)
=DOLLARFR(AVERAGE(INT(myRange)*12+MOD(myRange,1)*100)/12,12
并且,如果您不介意在显示的数据中包含dot
,并且即使月/年是一(1),也可以是复数月/年,则可以按照@RaulDurand的建议自定义格式:
0" years". 0 "months ";;
如果您要增加混合天数,则可以使用类似的算法。我之所以没有提供,是因为尽管年份包含固定的月份数,但两者都包含可变的天数,因此您将需要决定如何处理这种情况。 VBA UDF的构建要简单得多。
答案 1 :(得分:0)
我不会费心寻找强烈编程的解决方案:您似乎只有4个数据行?我只需要输入新数据
我们不在Excel中设置时间跨度,但是可以通过开始日期和结束日期来表示时间跨度。某些时间跨度可能是动态的,具体取决于当前时间
如果您有2个日期,则可以进行简单的数学运算:稍晚的日期-较早的日期
Excel将以天数和一天的分数返回结果,因此例如2000-02-01 18:00减去2000-01-01 00:00将给出31.75的答案-这是31.75天的时间跨度
您可以将31.75格式设置为天数和小时数,而excel会将其表示为31天18小时0分钟,但是您应该意识到,这是31.75的数字格式-习惯于使用和思考跨度时间以十进制天数为单位
您可以将它们加起来,取平均值,等等
您可以在日期上添加数字,以将日期提前该天数
答案 2 :(得分:0)
只需使用三列。 B列是年份。 C列是月。 D列是B和C的十二分之和。因此,D2为=B2 + C2/12
。
╭───╥────────────┬───┬────┬──────────────╮
│ ║ A | B | C | D │
╞═══╬════════════╪═══╪════╪══════════════╡
│ 1 ║ Jack │ 1 | 6 | = B1 + C1/12 │
│ 2 ║ Emily │ 0 | 6 | = B2 + C2/12 │
│ 3 ║ Carl │ 2 | 3 | = B3 + C3/12 │
│ 4 ║ │ | | │
│ 5 ║ Team avg: │ * | ** | = AVG(D1:D3) │
└───╨────────────┴───┴────┴──────────────┘
* B5可以INT(D5)
给出年份
** C5可以(D5 - INT(D5)) * 12
给予几个月
答案 3 :(得分:0)
基于@RonRosenfeld的评论,我设法使用数字。在这种情况下,B列上的时间跨度写为:
╭───╥────────────┬─────────────────╮
│ ║ A │ B │
╞═══╬════════════╪═════════════════╡
│ 1 ║ Jack │ 1.06 │
│ 2 ║ Emily │ 0.06 │
│ 3 ║ Carl │ 2.03 │
│ 4 ║ │ │
│ 5 ║ Team avg: │ │
└───╨────────────┴─────────────────┘
并使用以下自定义格式
0" years". 00 "months ";;
它变成:
╭───╥────────────┬───────────────────╮
│ ║ A │ B │
╞═══╬════════════╪═══════════════════╡
│ 1 ║ Jack │ 1 years. 06 months│
│ 2 ║ Emily │ 0 years. 06 months│
│ 3 ║ Carl │ 2 years. 03 months│
│ 4 ║ │ │
│ 5 ║ Team avg: │ 1.42 years │
└───╨────────────┴───────────────────┘
然后,平均时间跨度计算为:
=(SUMPRODUCT(INT(B1:B3))+SUMPRODUCT(MOD(B1:B3,1))/0.12)/COUNT(B1:B3)
此外,结果中使用自定义格式。