2016-07-22 55 views
0

如果字符串中存在冒號,我有一個返回數字的IF語句。有時候字符串不包含冒號符號。我正在尋找一個else語句,如果字符串中沒有冒號,將選擇唯一的數字「45061」。A =當字符串有冒號時有效,但如果字符串沒有冒號結腸。如果包含並且如果不包含冒號,請選擇編號

A.

String/Text = OM_Account_Master_Slave~Account CP~3712011:Shared-001 

B.

String/Text = OM_Account_Master_Slave~Account CP~45061Shared-001 

A.

if(contains,":",Substring(Abbrev(),1,Subtract(Length(Abbrev()),11))) 

結果= 3712011:共享-001

B.

if(contains,":",Substring(Abbrev(),1,Subtract(Length(Abbrev()),11))) 
else 
+0

這與excel-vba有什麼關係?無論哪種方式,您是否可以避免使用「〜」的實例或對「〜」字符串進行反向搜索,然後存儲該號碼直至遇到字母? – tjb1

回答

1

考慮以下用戶定義函數:

Public Function GetNumber(r As Range) As Variant 
    Dim v As String, capture As Boolean 
    Dim i As Long, t As String 

    v = r.Value 
    GetNumber = "" 
    If v = "" Then Exit Function 
    t = "" 
    capture = False 

    For i = 1 To Len(v) 
     m = Mid(v, i, 1) 
     If IsNumeric(m) Then 
      t = t & m 
      capture = True 
     Else 
      If capture Then Exit For 
     End If 
    Next i 

    If Len(t) > 0 Then 
     GetNumber = CLng(t) 
    End If 
End Function 

enter image description here

用戶定義函數(UDF)的很容易安裝和使用:

  1. ALT-F11帶來了
  2. ALT-I ALT + M打開一個新的模塊
  3. 粘貼的東西並關閉VBE窗口

如果您保存工作簿時,UDF的VBE窗口將與它一起保存。 如果您在2003年以後使用的是Excel版本,則必須將該文件保存爲.xlsm而非 。XLSX

要刪除UDF:

  1. 彈出VBE窗口如上
  2. 清晰的代碼進行
  3. 關閉VBE窗口

從Excel使用UDF:

=GetNumber(A1) 

要學習m對一般的宏礦石,見:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

以及有關UDF的細節,請參見:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

宏必須啓用這工作!