我正在使用导出
.xls
数据文件进行分析的业务应用程序。我想使用 PowerQuery
将它们导入 Excel。
数据存在层次结构,但仅通过
first column
的缩进来表示。没有前导零或其他字符。
Powerquery M
好像没有返回缩进级别的函数。
我发现的其他方法依赖于计算前导零,但这对我不起作用。
在此过程中,我使用 Cell.IndentLevel 属性编写了一个简单的 Excel 自定义函数,效果很好,但我想让 PowerQuery 来执行此操作,因此只有一个导入代码。
问:Powerquery 可以访问 Excel 单元格.
indentlevel
值吗?或者它可以执行自定义的 Excel 函数吗?我还能如何解决这个问题?
编辑 - Ron Rosenfield 非常正确地提到,这个缩进问题可能是基于 Excel 的,看起来 Power 查询没有缩进处理程序。
这可能是因为 Excel 缩进级别不是数据层次结构的 ISO 方法。
因此,您可以应用一个辅助列,它将强力给出缩进级别,然后强力查询可以处理其余的事情。
这应该可以,根据需要进行修改,它会检测并应用一个数字
Sub Macro1()
Dim MyCell As Variant
Range("A:A").Insert
For Each MyCell In Range("A1:A10") 'Change this to be Dynamic
MyCell.Value = MyCell.Offset(, 1).IndentLevel
Next MyCell
End Sub
Oooh 还从外部暂存...“Transform”ETL 的一部分(提取、转换、加载)嗯,大多数时候缩进都是由空格处理的。
除了 XLS 之外,您还有其他选择吗,因为 CSV 中的缩进处理方式可能有所不同。
在毫不讽刺的命名中,Power Query 功能区的转换选项卡,您可以通过分隔符空间使用拆分列。 (除了 Tab 之外,更常见的缩进分隔符之一。)
这将允许您对数据进行分组,如果还有其他空格,会有点混乱,但您可以采取步骤来处理它
或者,如果失败,您可以使用“转换”选项卡中的其他选项,因为没有您从中导出的系统的示例,很难说这是否是 Excel 缩进或缩进是否实际适用。
结果
我也有同样的烦恼。 我只能解决这个:
子level2_for_transfer_data_from1C_to_powerquery()
' ' 为任意数量的层次结构的每个级别附加“”|S ' ' ' 对于选择中的每个单元格 我=0 当 i < cell.IndentLevel cell.Value = "" 和 cell.Value 执行时 我=我+1 环形 下一个单元格 结束子
然后我用分隔符“_”分隔数据