如何检查单元格值是否彼此平衡

时间:2019-03-27 09:08:11

标签: excel vba excel-formula

我正在尝试创建一个公式,以检查彼此相邻的4个单元格是否具有相同的数字(一次为正,一次为负),请参见示例:

Example to recreate Sheet

如果公式显示有加号50和减号50,则必须为右侧的单元格或带有蓝色的单元格着色。

如果一个商店出售大量该产品,并且可能会用光它们请另一家商店补货该产品,则该列表是多个商店的库存。有时他们忘了发送笔记。该列表应该使控件尽可能容易。

如果其中两个单元格的正负值相同,我希望公式将列表右侧的单元格着色为蓝色。

我尝试使用单元格格式设置规则,但无法做到这一点。

另一个例子,因为人们似乎在理解公式应该执行的操作时遇到困难:

我将每个单元格标记为蓝色(如公式所示),而黄色则是原因。

enter image description here

2 个答案:

答案 0 :(得分:3)

您可以使用条件公式,使用以下公式(仅适用于第一行)来做到这一点:

=OR(A1+B1=0;B1+C1=0;C1+D1=0)

此公式检查两个相邻单元格的总和是否等于零,这是另一种表示它们应具有相同值但符号相反的方法。

很显然,您可以考虑更改此公式,例如:
代替:

A1+B1=0

您放置:

AND(A1+B1=0;A1<>0)

当两个值的总和等于零且其中至少一个不为零时,则两个都不为零。

所有这些都在一个公式中得出:

=OR(AND(A1+B1=0;A1<>0);AND(B1+C1=0;B1<>0);AND(C1+D1=0;C1<>0))

在单元格E1的条件格式中使用这样的公式,并将其应用于E列中的所有单元格。

答案 1 :(得分:2)

尝试:

Option Explicit

Sub test()

    Dim Row As Long, Column As Long
    Dim rng As Range

    'Let us assume that we use Sheet1 & columns A to F
    With ThisWorkbook.Worksheets("Sheet1")

        For Row = 2 To 100 ' <- Let us assume that data starts in row 2 and ends in row 100
            Set rng = .Range("B" & Row & ":E" & Row)

            For Column = 2 To 6
                If .Cells(Row, Column).Value <> 0 Then
                    If Application.WorksheetFunction.CountIf(rng, (-1 * .Cells(Row, Column).Value)) > 0 Then
                        .Range("F" & Row).Interior.Color = vbBlue
                        Exit For
                    End If
                End If
            Next Column
        Next Row

    End With

End Sub