2017-10-08 43 views
-1

我有一列有32種不同的電話格式,我需要將它們合併爲一種格式類型:(###)### - ####。目標是將此格式化的數據上傳到現有的數據庫中。我確實發現了一些可以幫助但需要輔助細胞的配方。一種電話格式的VBA代碼

我認爲一些包含小於10位或超過10位數的單元格將被手動修復,但尚未做出決定。所以,現在,我將有一些小於或等於正常電話號碼的小區(10個字符)。

下面是一些原始數據和我需要查看的結果的表格。

Original Data  Result 
*6.5033E+14  (650)329-670061133 
*5.07127E+12  (507)127-2004904 
*4.0809E+11  (408)089-787487 
*9258254882  (925)825-4882 
*6547621    (654)762-1 
*310921278  (310)921-278 
*415 6995743  (415)699-5743 
*209-986-334  (209)986-334 
*661-331-2792  (661)331-2792 
*(831)383-8650 (1103)  (313)838-6501103 
*(415)488-9437 (517)  (415)488-9437517 
*(831)383-9452 (32)  (831)383-945232 
*(408)927-9482  (408)927-9482 
*(000)408-7089  (000)408-7089 
*b  
*Oakland   

是否有可能創建一個宏,所以我不會有使用輔助細胞與各種公式?此外,我確實有沒有數字的單元格,所以我需要一個條件來忽略這些單元格。

謝謝

邁克爾

+0

請解釋你如何讓**(650)329-670061133 ** **從+ 6.5033E 14 **? –

+0

我使用concatenate函數以這種方式格式化單元格。我試圖找到一種方法來創建一個宏,所以我可以避免使用幫助列。我目前有一個嵌套的替代函數,去除括號和連字符。正如你所看到的,在某些情況下,電話號碼上有一個分機號碼(當然這是一個錯誤)。 – Bearcub

回答

1

使用此UDF。

Function TelFormat(s As String) 
    Dim sRp As String, n As Integer 
    s = Replace(s, "(", "") 
    s = Replace(s, ")", "") 
    s = Replace(s, "-", "") 
    s = Replace(s, " ", "") 
    n = Len(s) - 6 
    sRp = WorksheetFunction.Rept("#", n) 
    TelFormat = Format(s, "(000)-###-" & sRp) 
End Function 

enter image description here