我能在SharePoint中创建一个COUNTIF计算列吗?

8
有没有一种方法可以创建一个SharePoint计算列,返回列表中条目数量的计数?如果我的列表中有3个客户属于公司“星巴克”,我希望该字段返回“3”。
5个回答

14

(根据dariom的建议,编辑了一些措辞以提高清晰度。)

您可以使用不太为人知的查找列变体之一来获取您想要的另一个列表。

假设您有一个名为“公司”的列表,其中标题列中有“星巴克”、“皮茶”等值。现在您还有一个所提到的客户列表,但“公司”列是指向“公司”列表中的标题列的查找列。

您可以向公司列表添加与您描述的非常相似的计数。转到您的公司列表,添加一个类型为“查找”的列,引用客户列表,您会注意到在下拉区域中定义查找时,如果您指向客户列表,则会有一个名为“计数相关”的新选项。这是自动出现的,因为它认识到客户列表有一个指向此列表的查找。选择该“计数相关”选项,现在您的公司列表将具有一个计算与该公司关联的客户数量的列。

无需编码、Javascript黑客或任何其他东西。只有隐藏的SharePoint自动魔法。 Column Related


1
山姆,这很完美(+1)-我不知道这是可能的!起初我读你的指示有些困惑。建议将“转到添加类型为“查找”的列,您会注意到...”编辑为“转到您的公司列表,添加一个类型为“查找”的列,引用客户列表,您会注意到...”以更明确地说明。 - dariom
好棒!+1!(评论限制15个字符以上?真的吗?) - vinny
在客户列表中,有没有一种方法可以按另一列进行过滤? - CXL
这是一个链接:http://pawansatope.blogspot.de/2012/01/how-to-create-count-related-lookup.html(不是我的博客) - Anthony Graglia
只是好奇,这是否需要“公司>标题”列的值(首先在“客户>公司”列中进行“查找”)是唯一的? - user1063287

2
您可以在XSLT数据视图中获取特定列表项的计数。
要做到这一点,您需要使用SharePoint Designer。
右键单击SharePoint列表视图(确保列表视图包含您想要过滤的字段),选择转换为XSLT数据视图。然后,在数据源窗口选择数据源选项卡,并将您想要获得特定项的总计数的字段拖放到您希望在XSLT数据视图中显示的位置。单击显示数字值的地方,您应该会看到一个闪电图标,请选择下拉菜单并选择计数,然后再次选择并选择筛选器。选择“单击此处添加新子句”,然后再次选择您的字段名称,并输入您的唯一值,例如Starbucks,然后单击确定。您可以重复此过程以获取其他字段的总数。现在,您将看到列表中Starbucks项的总数。

2

不,我认为使用开箱即用的计算列没有办法做到这一点。

您可以尝试以下其他方法:

  • 为列表创建一个视图,在公司字段上进行分组并包括总数。这是最简单的方法,但可能不完全符合您的要求。
  • 创建一个自定义列类型,执行CAML查询以查找您感兴趣的项目。如果您之前没有做过这个,会有一定的学习曲线。如果您将此自定义列添加到的列表中有大量行,则需要为每行执行查询,效率低下-对于少量行来说还好。
  • 在列表上使用事件处理程序,在每次添加或删除列表中的新项目时更新列值。这种方法更容易,但如果列表中有大量项目,则也可能效率低下。

实际上我想做的是过滤列表,只列出其中有两个或更多来自该公司的项目。我认为我需要创建一个计算列来完成这个任务。因此,我的计算列会计算我的列表中每个公司出现的次数...然后我可以通过筛选器说当(我的计算列>1)时进行过滤。还有其他方法吗? - Whozumommy
Sam Yate的回答是最简单的方法。接受他的回答! - dariom

2
正如dariom所说(我的打字速度太慢了,+1!),在SharePoint中默认情况下只能对当前行使用计算列。但是,有一些文档记录的解决方法涉及SharePoint Designer或jQuery。您可以参考这里这里。请注意保留HTML标签。

1

我以类似Niall的方式成功实现了类似的功能。基本上,我做了以下几步:

  1. 根据源列表,在一个“测试”网页上创建了一个数据视图网络部件(DVWP)。
  2. 添加了页脚列,用于显示计数。
  3. 设置了筛选条件(即我想要计数的项目)。
  4. 在代码中删除了重复项行。

最后,我只保留了页脚,它显示了所有列表项的筛选计数。我进一步自定义了页脚,去掉了阴影背景。最后,我导出了这个网络部件,并将其导入到用户希望看到满足条件的列表项总数的页面上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接