2017-02-14 32 views
0

這個Solution幾乎解決了我的問題,但仍然存在一個小問題。如何用逗號連接多列,如果全部爲空然後顯示#value

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的單元格輸出。 我想顯示一個短劃線,如果所有單元格都是空的。 我該如何解決這個問題?

+3

括在一個'IFERROR'聲明你的UDF的解決方案,如:'= IFERROR(myudf(XXXX), 「 - 」)' – PeterT

+1

(如果你沒有'IFERROR()',你可以使用'= If(IsErr(myUDF(xxxx)),「 - 」,「」)') – BruceWayne

回答

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函數。

+0

我想用UDF解決它。 UDF在問題中給出。 –

相關問題