查找,然后将年份和月份转换为小数

时间:2018-02-08 19:26:55

标签: excel

5 months in role
1 year 11 months in role
5 years 1 month in role
2 years 8 months in role
1 year in role
3 years 9 months in role

您好,我正在尝试将上面的列表转换为小数日期。例如。我希望 [3年9个月的角色] 在另一个单元格中显示为 3.75 ,但我真的很难找出一个公式。到目前为止我已经

=LEFT(A2,(FIND(" ",A2,1)-1))

但这显然只是抓住了空间之前的第一个值。这个公式需要考虑上面的变化(有时只显示月份等)。在此先感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

使用此数组公式:

=TRIM(MID(" 0 Year " & A1,MAX(IFERROR(FIND("}}}",SUBSTITUTE(" 0 year " & A1,"year","}}}",{1,2})),0))-3,2))+TRIM(MID(" " & A1 & " 0 month",MIN(IFERROR(FIND("}}}",SUBSTITUTE(" " & A1 & " 0 month","month","}}}",{1,2})),999))-3,2))/12

作为数组公式,需要在退出编辑模式时使用ctrl-Shift-Enter而不是Enter来确认。

enter image description here

答案 1 :(得分:0)

电源查询解决方案。假设Excel中的单个列名为(“Table1”),其列标题为“Text”。如果它有帮助!

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],

    Month = Table.AddColumn(Source, "Month", each if Text.Contains([Text], "month") = true then 
        try Text.Middle([Text], Text.PositionOf([Text], "month") -3, 2) otherwise 
            Text.Middle([Text], Text.PositionOf([Text], "month") -2, 2) else 0),

    Year = Table.AddColumn(Month, "Year", each if Text.Contains([Text], "year") = true then 
        try Text.Middle([Text], Text.PositionOf([Text], "year") -3, 2) otherwise 
            Text.Middle([Text], Text.PositionOf([Text], "year") -2, 2) else 0),

    ToNumber = Table.TransformColumnTypes(Year,{{"Month", Int64.Type}, {"Year", Int64.Type}}),

    Calc = Table.AddColumn(ToNumber, "Calc", each [Year]+([Month]/12))

in
    Calc

enter image description here

答案 2 :(得分:0)

首先将总年月数转换成月数。

例如:4年5个月= 53个月。

然后将总月份除以12得到小数点计算。

例如:53/12 = 4.41年。