我有以下示例数据:https://docs.google.com/spreadsheets/d/1TSpuMRktIRAoACH5s1Dk9189NsNpJwjRtNaR5QROZg8/edit?usp=sharing
我想计算仅当列名下的数据不等于“N/A”时某个类别出现的次数
我目前所做的是,即使名称下的值为“N/A”,它仍然算作“1”
答案1
我创建了一个桌子从您的数据中进行动态引用,但如果您愿意,也可以使用没有表格的正常寻址
在 G 列中,创建类别的不同列表。在第 1 行中,创建区域的不同列表。在 Excel 2016 中,您可以使用高级筛选以及其他方法执行此操作。
然后,在相邻的单元格中输入公式:
=COUNTIFS(Categories[[Category]:[Category]],$G2,Categories[[Name]:[Name]],"<>N/A",Categories[[Regions]:[Regions]],H$1)
并向下和横向填充。
如果您不需要动态操作,也可以使用 Windows Excel 2010+ 和 Office 365 Excel 中的 Power Query 轻松完成
- 选择原始表格中的某个单元格
Data => Get&Transform => From Table/Range
或者From within sheet
- 当 PQ UI 打开时,导航至
Home => Advanced Editor
- 记下代码第 2 行的表名称。
- 用以下代码替换现有代码M 代码以下
- 将粘贴代码第 2 行的表名更改为您的“真实”表名
- 检查任何注释以及窗口
Applied Steps
,以更好地理解算法和步骤
M 代码
let
//Change table name in next line to your actual table name
Source = Excel.CurrentWorkbook(){[Name="Categories"]}[Content],
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Regions", type text}, {"Category", type text}, {"Name", type text}}),
//Group by Regions and Category
//Then Count if `Name` <> "N/A"
#"Grouped Rows" = Table.Group(#"Changed Type", {"Regions","Category"}, {
{"Count", each List.Count(List.Select([Name], each _ <> "N/A"))}}),
//Pivot on the Regions to get a separate column for each Region
#"Pivoted Column" = Table.Pivot(#"Grouped Rows", List.Distinct(#"Grouped Rows"[Regions]), "Regions", "Count"),
//Set the data types
typeIt = Table.TransformColumnTypes(#"Pivoted Column",
List.Transform(List.RemoveFirstN(Table.ColumnNames(#"Pivoted Column")), each {_, Int64.Type}))
in
typeIt