使用Powerquery从Excel缩进中提取层次结构

问题描述 投票:0回答:2

我正在使用导出

.xls
数据文件进行分析的业务应用程序。我想使用
PowerQuery
将它们导入 Excel。

数据存在层次结构,但仅通过

first column
的缩进来表示。没有前导零或其他字符。

Powerquery M
好像没有返回缩进级别的函数。

我发现的其他方法依赖于计算前导零,但这对我不起作用。

在此过程中,我使用 Cell.IndentLevel 属性编写了一个简单的 Excel 自定义函数,效果很好,但我想让 PowerQuery 来执行此操作,因此只有一个导入代码。

问:Powerquery 可以访问 Excel 单元格.

indentlevel
值吗?或者它可以执行自定义的 Excel 函数吗?我还能如何解决这个问题?

excel powerquery m
2个回答
0
投票

编辑 - 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 缩进或缩进是否实际适用。

结果


0
投票

我也有同样的烦恼。 我只能解决这个:

子level2_for_transfer_data_from1C_to_powerquery()

' ' 为任意数量的层次结构的每个级别附加“”|S ' ' ' 对于选择中的每个单元格 我=0 当 i < cell.IndentLevel cell.Value = "" 和 cell.Value 执行时 我=我+1 环形 下一个单元格 结束子

然后我用分隔符“_”分隔数据

© www.soinside.com 2019 - 2024. All rights reserved.