如何在Excel中输入句点

时间:2018-10-21 17:31:33

标签: excel time

我有下表:

╭───╥────────────┬────────────────╮
│   ║     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中以年,月,日为单位输入时间段?我不知道如何在这种情况下使用日期格式。 如果可能的话,我希望使用非宏解决方案。

蚂蚁的想法?预先感谢。

4 个答案:

答案 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会在公式栏中显示的公式周围放置括号{...}

enter image description here

如果您希望输出的格式与条目相同,则可以使用更简单的公式(也可以作为数组公式输入)

=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)

此外,结果中使用自定义格式。