excel 当某些行中有多个值时,计算特定值在列中出现的次数

tcbh2hod  于 2023-04-22  发布在  其他
关注(0)|答案(4)|浏览(158)

请问在幂bi中是否有一个度量或DAX,可以用来计算当某些行中有多个值时,特定值在列中出现的次数?
比如说;

我不想取消透视表,因为它会扰乱表中的其他数据。
结果

bybem2ql

bybem2ql1#

step1.为AA、AB、AC创建列和测量:

列:

AA = if(search("AA",[Value],,0)>0,1,0)

测量:

AA measure = sum('Value'[AA])

与AB,AC.

相同

**step2.**新建表:

Result = datatable(
"Category",STRING,
{{"AA"},{"AB"},{"AC"}})

**step3.**在新表中添加列:

Value = switch(true(),
[Category]="AA",[AA measure],
[Category]="AB",[AB measure],
[Category]="AC",[AC measure])

apeeds0o

apeeds0o2#

假设您已经生成了一个表(名为 Values),其中包含一个单列(名为 Value)的不同值(例如“AA”,“AB”,“AC”),请创建此度量

=
VAR ThisValue =
    MIN ( 'Values'[Value] )
RETURN
    COUNTROWS ( FILTER ( Table1, SEARCH ( ThisValue, Table1[Value],, 0 ) > 0 ) )

并将其添加到可视化视图中的 Values 表中的 Value 字段旁边。

vql8enpb

vql8enpb3#

在Power Query中执行以下操作
1.第一个按分隔符拆分列;
1.取消旋转列
1.修剪列中的文本

  1. Group By值和计数行

oxcyiej7

oxcyiej74#

如果您只想使用Excel公式来执行此操作,您可以尝试以下操作。在单元格C1中输入以下公式:

=LET(A, A2:A8,values,DROP(REDUCE("",A,LAMBDA(ac,x,
 VSTACK(ac,TEXTSPLIT(x,,"; ",1)))),1), ux, UNIQUE(values), cnts, 
 BYROW(ux, LAMBDA(x, SUM(N(values=x)))),
 VSTACK({"Category","Result"},HSTACK(ux, cnts)))

下面是输出:

有关更多信息,请查看我对以下与REDUCE/VSTACK模式相关的问题的回答:如何将Excel中表格从垂直转换为水平,但长度不同。
如果你没有一个大的数据集,在连接整个列后不会达到最大单元格大小(32,767字符数),那么你可以尝试以下操作:

=LET(A, A2:A8, values,TOCOL(TEXTSPLIT(TEXTJOIN(",",,A),"; ",",",1),2),
 ux, UNIQUE(values), cnts,BYROW(ux, LAMBDA(x, SUM(N(values=x)))),
 VSTACK({"Category","Result"}, HSTACK(ux, cnts)))

第二个解决方案比第一个快大约100x

相关问题