【问题标题】:validate that for each cell value in one column only one unique combination of cells in the row exists验证对于一列中的每个单元格值,该行中仅存在一个唯一的单元格组合
【发布时间】:2018-05-04 18:13:28
【问题描述】:

我对 VBA 还很陌生,但是我遇到的大多数搜索都做了相反的事情,而是搜索以确保没有重复出现(例如唯一的通行证组合)。

无论如何,我有一个 Excel 表格,用于跟踪特定区域 ID(B 列)中物品(A 列)的零售价格(C 列),以及我们必须通过每个区域 ID(B 列)过滤的内容) 并确保每个 ID 仅存在一个 ID (B) 和零售价 (C) 的唯一组合。

例如,在下面的数据中,我会查看 B 列,200 并发现它具有 B 和 C 的两个唯一组合(200/2.19 和 200/2.29),这将标记为错误,例如 204是正确的,因为结果是 204/2.19 和 204/2.19)。

A 200 2.19

B 200 2.29

C 202 2.19

D 203 2.19

E 204 2.19

G 204 2.19

我的问题是如何设置过滤器以仅显示有错误的区域 ID(因此在此示例中它将仅显示 A 行和 B 行。

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    如果您通过公式执行此操作,则可以添加一列包含

    =COUNTIFS(B$2:B$10,B2,C$2:C$10,"<>"&C2)
    

    并测试它是否非零。

    在 VBA 中,您可以做同样的事情并将区域 ID 放入一个数组中,其中有多个价格值

    Sub Filter()
    Dim arr As Variant
    Dim LastRow As Long
    With Sheet1
        Cells.AutoFilter
        LastRow = Cells(Rows.Count, "A").End(xlUp).Row
        ReDim arr(LastRow)
        For i = 1 To LastRow
            If Application.WorksheetFunction.CountIfs(Range("b1:b" & LastRow), Cells(i, 2), Range("c1:c" & LastRow), "<>" & Cells(i, 3)) Then
                arr(i) = CStr(Cells(i, 2))
            End If
        Next i
        Range("A1").AutoFilter _
            Field:=2, _
            Criteria1:=arr, _
            Operator:=xlFilterValues
    End With
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2017-03-09
      • 2021-12-16
      • 2019-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      相关资源
      最近更新 更多