问题描述
下面是我一直在绞尽脑汁的 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 个值与根据选择而变化的数组索引表进行比较。
还有一个问题是:我可以在结束 if 后继续添加额外的 If 语句吗?我有大约 256 个检查要通过上面的类似代码来完成。
它比较了这两个公式:
=INDEX('集合节点数据'!A2:AQ1048576,MATCH(I3,'集合节点数据'!A2:A230,0),15) =INDEX('集合节点数据'!A2:AQ1048576,26) enter image description here
基于此值
在 CMTS 检查单元 C3 中获得“好”或“坏” enter image description here
解决方法
我找到了解决方法,感谢您的跟踪和快速响应!
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 语句与此一起工作,这很重要。如果有人对压缩此内容有任何建议,请告诉我。
,此代码与您自己的代码基本相同,只是按照您的要求进行了压缩:
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