查找没有第二个值的值

时间:2018-09-28 16:55:51

标签: excel vba

我正在寻找A列的列表,其中B列中没有特定值以及B列中没有其他任何值。

示例:

COLUMN A        COLUMN B
LEFT            ALPHA
LEFT            BETA
LEFT            CHARLIE
RIGHT           BETA
RIGHT           CHARLIE
UP              ALPHA
UP              CHARLIE
DOWN            ALPHA

我想知道A列中有一个Alpha的所有A列,以及A列中至少有一个其他值。

  • 左侧有一个Alpha,另一个值不是Alpha,因此将包含在内。
  • Right没有被排除的Alpha。
  • Up具有一个Alpha和另一个非Alpha值,因此将其包括在内。
  • Down具有Alpha,但没有其他值,因此被排除。

这可以在另一个工作表上填充一个最佳列表。我认为我必须走VBA路线,但是我不确定从哪里开始。

2 个答案:

答案 0 :(得分:3)

这使用了COUNTIFS。如有必要,调整工作表名称以适合您的设置。我应该补充一点,您需要为数据添加一个标题行(对于AF),因此如有必要,请插入一行。

Sub x()

Dim r As Range, wf As WorksheetFunction, r1 As Range

Set wf = WorksheetFunction

Set r1 = Sheet1.Range("A1").CurrentRegion
r1.Columns(1).AdvancedFilter xlFilterCopy, , Sheet2.Range("A1"), unique:=True

With Sheet2
    For Each r In .Range("A2", .Range("A" & Rows.Count).End(xlUp))
        If wf.CountIfs(r1.Columns(1), r, r1.Columns(2), "ALPHA") > 0 And _
           wf.CountIfs(r1.Columns(1), r, r1.Columns(2), "<>ALPHA") > 0 Then
            r.Offset(, 1) = "Yes"
        Else
            r.Offset(, 1) = "No"
        End If
    Next r
End With

End Sub

答案 1 :(得分:2)

数据和结果:

enter image description here enter image description here

结果A1中的公式:

=IFERROR(INDEX(Data!A$1:A$8,SMALL(IF(
 MATCH(Data!A$1:A$8,Data!A$1:A$8,0)=ROW(Data!A$1:A$8),ROW(Data!A$1:A$8)),ROW())),"")

这与excel版本提供的删除重复项相同。请按 Ctrl + Shift + Enter 完成公式。

结果B1中的公式:

=AND(SUMPRODUCT(--(Data!A$1:A$8&Data!B$1:B$8=A1&"ALPHA"))>0,
 COUNTIF(Data!A$1:A$8,A1)>1)

只是一些简单的标准判断。我们建立A列和B列的组合列表。即LEFTALPHA, LEFTBETA, LEFTCHARLIE, RIGHTBETA....,以便我们搜索LEFTALPHA是否存在。第二个条件是找出目标是单个还是多个。