这Solution几乎解决了我的问题,但仍然存在一个小问题。
Function MyConcat(ConcatArea As Range) As String
For Each x In ConcatArea: xx = IIf(x = "", xx & "", xx & x & "-"): Next
MyConcat = Left(xx, Len(xx) - 1)
End Function
如果所有选定的单元格值都为空,则在excel工作表中单元格输出显示#value。 如果所有单元格都是空的,我想显示破折号。 我该如何解决这个问题?
答案 0 :(得分:2)
您可以在案例中使用两种修复方法:
第一个修复是修改UDF以在返回之前检测错误条件,然后确保UDF返回字符串"-"
:
Function MyConcat(ConcatArea As Range) As String
For Each x In ConcatArea: xx = IIf(x = "", xx & "", xx & x & "-"): Next
If Len(xx) = 0 Then
MyConcat = "-"
Else
MyConcat = Left(xx, Len(xx) - 1)
End If
End Function
第二个修复工作在工作表单元格中,方法是在错误检查公式中包含对UDF的调用。这是一个例子:
=IFERROR(myudf(xxxx), "-")
编辑:为您的OP代码添加了错误检查。我还建议将单行
If
语句分成多行。作为一般做法,它使您的代码更容易调试。单步执行UDF会向我显示您收到的#Value
错误是因为您将Length
-1
参数传递给Left
函数。