2016-07-22 8 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は、VBEのウィンドウが表示されます
  2. ALT-I ALT-M新鮮なモジュールを開き
  3. ワークブック、UDFを保存する場合は

をしてものを貼り付け、VBEウィンドウを閉じますそれと共に保存されます。 2003年後半以降のExcelを使用している場合は、 を.xlsmとして保存する必要はありません。UDFを削除するには

をXLSX:

  1. 明確上記のようにしてコード
  2. をVBEウィンドウを起動は、ExcelからUDFを使用するにはVBEウィンドウに

を閉じます。

=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

マクロを有効にする必要がありますこれはうまくいく!

関連する問題