我有一张这样的长桌子:
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)
)