首页 > 解决方案 > 当单元格有多个值时有没有办法匹配

问题描述

我正在从包含此数据的 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。我在这里做错了什么?任何帮助,将不胜感激。谢谢

标签: excelvba

解决方案


当你M, T, TH, SAT用逗号分割字符串时,你会在结果字符串中得到空格,所以使用TRIM函数:

...StrComp(Trim(dy), "SAT")...

编辑

您在某些字符串中有不间断的空格,因此您需要组合TrimSubstitute

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

推荐阅读