查找表中跳过值的行

查找表中跳过值的行

我有一张这样的长桌子:

a 1 2 3
b 2 3 6
c 4   6
d 4 4 7
e 3 3 3
f   3 6
g 2

在这个例子中,我现在需要一个函数,它会返回“c”,因为第二个值缺失。“f”也是如此,因为这里第一个值缺失。“g”不过没问题,数字只需从左到右填写即可。

我尝试了 VLOOKUP,但它在将我的数字格式化为文本时出现问题。有什么想法吗?

答案1

许多可能的解决方案之一:使用类似以下公式填写额外的辅助列 =IF(COUNTBLANK(B1:D1);A1;"")

在结果单元格中,放置 TEXTJOIN() 函数,它将合并所有收到的对象名称 =TEXTJOIN(";";1;H1:H7)

文本连接

另一种快速解决这个问题的方法是编写一个小的宏:

Function getWrongNames(oData As Range) As String
Dim oRow As Range
Dim aRes As Variant
Dim n As Long
    aRes = Array()
    n = UBound(aRes)
    
    For Each oRow In oData.Rows
        If WorksheetFunction.CountBlank(oRow.Offset(0, 1).Resize(1, oData.Columns.Count - 1)) > 0 Then
            n = n + 1
            ReDim Preserve aRes(n)
            aRes(n) = oRow.Resize(1, 1).Text
        End If
    Next oRow
    
    getWrongNames = Join(aRes, ";")
End Function

从所需单元格调用此函数,将表格范围作为参数传递(如=getWrongNames(A1:D7)

答案2

您可以在辅助列中使用以下公式来确定行是否存在问题:

=IF(COUNTIF(OFFSET(B1,0,0,1,COUNT(B1:D1)),"")>0,A1,"")

在此处输入图片描述

如果需要将它们合并到一个单元格中的一个列表中,则可以使用TEXTJOIN

相关内容