excel - 如何调用自定义函数以应用于具有不同列范围的查询文件?
问题描述
我正在按照本教程从文件夹中导入文件并清理它们。但是,对于该示例,每个 .xls 文件都有相同数量的列。就我而言,我有这个(清洁后):
| Col1 | Col2 |
|------|------|
| 1 | 3 |
| 4 | 2 |
和
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 3 | 4 | 8 |
| 4 | 7 | 1 |
+------+------+------+
我想得到这个结果:
+------+------+------+
| Col1 | Col2 | Col3 |
+------+------+------+
| 1 | 3 | - |
| 4 | 2 | - |
| 3 | 4 | 8 |
| 4 | 7 | 1 |
+------+------+------+
我的自定义函数看起来像这样(用 etc 替换列,因为它们差不多有两千个)。我想我必须删除这两个#"Changed Type"
步骤,但是如何删除我不想要的行?
(ExcelFile) =>
let
Source = Excel.Workbook(ExcelFile, null, true),
#"CMG Barras pesos_Sheet" = Source{[Item="CMG Barras pesos",Kind="Sheet"]}[Data],
#"Changed Type" = Table.TransformColumnTypes(#"CMG Barras pesos_Sheet",{"Column1", type any}, etc)
#"Removed Top Rows" = Table.Skip(#"Changed Type",8),
#"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
#"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"Barra", type any}, etc),
#"Removed Top Rows1" = Table.Skip(#"Changed Type1",1)
in
#"Removed Top Rows1"
解决方案
这些"#Changed Type"
步骤是函数中唯一单独引用列的步骤。其他人只是删除(跳过)表的几行并将一行提升为列名。
有一些方法可以处理可变数量的列,但在你的情况下,我认为你不需要做任何花哨的事情。只需采取这些步骤:
(ExcelFile) =>
let
Source = Excel.Workbook(ExcelFile, null, true),
#"CMG Barras pesos_Sheet" = Source{[Item="CMG Barras pesos",Kind="Sheet"]}[Data],
#"Removed Top Rows" = Table.Skip(#"CMG Barras pesos_Sheet",8),
#"Promoted Headers" = Table.PromoteHeaders(#"Removed Top Rows", [PromoteAllScalars=true]),
#"Removed Top Rows1" = Table.Skip(#"Promoted Headers",1)
in
#"Removed Top Rows1"
推荐阅读
- javascript - 以更改的对象属性为目标
- python - 使用用户输入实例化类
- c# - 我如何在我的 c# 项目中使用自定义属性
- php - 如何使用 Foreach 为每个用户上传不同名称的相同文件
- python - 使用训练集中的回归模型的输出在测试数据框中创建一列?
- arrays - 打印整数数组会在 Ada 中生成奇怪的输出
- algorithm - 以下方法是否正确确定了斐波那契函数的复杂性?
- amazon-cloudformation - 使用 Lambda 函数自动创建的角色的 ARN
- python - 获取列表的所有子列表的快速方法
- java - Java 正在连接到 SQL 数据库,但它没有更新表