如果所有列都为空,则如何使用逗号连接多个列,然后显示#value

时间:2017-02-14 17:32:21

标签: excel excel-vba vba

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。 如果所有单元格都是空的,我想显示破折号。 我该如何解决这个问题?

1 个答案:

答案 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函数。