我有一个奇怪的问题,我试图解决。我有一个带有文本字段的表。在该文本字段中,同一个单词可能不止一次出现(故意)。我此时并不担心拼写错误或变异。
这是一个例子...... 文本字段是一个人拥有的大学学位。 样本记录可能是...... "地质科学学士学位,篮子编织艺术学士学位,科学学士学位。" 现在,我想计算多少次" Bachelors"和"员工"出现在此字段中。 因此会有两个额外的计算字段称为" Total Bachelors"和" Total Associates。"在这种情况下,它们将设置为" 2"和" 1"分别
这是甚至可能的吗?如果是这样,我如何在查询中执行此操作? 非常感谢您的帮助。 英奇曼
答案 0 :(得分:2)
要统计一个单词,您需要在标准模块中使用公共VBA功能:
'--- Counts the number of occurrences of Needle in Haystack ---
' It is always safest to use Variant parameters for functions that called with user data
Public Function CountWord(vHaystack As Variant, vNeedle As Variant) As Long
Dim sHaystack As String
Dim sNeedle As String
If Len(vHaystack) > 0 And Len(vNeedle) > 0 Then
' Variant to string
sHaystack = vHaystack
sNeedle = vNeedle
' 1. Remove all instances of sNeedle in sHaystack
' 2. Calculate length difference of original vs. replaced string
' 3. Divide this number of characters by the length of sNeedle
CountWord = (Len(sHaystack) - Len(Replace(sHaystack, sNeedle, ""))) / Len(sNeedle)
Else
' Empty input data
CountWord = 0
End If
End Function
然后在查询中调用该函数:
SELECT ID, [Name], [degrees],
CountWord([degrees], "Bachelors") AS TotalBachelors,
CountWord([degrees], "Associates") AS TotalAssociates
FROM persons
答案 1 :(得分:0)
最简单的解决方案 - 在标准模块中创建一个函数,它返回字符串中的单词出现次数并在查询字段中使用它