首页 > 解决方案 > 匹配excel中的值并突出显示

问题描述

更新说明:

我使用包含借方和贷方的大量数据列表。一些借方和贷方需要匹配并突出显示(以便将它们从列表中清除)。

我想要一个宏来帮助我完成这项任务,即从头开始并逐行工作(我需要能够手动查看列表以确保它是正确的,因此必须从头开始工作完成)。以单元格 N1 为例: • 如果 N1 为黄色,则不执行任何操作 • 如果 N1 没有颜色格式,则求和 N1 + N2。如果 N1 N2 = 0,则以黄色突出显示。• 如果N1 + N2 不等于0,什么也不做,继续前进。• 如果N2 是黄色,什么也不做 • 如果N2 没有颜色格式,求和N2 + N3。如果 N2 + N3 = 0,则以黄色突出显示。• 等等。• 我还希望这个宏在数据集完成时停止,因为所有空行都将= 零。不确定这将如何工作?

我准备了一个非常简单的示例(附加),其中包含三个选项卡: 1. 样本数据集 2. 我填充绝对值的数据集,从最小到最大排序 3. 所需的最终结果。如您所见,有几个实例没有偏移项,宏需要跳过。

再次感谢你的帮助!样本

标签: vbaexcel

解决方案


如果您希望它匹配任意两个数字,无论它们在列表中的位置如何,但每组在单个列中仅匹配一次 - 即完全对账,您将需要这样的东西:

Sub test()
    clr = vbYellow
    Dim ws As Worksheet
    Set ws = Sheets("Sheet1")

    With ws
        lastrow = .Cells(.Rows.Count, 14).End(xlUp).Row
        For i = 1 To lastrow - 1
            For j = i + 1 To lastrow
                If .Cells(i, 14).Value = -1 * .Cells(j, 14).Value And .Cells(i, 14).Interior.Color <> clr And .Cells(j, 14).Interior.Color <> clr Then
                    .Cells(i, 14).Interior.Color = clr
                    .Cells(j, 14).Interior.Color = clr
                    Exit For 'include this if the list is long to speed things up
                End If
            Next
        Next
    End With
End Sub

推荐阅读