Excel Power Query报错:无法对Text类型应用字段访问(FORECAST_DATE列)
Power Query 日期格式转换错误修复
错误原因
你遇到的Expression.Error: We cannot apply field access to the type Text错误,根源是在Table.TransformColumns的迭代逻辑里,each已经指代当前行FORECAST_DATE列的文本值(比如20230717 12:15:03),此时再用[FORECAST_DATE]去访问字段属于语法错误——你试图对一个文本值做字段访问操作,自然会报错。
修正方案
方案1:修复原手动截取逻辑
把代码里的datePart = Text.From([FORECAST_DATE])改成datePart = _(_是each上下文里的当前值简写),同时修正文本索引错误(Power Query文本索引从0开始):
let Source = Excel.Workbook(File.Contents("file path"), null, true), CashForecast_Sheet = Source{[Item="CashForecast",Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(CashForecast_Sheet, [PromoteAllScalars=true]), #"DateEditing" = Table.TransformColumns(#"Promoted Headers", { {"FORECAST_DATE", each let datePart = _, year = Text.Start(datePart, 4), month = Text.Range(datePart, 4, 2), day = Text.Range(datePart, 6, 2), timePart = Text.Range(datePart, 9, 8) in day & "/" & month & "/" & year & " " & timePart, type any } } ) in #"DateEditing"
方案2:用内置函数简洁处理
不需要手动截取字符串,直接用内置函数解析并格式化,代码更简洁不易出错:
let Source = Excel.Workbook(File.Contents("file path"), null, true), CashForecast_Sheet = Source{[Item="CashForecast",Kind="Sheet"]}[Data], #"Promoted Headers" = Table.PromoteHeaders(CashForecast_Sheet, [PromoteAllScalars=true]), #"DateEditing" = Table.TransformColumns(#"Promoted Headers", { {"FORECAST_DATE", each DateTime.ToText( DateTime.FromText(_, [Format="yyyyMMdd HH:mm:ss"]), "dd/MM/yyyy HH:mm:ss" ), type any } } ) in #"DateEditing"
DateTime.FromText(_, [Format="yyyyMMdd HH:mm:ss"]):指定原字符串格式,将文本解析为日期时间类型DateTime.ToText(..., "dd/MM/yyyy HH:mm:ss"):将解析后的日期时间转换为目标格式字符串
内容的提问来源于stack exchange,提问作者Nilcouv
相关产品推荐
相关产品推荐

