Excel浪里淘沙皆是金PowerQuery(List.Select)条件筛选(一)

本文介绍如何利用List.Select进行条件筛选,并结合List.Average计算特定数值范围内的产品平均值,有效避免异常数据干扰。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

效果图:

通过条件筛选List.Select,用List.Average去求产品的平均值 

先转,添加列

=Record.ToList(_)

=List.Select(Record.ToList(_),each _>=90)

 

List出现错误现象,有汉字,再加判定条件

=List.Select(Record.ToList(_),each try _<99 otherwise false)

 

数据正常了,PS:公式中的99是取到多少内的数值,正常是1以内,填写99方便后面数据更新防止大额数据,有超过99的的可以999

=List.Average(List.Select(Record.ToList(_),each try _<99 otherwise false))

 

完成了 

<think>好的,我现在要解决用户在Power Query中遇到的DataFormat.Error错误,具体是无效单元值‘#NAME?’的问题。首先,我需要了解用户的具体情况。根据用户提供的引用内容,特别是引用[2]提到的类型转换错误,可能用户在转换数据时遇到了类型不匹配的问题。此外,引用[4]中提到的检查输入参数是否为实体类型,这可能与数据源的结构有关。 首先,‘#NAME?’错误通常出现在Excel中,表示公式中存在未识别的文本,比如拼写错误的函数名或未定义的名称。但在Power Query中,出现这个错误可能意味着某个步骤引用了不存在的列名或表名,或者在M代码中使用了错误的标识符。例如,如果用户在Power Query编辑器中重命名了某个列,但后续步骤仍然引用旧的列名,就会导致这个错误。 接下来,根据用户提供的引用[3],用户在获取数据时可能使用了Blank query,这可能涉及到手动输入数据或从其他源导入。如果在手动输入时,某个单元格输入了错误的公式,比如在Power Query中直接输入了Excel风格的公式,可能会导致解析错误,从而出现‘#NAME?’。 另外,引用[2]中的例子显示,当Number.ToText函数接收到文本类型的参数时,会出错。类似地,如果在某个转换步骤中,用户试图将非文本类型的数据转换为其他类型,或者使用了错误的函数参数类型,也可能引发DataFormat.Error。例如,用户可能在某列中混用了文本和数字,而试图将该列转换为数字类型时,遇到无法转换的值如‘#NAME?’,从而导致错误。 解决方案方面,首先需要检查数据源中的原始数据是否存在‘#NAME?’这样的值。如果数据源是Excel文件,可能需要先在Excel中修正这些错误,再重新导入到Power Query。如果无法修改数据源,可以在Power Query中使用替换错误值的功能,比如使用Table.ReplaceErrorValues函数替换‘#NAME?’为null或其他默认值。 其次,检查Power Query中的每个步骤,特别是那些涉及列名引用或自定义公式的地方。例如,在添加自定义列时,是否正确引用了现有的列名,是否使用了正确的M函数语法。例如,如果用户输入了= [Column1] + [Column2],但其中某个列名被错误拼写,就会导致错误。 另外,数据类型转换也是个关键点。确保在转换列类型之前,所有数据都是可转换的。可以使用Try...otherwise语句来处理可能出错的转换,例如:= Table.TransformColumns(Source, {{"Column1", each try Number.From(_) otherwise null}}),这样可以将无法转换的值转为null,避免错误。 还需要检查数据导入时的步骤是否正确。比如,用户是否在获取数据时选择了正确的表格区域,是否存在隐藏的行或列包含了错误值。有时,数据源中的空行或合并单元格也会导致解析错误,需要在Power Query中进行清理。 最后,如果问题依然存在,可能需要逐步回退查询步骤,找到首次出现错误的步骤,然后详细检查该步骤的输入和输出数据,以确定具体原因。此外,查看Power Query的错误消息详情,通常会提供具体的行和列信息,帮助定位问题所在。 总结来说,解决Power Query中的DataFormat.Error: 无效单元值‘#NAME?’需要从数据源检查、步骤验证、类型转换以及错误处理几个方面入手,逐排查可能的问题点,并进行相应的修正。</think>### Power Query中解决DataFormat.Error: 无效单元值“#NAME?”的步骤 1. **检查数据源原始值** - 若数据源为Excel文件,直接打开文件查看是否存在`#NAME?`错误。修正Excel公式错误后重新导入Power Query[^1]。 - 若无法修改数据源,可在Power Query中使用`替换错误值`功能: ```powerquery Table.ReplaceErrorValues(源, {{"列名", null}}) ``` 2. **验证列名引用与语法** - 检查所有步骤中引用的列名是否与当前名称致。例如,若列名从`Column1`修改为`额`,后续步骤需同步更新。 - 避免在自定义列中使用Excel公式语法(如`=SUM(A1:B1)`),改用M函数(如`List.Sum({[A1], [B1]})`)。 3. **数据类型转换处理** - 使用`try...otherwise`处理转换错误: ```powerquery Table.TransformColumns(源, {{"目标列", each try Number.FromText(_) otherwise null}}) ``` - 若某列混合文本与数字,先分离或统格式: ```powerquery Table.AddColumn(源, "清洗列", each if Value.Is(_, type text) then _ else Text.From(_)) ``` 4. **检查查询步骤与数据预览** - 在Power Query编辑器中**逐步骤回退**,找到首次报错的步骤。观察数据预览中是否有异常值或特殊符号。 - 使用`拆分列`或`筛选行`清理无效数据: ```powerquery Table.SelectRows(源, each ([目标列] <> "#NAME?")) ``` 5. **处理外部数据连接问题** - 若数据来自数据库或API,检查连接凭据是否有效(参考引用[1]的凭据错误案例)[^1]。 - 确保查询参数类型正确,如引用[4]中检查实体类型的逻辑[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值