我可以在Excel中的数组公式中包含逻辑AND吗?

时间:2019-02-07 07:12:58

标签: excel excel-formula

我有一个如下工作表

ID|AVAILABILITY|PRICE
1 |1           |10,00
1 |1           |15,00
1 |0           |12,00
2 |1           |10,00

在同一工作表中,我在MIN PRICE中执行以下操作,以获取仅可用产品的最低价格

我将其另存为数组公式

ID|MIN PRICE
1 |=MIN(IF(AND(table1[AVAILABILITY]=1;table1[ID]=L2);table1[PRICE]))
2 |

但是我得到0, 有什么解决办法吗?

4 个答案:

答案 0 :(得分:2)

在这种情况下,您不需要AND,只需:

{=MIN(IF(A:A=1;IF(B:B=1;C:C)))}

有关更多信息,请参见here

答案 1 :(得分:1)

您可以执行以下数组公式操作:

enter image description here

答案 2 :(得分:1)

我尝试创建VBA代码。任何更正所有澄清,欢迎您!

Option Explicit

Sub test()

    Dim LastrowA As Long, LastrowE As Long, i As Long, ID As Long, Availability As Long, y As Long
    Dim LowestPrice As Double
    Dim strValues As String
    Dim arr As Variant, element As Variant, IDarr As Variant

    With ThisWorkbook.Worksheets("Sheet1")

        LastrowA = .Cells(.Rows.Count, "A").End(xlUp).Row

        strValues = ""

        For i = 2 To LastrowA

            ID = .Range("A" & i).Value
            Availability = .Range("B" & i).Value

            If Availability > 0 And (InStr(strValues, ID) = 0) Then
                If i = LastrowA Then
                    strValues = strValues & ID
                Else
                    strValues = strValues & ID & "|"
                End If
            End If

        Next i

        arr = Split(strValues, "|")

        For Each element In arr

            IDarr = element
            LowestPrice = 0

            For y = 2 To LastrowA
                If CStr(.Range("A" & y).Value) = IDarr Then
                    If LowestPrice = 0 Then
                        LowestPrice = .Range("C" & y).Value
                    Else:
                        If LowestPrice > .Range("C" & y).Value Then
                            LowestPrice = .Range("C" & y).Value
                        End If
                    End If
                End If
            Next y

            LastrowE = .Cells(.Rows.Count, "E").End(xlUp).Row

            .Range("E" & LastrowE + 1).Value = IDarr
            .Range("F" & LastrowE + 1).Value = LowestPrice

        Next

    End With

End Sub

结果:

enter image description here

答案 3 :(得分:0)

如果您使用 Excel for Office 365,Excel for Office 365 for Mac,Excel 2019或Excel 2019 for Mac ,则可以使用MINIFS function

如果您使用的是旧版Excel,则可以尝试将其替换为。

使用1条条件,您可以使用这些条件。

  • MAXIFS:=MAX(INDEX(range-(criterion<>criterion_range)*1E300,0))
  • MINIFS:=MIN(INDEX(range+(criterion<>criterion_range)*1E300,0))

也就是说,如果不符合条件,则减去/添加一个很大的数字以使范围内的相应值不在考虑范围之内。这些不是数组公式。

对于2个或更多条件,

  • MAXIFS:=MAX(IF(criterion1=criterion1_range,IF(criterion2=criterion2_range,range)))
  • MINIFS:=MIN(IF(criterion1=criterion1_range,IF(criterion2=criterion2_range,range)))

嵌套IF调用的想法是,当不满足第一个条件时,无需检查后续条件。这样执行最少的比较。理想的情况是将最不满足的条件放在第一位,然后再把最不满足的条件放在第二位,依此类推。