CountIfs() 在 Power Query M 中等效,在 self 中每行计数

excel

1个回答

写回答

虞莘哲

2025-06-13 09:35

+ 关注

excel
excel

使用Power Query M中的CountIfs()函数进行行计数

在Power Query M中,我们经常需要对数据进行处理和转换。有时候,我们需要对数据进行一些特定的计数操作,例如统计满足特定条件的行数。在excel中,我们可以使用CountIfs()函数来实现这个目的。那么在Power Query M中,我们应该如何实现类似的行计数呢?

在Power Query M中,我们可以使用Table.RowCount()函数来获取表格中的行数。但是,如果我们想要对每行进行计数,就需要使用一些其他的函数来实现了。下面,我将为大家介绍一种实现方式,并提供相应的案例代码。

案例代码:

假设我们有一个包含学生信息的表格,其中包括学生的姓名、性别和年龄。我们想要统计每个性别的学生人数。下面是一个示例表格:

| 姓名 | 性别 | 年龄 |

| ---- | ---- | ---- |

| 张三 | 男 | 18 |

| 李四 | 女 | 20 |

| 王五 | 男 | 19 |

| 赵六 | 男 | 21 |

| 钱七 | 女 | 22 |

我们可以使用Power Query M中的Table.AddColumn()函数来添加一个新的列,用于存储每个性别的学生人数。下面是相应的代码:

let

// 步骤1:加载表格数据

Source = excel.CurrentWorkbook(){[Name="Table1"]}[Content],

// 步骤2:添加计数列

AddCount = Table.AddColumn(Source, "学生人数", each

let

gender = [性别],

count = List.Count(

Table.SelectRows(Source, each [性别] = gender)

)

in

count

)

in

AddCount

在上面的代码中,我们首先通过excel.CurrentWorkbook()函数加载了表格数据。然后,使用Table.AddColumn()函数为每一行添加了一个名为"学生人数"的新列。在每行的计算过程中,我们使用了一个匿名函数,并通过Table.SelectRows()函数选择了与当前行性别相同的行,然后使用List.Count()函数对选择的行进行计数。

使用CountIfs()函数进行行计数的优势

通过上面的案例代码,我们成功地在Power Query M中实现了类似于CountIfs()函数的行计数功能。虽然这个方法可以达到我们的目的,但使用CountIfs()函数可以更简单地实现相同的功能。

CountIfs()函数是excel中常用的一个函数,它可以根据一个或多个条件统计满足条件的单元格个数。与Power Query M中的方法相比,CountIfs()函数可以更直观地表达我们的意图,并且代码更简洁。

下面是使用CountIfs()函数实现相同功能的案例代码:

let

// 步骤1:加载表格数据

Source = excel.CurrentWorkbook(){[Name="Table1"]}[Content],

// 步骤2:添加计数列

AddCount = Table.AddColumn(Source, "学生人数", each

let

gender = [性别],

count = excel.WorkbookFunction.CountIfs(Source[性别], gender)

in

count

)

in

AddCount

通过使用CountIfs()函数,我们可以直接在Table.AddColumn()函数中引用源数据表格中的列,并使用excel.WorkbookFunction.CountIfs()函数进行计数。

使用CountIfs()函数的代码优势与局限性

虽然使用CountIfs()函数可以简化我们的代码,但也有一些局限性。首先,CountIfs()函数只能在excel中使用,而无法在其他平台或工具中使用。其次,CountIfs()函数只能针对单个表格进行计数,而无法对多个表格进行计数。

相比之下,使用Power Query M中的方法可以在不依赖于excel的环境中使用,并且可以对多个表格进行计数。因此,根据实际需求和使用场景,我们可以选择使用适合的方法来实现行计数操作。

在Power Query M中,我们可以使用Table.RowCount()函数获取表格的行数,但如果我们想要对每行进行计数,就需要使用其他的方法。通过使用Table.AddColumn()函数和匿名函数,我们可以在Power Query M中实现类似于CountIfs()函数的行计数功能。

虽然使用CountIfs()函数可以更简洁地实现相同的功能,但它只适用于excel环境,并且只能对单个表格进行计数。因此,根据实际需求和使用场景,我们可以选择使用适合的方法来实现行计数操作。

参考资料:

- Microsoft Power Query M formula language: https://docs.microsoft.com/en-us/powerquery-m/

- Microsoft excel functions: https://support.microsoft.com/en-us/office/excel-functions-by-category-5f91f4e9-7b42-46d2-9bd1-63f26a86c0eb

举报有用(4分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号