我试图比较从A列到Z列的两行,并检查它们是否具有相同的模式。模式的意思是,如果在第一行A列写了什么,那么在第二行A列也一定写了什么。或者两者都可以为空。如果模式不匹配,则执行If语句,因此:A1里写的东西,A2里什么都没写。在代码中,我跳过了循环部分,因为我猜它对这个问题是不必要的。
If Not (A1 = "" And A2 = "") Or Not (Not A1 = "" And Not A2 = "") Then Boolean = False End If
o7jaxewo1#
对你的布尔表达式进行符号化会显示它总是赋值为真,所以这里有一个问题。快速布尔代数课:
NOT(A AND B) = NOT(A) OR NOT(B) NOT(A OR B) = NOT(A) AND NOT(B)
应用到表达式时,为简单起见,将A1 = ""写为A,将A2 = ""写为B:
A1 = ""
A
A2 = ""
B
Not (A And B) Or Not (Not A And Not B) = Not(A) Or Not(B) or Not(Not(A)) or Not(Not(B)) = Not(A) Or Not(B) or A or B = True
你的意思是,我相信,大概是:
Not((A and B) or (Not(A) and Not(B)))
这可能会简化,但这会削弱可读性(您要检查的内容变得不那么明显)。最后,你不应该这样写:
If Expression Boolean = False
而是:
Boolean = Not(Expression)
假设变量赋值不是实际代码的占位符。
qeeaahzv2#
Dim i As Long, result As Boolean For i = 1 To 25 If Cells(1, i).Value = Cells(2, i).Value Then result = True Else result = False Exit For End If Next i
您可以根据自己的需要修改此代码,但是只要一列的第一行和第二行的值不同,result将为false,如果它们相等,则为true。列可以被视为字母或数字。
1u4esq0p3#
我很难弄清楚你想用这行代码做什么,但我有一个尝试,只有当A1为空而A2不为空,或者A1不为空而A2为空时,它才会返回Boolean = False。
A1
A2
Boolean = False
If (A1 = "" and A2 <> "") OR (A1 <> "" and A2 = "") Then Boolean = False End If
kxe2p93d4#
您可以使用类似下面的公式来计算区域中的每个单元格是否为空。
=SUMPRODUCT(--(range<>""))=0
以及一个类似的公式来检查是否每个单元格都不为空:
=SUMPRODUCT(--(range=""))=0
并使用VBA应用公式,或者作为普通Excel公式应用。摘自本页:https://exceljet.net/formula/all-cells-in-range-are-blank
bvn4nwqk5#
不是答案,但我的结论是,您的陈述将始终评估为真
一个稍微不同的方法
Sub x() Dim b As Boolean b=(WorksheetFunction.CountBlank(Range("A1:A2")) <> 1) End Sub
beq87vna6#
另一个关于我所理解的:
if (A1<> "" and A2<>"") or (A1= "" and A2="") then Boolean = False end if
6条答案
按热度按时间o7jaxewo1#
对你的布尔表达式进行符号化会显示它总是赋值为真,所以这里有一个问题。
快速布尔代数课:
应用到表达式时,为简单起见,将
A1 = ""
写为A
,将A2 = ""
写为B
:你的意思是,我相信,大概是:
这可能会简化,但这会削弱可读性(您要检查的内容变得不那么明显)。
最后,你不应该这样写:
而是:
假设变量赋值不是实际代码的占位符。
qeeaahzv2#
您可以根据自己的需要修改此代码,但是只要一列的第一行和第二行的值不同,result将为false,如果它们相等,则为true。
列可以被视为字母或数字。
1u4esq0p3#
我很难弄清楚你想用这行代码做什么,但我有一个尝试,只有当
A1
为空而A2
不为空,或者A1
不为空而A2
为空时,它才会返回Boolean = False
。kxe2p93d4#
您可以使用类似下面的公式来计算区域中的每个单元格是否为空。
以及一个类似的公式来检查是否每个单元格都不为空:
并使用VBA应用公式,或者作为普通Excel公式应用。
摘自本页:https://exceljet.net/formula/all-cells-in-range-are-blank
bvn4nwqk5#
不是答案,但我的结论是,您的陈述将始终评估为真
一个稍微不同的方法
beq87vna6#
另一个关于我所理解的: