如何用Power Query定位表格中指定字符串的行与列位置?
在Power Query中定位指定字符串的行/列位置(适用于行数可变的表格)
操作步骤:
导入表格到Power Query
- 打开Excel,选中目标表格数据,点击「数据」选项卡 → 「从表格/区域」,进入Power Query编辑器。
添加行索引列
- 在编辑器中,点击「添加列」选项卡 → 「索引列」→ 「从1开始」(行号和表格实际显示行对应,若需从0开始选「从0开始」)。
编写自定义查找逻辑
- 点击「主页」→「高级编辑器」,替换原有代码为以下M语言(注意替换代码里的表格名称和目标字符串):
let 源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content], // 把"表1"改成你的表格名称 添加索引 = Table.AddIndexColumn(源, "行号", 1, 1, Int64.Type), 查找目标字符串 = (目标文本 as text) as table => let 遍历行 = Table.AddColumn(添加索引, "匹配信息", (行) => let 遍历列 = List.Select(Record.FieldNames(行), each _ <> "行号"), 查找匹配 = List.Select(遍历列, each Record.Field(行, _) = 目标文本), 生成结果 = if List.Count(查找匹配) > 0 then [行号=行[行号], 列名=查找匹配{0}, 列索引=List.PositionOf(Record.FieldNames(源), 查找匹配{0})+1] else null in 生成结果 ), 筛选匹配行 = Table.SelectRows(遍历行, each [匹配信息] <> null), 提取位置信息 = Table.ExpandRecordColumn(筛选匹配行, "匹配信息", {"行号", "列名", "列索引"}, {"目标行号", "目标列名", "目标列索引"}) in 提取位置信息, 结果 = 查找目标字符串("Hello") // 替换成你要找的目标字符串 in 结果
- 获取结果
- 点击「关闭并上载」,生成的新表格会显示匹配到的目标行号、目标列名和目标列索引(列索引从1开始,和Excel列号一致)。
额外说明:
- 列数可变也适用:代码会自动遍历所有列,无需手动指定列名
- 多匹配处理:如果目标字符串在表格中出现多次,会返回所有匹配的位置
- 大小写匹配:如需不区分大小写查找,把代码里的
Record.Field(行, _) = 目标文本改成Text.Lower(Record.Field(行, _)) = Text.Lower(目标文本)
内容的提问来源于stack exchange,提问作者Nico
相关产品推荐
相关产品推荐

