VBA 中的 IIF 函数
IIF function in VBA
我正在调试一些 VBA 代码,我有一个 IIF 函数,但我不明白它在做什么。它是 IIF(constant And i, "TRUE", "FALSE")
,我在这里获取从 0
到 n
的值。
我知道这个函数相当于Excel中的IF
。但在这种情况下,条件是什么?表达式编号和编号是什么意思?我 运行 这个样本:
Sub Sample()
For i = 0 To 20
Cells(i + 1, 1) = i
Cells(i + 1, 2) = 4 And i
Next i
End Sub
我得到以下值:
您的 And
运算符进行了比较明智的比较:
result = expression1 And expression2
当应用于数值时,And
运算符对两个数值表达式中相同位置的位进行按位比较,并根据以下table设置结果中的相应位。
If bit in expression1 is
And bit in expression2 is
The bit in result is
1
1
1
1
0
0
0
1
0
0
0
0
由于逻辑运算符和按位运算符的优先级低于其他算术运算符和关系运算符,因此任何按位运算符都应括在括号中以确保结果准确。
因此将 4
转换为二进制,结果是 100
。我在下面的 3ʳᵈ 列中完成了该操作,我将 1ˢᵗ 列的所有数字转换为二进制。其他 2 列只是用零填充以提高可见性:
因此,如果同一位置的两个位都是 1
,那么观察上面的 table,您只会得到 1
,否则您会得到 0
。这意味着如果 4 and i
由于按位比较(见红色位)在右边的 3ʳᵈ 位中有一个 1
,你总是得到一个 4
结果。
表达式 4 And i
将执行算术运算 AND-operation。示例:
6: 0 0 0 0 0 1 1 0
4: 0 0 0 0 0 1 0 0
Result: 0 0 0 0 0 1 0 0
11: 0 0 0 0 1 0 1 1
4: 0 0 0 0 0 1 0 0
Result: 0 0 0 0 0 0 0 0
所以 6 AND 4 是 4 而 11 AND 4 是 0。
现在 0 被视为 False
而不是 0 的所有内容都被视为 True
。在 IIF-statement 中使用,设置了第 3 位(从右数)的所有数字将执行 IIF 的 True
部分,所有其他的 False
.
我正在调试一些 VBA 代码,我有一个 IIF 函数,但我不明白它在做什么。它是 IIF(constant And i, "TRUE", "FALSE")
,我在这里获取从 0
到 n
的值。
我知道这个函数相当于Excel中的IF
。但在这种情况下,条件是什么?表达式编号和编号是什么意思?我 运行 这个样本:
Sub Sample()
For i = 0 To 20
Cells(i + 1, 1) = i
Cells(i + 1, 2) = 4 And i
Next i
End Sub
我得到以下值:
您的 And
运算符进行了比较明智的比较:
result = expression1 And expression2
当应用于数值时,And
运算符对两个数值表达式中相同位置的位进行按位比较,并根据以下table设置结果中的相应位。
If bit in expression1 is | And bit in expression2 is | The bit in result is |
---|---|---|
1 | 1 | 1 |
1 | 0 | 0 |
0 | 1 | 0 |
0 | 0 | 0 |
由于逻辑运算符和按位运算符的优先级低于其他算术运算符和关系运算符,因此任何按位运算符都应括在括号中以确保结果准确。
因此将 4
转换为二进制,结果是 100
。我在下面的 3ʳᵈ 列中完成了该操作,我将 1ˢᵗ 列的所有数字转换为二进制。其他 2 列只是用零填充以提高可见性:
因此,如果同一位置的两个位都是 1
,那么观察上面的 table,您只会得到 1
,否则您会得到 0
。这意味着如果 4 and i
由于按位比较(见红色位)在右边的 3ʳᵈ 位中有一个 1
,你总是得到一个 4
结果。
表达式 4 And i
将执行算术运算 AND-operation。示例:
6: 0 0 0 0 0 1 1 0
4: 0 0 0 0 0 1 0 0
Result: 0 0 0 0 0 1 0 0
11: 0 0 0 0 1 0 1 1
4: 0 0 0 0 0 1 0 0
Result: 0 0 0 0 0 0 0 0
所以 6 AND 4 是 4 而 11 AND 4 是 0。
现在 0 被视为 False
而不是 0 的所有内容都被视为 True
。在 IIF-statement 中使用,设置了第 3 位(从右数)的所有数字将执行 IIF 的 True
部分,所有其他的 False
.