我正在编写一个 If+Or 函数,并希望对函数中的不同逻辑使用多个单元格引用,而不是在原始 if+or 函数中编写每个逻辑语句。关于如何解决这个问题的任何想法?希望我在这里不要太不清楚..
例如:而不是写 =If(or(A1=A2,A3=A4),A1,0) 我想在一个单元格列表中写出所有不同的逻辑值,然后只写原始的 if+or 公式像这样: =IF(OR(B1),A1,0) 其中 B1 包含文本“A1=A2,A3=A4”
感谢您对此的任何帮助!
我正在编写一个 If+Or 函数,并希望对函数中的不同逻辑使用多个单元格引用,而不是在原始 if+or 函数中编写每个逻辑语句。关于如何解决这个问题的任何想法?希望我在这里不要太不清楚..
例如:而不是写 =If(or(A1=A2,A3=A4),A1,0) 我想在一个单元格列表中写出所有不同的逻辑值,然后只写原始的 if+or 公式像这样: =IF(OR(B1),A1,0) 其中 B1 包含文本“A1=A2,A3=A4”
感谢您对此的任何帮助!
而不是使用=IF(OR(B1),A1,0)
你必须使用
例如=IFOR(B1,A1)
(我更喜欢""而不是0,抱歉)
或者=IFOR(B1,A1,0)
如果你(更喜欢0而不是""),
或者将声明中的ElseValue更改为0,
那么你可以使用=IFOR(B1,A1)
来获取0。
Function IFOR(IfOrCell As Range, ThenCell As Range, _
Optional ElseValue As Variant = "", _
Optional SplitDelimiter As String = ",") As Variant
'Description:
'Pending...
'Recalculation
Application.Volatile
'Variables
Dim arrIfOr As Variant
Dim iIfOr As Integer
Dim blnIfOr As Boolean
'The Array: The Split
If InStr(IfOrCell.Value2, SplitDelimiter) = 0 Then Exit Function
arrIfOr = Split(IfOrCell.Value2, SplitDelimiter)
'An Additional Split Introducing the Boolean
For iIfOr = LBound(arrIfOr) To UBound(arrIfOr)
If InStr(arrIfOr(iIfOr), "=") <> 0 Then
If Range(Split(arrIfOr(iIfOr), "=")(0)).Value2 _
= Range(Split(arrIfOr(iIfOr), "=")(1)).Value2 Then
blnIfOr = True
Exit For
End If
End If
Next
'Output
If blnIfOr = True Then
IFOR = ThenCell.Value2
Else
IFOR = ElseValue
End If
End Function
您可以使用间接功能。
例如,如果单元格 A6 中的值为 10,则 INDIRECT("A6") = 10。所以基本上您可以在 IF 公式中编写 INDIRECT("A6")=INDIRECT("A7") 而不是 A1=A2 条件. 如果您想在一个单元格中包含“A1=A2”,您可以使用 LEFT 和 RIGHT。
PS:此解决方案适用于 Google 表格,因此如果您使用 Excel,该解决方案可能会有所不同,但这也适用于 Excel。