【问题标题】:Comparing two cell strings to print out good or bad比较两个单元格字符串以打印出好坏
【发布时间】:2021-01-22 10:37:52
【问题描述】:

下面是我一直在摸索的 VBA 代码。我有 4 个不同的值可以比较以获得我想要的结果和多个要比较的东西。如果有人能帮我解决这个问题,那就太好了。

Public Sub cts_04_cmac_2_check()
    'CTS04CSPRWY CMAC 2 Check
    If (Sheet1.Range("A62") = "2.3.4/42/24/B1") And (Sheet1.Range("A63") = "2.3.4/42/1/B1") Then
            Sheet1.Range("C3").Value2 = "Good"
        Else
            Sheet1.Range("C3").Value2 = "Invalid"
    End If
    'End of CTS04CSPRWY CMAC 2 Check
End Sub

实际上,我希望包含以下语句:

Public Sub cts_04_cmac_2_check()
    'CTS04CSPRWY CMAC 2 Check
    If (Sheet1.Range("A62") = "2.3.4/42/24/B1" Or Sheet1.Range("A62") = "2.3.4/42/24/B2) And (Sheet1.Range("A63") = "2.3.4/42/1/B1" Or Sheet1.Range("A63") = "2.3.4/42/1/B2") Then
            Sheet1.Range("C3").Value2 = "Good"
        Else
            Sheet1.Range("C3").Value2 = "Invalid"
    End If
    'End of CTS04CSPRWY CMAC 2 Check
End Sub

这会将 2 个值与根据选择而更改的数组索引表进行比较。

还有一个问题是:我可以在 end if 之后继续添加额外的 If 语句吗?使用上面的类似代码,我有大约 256 次检查要运行。

它比较了这两个公式:

=INDEX('集合节点数据'!A2:AQ1048576, MATCH(I3,'集合节点数据'!A2:A230, 0),15) =INDEX('集合节点数据'!A2:AQ1048576, MATCH(I3,'集合节点数据'!A2:A230, 0),26) enter image description here

基于这个值

enter image description here

在 CMTS 检查单元 C3 中获得“好”或“坏” enter image description here

【问题讨论】:

  • 您可以使用 for 循环来检查 256
  • 这4个值是什么,multiple things to compare是什么意思?
  • 所以每次检查都将在每个“CMAC”之间,我有 3x56 个“CMAC”值,每个值将包含 2 个字符串值,这就是我想要进行 2 次检查的原因。它在比较“这个或这个在这个单元格内吗?”并且“是这个还是这个单元格内的这个”如果这是真的,则将“好”放入 C3。但我需要它继续为更多的价值做到这一点。它正在检查位置让我告诉我它是否好。
  • 截图可能会有所帮助。我不确定你在问什么。

标签: excel vba excel-formula excel-2016


【解决方案1】:

这段代码和你自己的基本一样,只是按照你的要求进行了压缩:

If (
     (  Sheet1.Range("A62") = "2.3.4/42/24/B1" And Sheet1.Range("A63") = "2.3.4/42/1/B1") Or _
     (  Sheet1.Range("A62") = "2.3.4/42/24/A1" And Sheet1.Range("A63") = "2.3.4/42/1/A1") Or _
     (  Sheet1.Range("A62") = "2.3.4/42/24/C1" And Sheet1.Range("A63") = "2.3.4/42/1/C1") _
   ) Then
        Sheet1.Range("C2").Value2 = "Good"
    Else
        Sheet1.Range("C2").Value2 = "Invalid"
End If

【讨论】:

    【解决方案2】:

    我找到了解决方法,感谢您跟踪它并快速响应!

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    If Not Intersect(Target, Range("$I$3")) Is Nothing Then
        Call ctscheck
        End If
    End Sub
    
    Public Sub ctscheck()
    'CTS04CSPRWY CMAC 2 Check
        If (Sheet1.Range("A62") = "2.3.4/42/24/B1") And (Sheet1.Range("A63") = "2.3.4/42/1/B1") Then
                Sheet1.Range("C2").Value2 = "Good"
            ElseIf (Sheet1.Range("A62") = "2.3.4/42/24/A1") And (Sheet1.Range("A63") = "2.3.4/42/1/A1") Then
                Sheet1.Range("C2").Value2 = "Good"
            ElseIf (Sheet1.Range("A62") = "2.3.4/42/24/C1") And (Sheet1.Range("A63") = "2.3.4/42/1/C1") Then
                Sheet1.Range("C2").Value2 = "Good"
            Else
                Sheet1.Range("C2").Value2 = "Invalid"
        End If
    'End of CTS04CSPRWY CMAC 2 Check
    End Sub
    

    只需要使用 OR 语句就可以使用它,它是金色的。如果有人对压缩此内容有任何建议,请告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-27
      • 1970-01-01
      相关资源
      最近更新 更多