尝试获取Excel UDF自定义单元格格式以返回“空单元格”或“格式化用户输入”

时间:2016-06-15 15:34:59

标签: excel excel-vba excel-formula udf vba

我试图使用自定义的UDF函数来格式化我拥有的大量excel电话号码,以及我添加到此excel文件中的任何未来电话号码条目。

除此之外:UDF本身只是干净地格式化电话号码,因此无论我是否输入带扩展名的电话,它都会将其格式化为更具可读性。 我在网上发现它,并根据我的需要修改它。这不是我的问题,

我的问题是如何抢占单元格以获取输入的值并将其应用为我的单元格格式,而不为所有尚未返回值的单元格返回#VALUE。

我尝试了以下效果:

  

= IF(ISBLANK,“”,= CustomUDF(cellvalue))

但不要以为这会完成这项工作。

如果你想看我的UDF,这里就是!:

Function cleanPhoneNumber(thisNumber As String) As String
    ' this function aspires to clean any phone number format
    ' to standard format (+9999) 999-999-9999 or 999-999-9999
    ' works with almost all phone number formats stored in text

Dim retNumber As String

For i = 1 To Len(thisNumber)
    If Asc(Mid(thisNumber, i, 1)) >= Asc("0") And Asc(Mid(thisNumber, i, 1)) <= Asc("9") Then
        retNumber = retNumber + Mid(thisNumber, i, 1)
    End If
Next
If Len(retNumber) > 10 Then
    ' format for country code as well
    cleanPhoneNumber = Format(retNumber, "000-000-0000-0000")
Else
    cleanPhoneNumber = Format(retNumber, "000-000-0000")
End If
End Function

3 个答案:

答案 0 :(得分:1)

只需添加以下代码:

if thisNumber = "" Then cleanPhoneNumber = ""

答案 1 :(得分:0)

或者:

=IF(cellvalue="", "", =CustomUDF(cellvalue))

答案 2 :(得分:0)

为什么不用自定义格式000-000-0000-0000格式化没有数字的单元格