在Excel中,如何计算列中字符串实例的数量

问题描述 投票:0回答:1

我有一个专栏,其中包含在不同日期参加过活动的不同工作人员。有时只有一个人参加,有时则有多人参加。我希望能够计算出每个员工参加的次数。我尝试过 COUNTIF,但是当超过一个人参加的情况下,这无法解决。

工作人员出席
约翰
戴夫
马克
本、约翰
马克,约翰
本和戴夫
马克和约翰

在上表中,我希望能够计算出每个员工参加的次数。

我提前道歉,我确信这个问题有时被问到并得到回答,但我可能缺乏语法意识以及如何表达我的查询

excel sum countif
1个回答
0
投票

假设根据发布的标签没有

Excel Constraints
,那么可以使用
GROUPBY()
MS365
中目前可用的
Beta Channel
那么以下应该可以工作。


=LET(
     _StaffAttending, TOCOL(TEXTSPLIT(TEXTAFTER(", "&SUBSTITUTE(A2:A9," &",","),", ",SEQUENCE(,10)),", "),2),
     GROUPBY(_StaffAttending,_StaffAttending,COUNTA,0,0))

或者,使用

MMULT()


=LET(
     _StaffAttending, TOCOL(TEXTSPLIT(TEXTAFTER(", "&SUBSTITUTE(A2:A9," &",","),", ",SEQUENCE(,10)),", "),2),
     UNIQUE(HSTACK(_StaffAttending, MMULT(N(_StaffAttending=TOROW(_StaffAttending)),SEQUENCE(ROWS(_StaffAttending),,,0)))))

或者,使用

POWER QUERY
在这里会更合适,因为它可以处理相当多的数据集,因此要使用上述过程实现此目的,请使用 POWER QUERY 窗口
UI
遵循以下简单步骤:


  • 首先将源范围转换为表格并相应命名,在本例中我将其命名为
    Table_1

  • 接下来,从 Data 选项卡 --> 获取和转换数据 --> 获取数据 --> 从其他来源 --> 空白查询
  • 打开一个空白查询

  • 上面的内容让 Power Query 窗口打开,现在从 Home 选项卡 --> 高级编辑器 --> 通过删除您看到的任何内容来粘贴以下 M-Code,然后按 Done

let
    Source = Excel.CurrentWorkbook(){[Name="Table_1"]}[Content],
    #"Replaced Value" = Table.ReplaceValue(Source," &",",",Replacer.ReplaceText,{"Staff attending"}),
    #"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(#"Replaced Value", {{"Staff attending", Splitter.SplitTextByDelimiter(",", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Staff attending"),
    #"Trimmed Text" = Table.TransformColumns(#"Split Column by Delimiter",{{"Staff attending", Text.Trim, type text}}),
    #"Grouped Rows" = Table.Group(#"Trimmed Text", {"Staff attending"}, {{"Count", each Table.RowCount(_), Int64.Type}})
in
    #"Grouped Rows"


  • 最后,将其导入回 Excel --> 单击 Close & LoadClose & Load To --> 单击的第一个应创建一个具有所需输出的 New Sheet,而后者将提示一个窗口,询问您将结果放在哪里。
© www.soinside.com 2019 - 2024. All rights reserved.