我想知道一周内一个名字每天出现的次数。然而,我不希望重复,如果他们的名字出现在这一天多次。人们正在注册他们当天将使用的资源。| 笔|铅笔|橡皮擦| Eraser || --|--|--| ------------ || 约书亚|约书亚|卡拉| Carla || 约书亚|卡拉|||我试着使用countif,但它也会计算重复。例:看星期一。Excel会把约书亚算为2,但我只想把他算为1。那么那一周,如果我们只算一周中有周一和周二的话。约书亚的结果应该是2,而不是3。
yftpprvb1#
尝试使用MMULT()x1c 0d1x的数据·单元格F2中使用的公式
=LET( a,TOCOL(IF(B2:D3="",NA(),A2:A3),3), b,TOCOL(B2:D3,1), c,DROP(UNIQUE(HSTACK(a,b)),,1), d,UNIQUE(c), HSTACK(d,MMULT(N(d=TOROW(c)),SEQUENCE(ROWS(c),,,0))))
字符串要使用POWER QUERY执行任务,请执行以下步骤:
的
Table1
let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content], #"Unpivoted Other Columns" = Table.UnpivotOtherColumns(Source, {"Day"}, "Attribute", "Value"), #"Removed Duplicates" = Table.Distinct(#"Unpivoted Other Columns", {"Day", "Value"}), #"Removed Other Columns" = Table.SelectColumns(#"Removed Duplicates",{"Value"}), #"Grouped Rows" = Table.Group(#"Removed Other Columns", {"Value"}, {{"Count", each Table.RowCount(_), Int64.Type}}), #"Renamed Columns" = Table.RenameColumns(#"Grouped Rows",{{"Value", "Names"}}) in #"Renamed Columns"
型
fae0ux8s2#
第一个月这需要SEQUENCE函数(即使用Excel的动态数组版本)。data是名称数组(因此,通过排除OP中显示的表的标题行和标题列获得的2行和3列数组)。name是正在寻找的名字,例如“约书亚”。
SEQUENCE
data
name
说明:
N(data=name)创建一个与data大小相同的0和1数组,其中1表示name在数组data中的相应位置。0表示name不在相应位置。SEQUENCE(COLUMNS(data),1,1,0)创建一个只有1列的数组,行数与data中的列数相同。数组中的每个元素的值为1。MMULT(N(data=name),SEQUENCE(COLUMNS(data),1,1,0)使用matrix multiplication将两个数组相乘。选择第二个数组意味着这样做的结果是创建一个行数与data相同且只有1列的数组。此结果的元素计算name在data的相应行中出现的次数。添加>=1并将结果 Package 在N()函数中,将结果数组转换为1和0,如果name出现在data的相应行中,则为1,否则为0。将所有内容 Package 在SUM函数中,即可得到name所需的结果。
N(data=name)
SEQUENCE(COLUMNS(data),1,1,0)
MMULT(N(data=name),SEQUENCE(COLUMNS(data),1,1,0)
>=1
N()
SUM
备注:
如果Excel的动态版本不可用,则SEQUENCE函数创建的1列数组可以替换为工作表上的一个范围,该范围为1列宽,行数与数据中的列数相同。范围内的所有元素都应该是1。这个范围可以代替公式中的SEQUENCE函数,尽管它可能需要使用Ctl+Shift+Enter来输入作为数组公式的最终公式。MMULT和COLUMNS函数在较旧的非动态数组版本的Excel中均可用。
MMULT
COLUMNS
rryofs0p3#
x1c 0d1x的数据
=LET(data,B2:D8, u,UNIQUE(TOCOL(data,3)), Names,FILTER(u,u<>""), Zeros,SEQUENCE(ROWS(Names),,0,0), RowIndices,SEQUENCE(ROWS(data)), Counts,REDUCE(Zeros,RowIndices,LAMBDA(Result,r, Result+ISNUMBER(XMATCH(Names,INDEX(data,r,))))), dr,HSTACK(Names,Counts), dr)
字符串
=LET(data,Drop(Table1,,1),...
3条答案
按热度按时间yftpprvb1#
尝试使用MMULT()
x1c 0d1x的数据
·单元格F2中使用的公式
字符串
要使用POWER QUERY执行任务,请执行以下步骤:
的
Table1
型
的
fae0ux8s2#
第一个月
这需要
SEQUENCE
函数(即使用Excel的动态数组版本)。data
是名称数组(因此,通过排除OP中显示的表的标题行和标题列获得的2行和3列数组)。name
是正在寻找的名字,例如“约书亚”。说明:
N(data=name)
创建一个与data
大小相同的0和1数组,其中1表示name
在数组data
中的相应位置。0表示name
不在相应位置。SEQUENCE(COLUMNS(data),1,1,0)
创建一个只有1列的数组,行数与data
中的列数相同。数组中的每个元素的值为1。MMULT(N(data=name),SEQUENCE(COLUMNS(data),1,1,0)
使用matrix multiplication将两个数组相乘。选择第二个数组意味着这样做的结果是创建一个行数与data
相同且只有1列的数组。此结果的元素计算name
在data
的相应行中出现的次数。添加
>=1
并将结果 Package 在N()
函数中,将结果数组转换为1和0,如果name
出现在data
的相应行中,则为1,否则为0。将所有内容 Package 在SUM
函数中,即可得到name
所需的结果。备注:
如果Excel的动态版本不可用,则
SEQUENCE
函数创建的1列数组可以替换为工作表上的一个范围,该范围为1列宽,行数与数据中的列数相同。范围内的所有元素都应该是1。这个范围可以代替公式中的SEQUENCE
函数,尽管它可能需要使用Ctl+Shift+Enter来输入作为数组公式的最终公式。MMULT
和COLUMNS
函数在较旧的非动态数组版本的Excel中均可用。rryofs0p3#
使用REDUCE/XMATCH逐行计数
x1c 0d1x的数据
字符串
型