2016-07-22 70 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

宏必须启用这工作!