excel - 当单元格有多个值时有没有办法匹配
问题描述
我正在从包含此数据的 Excel 工作表的 F2:F11 列中读取数据
|SAT|
|SAT|
|SAT|
|SAT|
|M, T, TH, SAT|
|SUN, W|
|SUN, W, F|
|SAT|
|T, F, SUN|
|W|
我正在使用这个 vba 代码来获得周六(SAT)的比赛
Sub Test()
Dim WaterDays As Range
Set myWKS = Worksheets("Water")
Set WaterDays = myWKS.Range("F2:F11")
For Each y In WaterDays
vParts = Split(y, ",")
For Each dy In vParts
If StrComp(dy, "SAT") = 0 Then
Debug.Print ("Yes")
End If
Next dy
Next y
End Sub
当我这样做时,它会给我 5 个匹配项(是),而该列中实际上有 6 个 SAT。我在这里做错了什么?任何帮助,将不胜感激。谢谢
解决方案
当你M, T, TH, SAT
用逗号分割字符串时,你会在结果字符串中得到空格,所以使用TRIM
函数:
...StrComp(Trim(dy), "SAT")...
编辑
您在某些字符串中有不间断的空格,因此您需要组合Trim
和Substitute
:
Sub Test()
Dim WaterDays As Range, cel As Range
Set myWKS = Worksheets("Water")
Set WaterDays = myWKS.Range("F2:F11")
For Each y In WaterDays
vParts = Split(y, ",")
For Each dy In vParts
tdy = Application.Substitute(Trim(dy), Chr(160), "")
If StrComp(tdy, "SAT") = 0 Then
Debug.Print ("Yes")
End If
Next dy
Next y
End Sub
推荐阅读
- android - FragmentPagerAdapter 使用 getChildFragmentManager() 崩溃
- html - 更改信用卡占位符颜色
- c# - 手动创建的 UserControl 未触发 SizeChanged 事件
- google-chrome - 在本地服务器中使用地理定位 API
- haskell - 访问特定 ADT 时出错
- jquery - jQuery 输出图像标题/描述不起作用?
- javascript - 避免 iframe 的 URL 被其他人使用
- php - Slim 容器的正确接口是什么?
- code-generation - Acceleo Trasformation - 找不到带有 uri '*' 的包。
- java - XGBoost,从 CSR 格式的一行数据创建 DMatrix