不带重复项的Excel计数

cyej8jka  于 2023-08-08  发布在  其他
关注(0)|答案(3)|浏览(107)

我想知道一周内一个名字每天出现的次数。然而,我不希望重复,如果他们的名字出现在这一天多次。人们正在注册他们当天将使用的资源。
| 笔|铅笔|橡皮擦| Eraser |
| --|--|--| ------------ |
| 约书亚|约书亚|卡拉| Carla |
| 约书亚|卡拉|||
我试着使用countif,但它也会计算重复。
例:看星期一。Excel会把约书亚算为2,但我只想把他算为1。
那么那一周,如果我们只算一周中有周一和周二的话。约书亚的结果应该是2,而不是3。

yftpprvb

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
  • 接下来,从数据选项卡-->获取和转换数据-->获取数据-->从其他源-->空白查询中打开一个空白查询
  • 上面的命令可以打开Power Query窗口,现在从Home选项卡--> Advanced Editor -->并通过删除您看到的任何内容粘贴以下M-Code,然后按Done
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"


  • 最后,要将其导入Excel -->单击关闭并加载或关闭并加载到-->第一个单击的将创建一个新工作表,其中包含所需的输出,而后者将提示一个窗口,询问您将结果放置在哪里。
fae0ux8s

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列的数组。此结果的元素计算namedata的相应行中出现的次数。
添加>=1并将结果 Package 在N()函数中,将结果数组转换为1和0,如果name出现在data的相应行中,则为1,否则为0。将所有内容 Package 在SUM函数中,即可得到name所需的结果。

备注:

如果Excel的动态版本不可用,则SEQUENCE函数创建的1列数组可以替换为工作表上的一个范围,该范围为1列宽,行数与数据中的列数相同。范围内的所有元素都应该是1。这个范围可以代替公式中的SEQUENCE函数,尽管它可能需要使用Ctl+Shift+Enter来输入作为数组公式的最终公式。MMULTCOLUMNS函数在较旧的非动态数组版本的Excel中均可用。

rryofs0p

rryofs0p3#

使用REDUCE/XMATCH逐行计数

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)

字符串

  • 如果你把数据放在Excel表格中,你可以使用了
=LET(data,Drop(Table1,,1),...

相关问题