试图让 Excel UDF 自定义单元格格式不返回任何内容“(空单元格)”或“格式化的用户输入”

Posted

技术标签:

【中文标题】试图让 Excel UDF 自定义单元格格式不返回任何内容“(空单元格)”或“格式化的用户输入”【英文标题】:Trying to get Excel UDF custom cell formatting to return either nothing '(empty cell)' or 'formatted user input' 【发布时间】:2016-06-15 15:34:59 【问题描述】:

我正在尝试使用自定义的 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

【问题讨论】:

【参考方案1】:

只需添加以下代码:

if thisNumber = "" Then cleanPhoneNumber = ""

【讨论】:

【参考方案2】:

或者:

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

【讨论】:

【参考方案3】:

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

【讨论】:

以上是关于试图让 Excel UDF 自定义单元格格式不返回任何内容“(空单元格)”或“格式化的用户输入”的主要内容,如果未能解决你的问题,请参考以下文章

Excel VBA:不满足条件时如何让UDF返回0

Excel表格自定义数字格式如何设置

通过xlwings UDF将数据框返回到excel

Excel公式更改另一个单元格的值?

EXCEl表格里如何输入自定义格式的日期

请问怎么在excel单元格格式添加自定义