【问题标题】:MS Access Query - count number of values in a comma separated columnMS Access Query - 计算逗号分隔列中的值数
【发布时间】:2017-05-02 03:42:03
【问题描述】:

我想计算 MS Access 表中逗号分隔字段中值的出现次数。请有任何建议:

例如

表格

ID |价值

1 | 1,2,3
2 | 1,5,8,9,5
3 | 1,5,8,3

期望的输出

ID | # 价值

1 | 3
2 | 5
3 | 4

【问题讨论】:

  • 将需要一个可以在查询或文本框中调用的自定义 VBA 函数。开发代码,当您遇到特定问题时将其发布以供分析。

标签: database ms-access


【解决方案1】:

正如 @June7 所说,您需要一个可以在查询中调用的自定义函数。

把它放在一个标准模块中:

Public Function CountValues(ByVal commaValues As Variant) As Long
    If Not IsNull(commaValues) Then CountValues = UBound(Split(commaValues, ",")) + 1
End Function

您现在可以在查询中调用它:

SELECT ID, CountValues(FieldName) AS [# of value]
FROM YourTableName;

输出:

ID | [价值#]

1 | 3
2 | 5
3 | 4
4 | 0

NULL 值默认为零。

【讨论】:

  • 我错了 - 如另一个答案所示,VBA 不是必需的,但它有缺陷。
【解决方案2】:

您也可以使用内置函数来执行此操作,而无需调用自定义函数:

select value,  Len([value])-Len(Replace([value],",","")) as [# of value]

【讨论】:

  • @Gungor,感谢您的回答,但是当我在查询中使用 Replace 时,我收到错误,Error: Undefined function 'Replace' in expression。
  • 这很奇怪。它可能与您的设置有关,与运行“不安全表达式”有关..您的环境是什么? windows/office版
  • 减法返回错误的结果。只需使用Len(Replace([value], ",", ""))。但是,如果值超过 9,结果将再次错误。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多