|
関数の使用を希望されているようですが、ワークシート関数では、数式が
長くなって可読性が悪くなったり、ワーク用の列を使用するなど煩雑になる
かと思います。
それで、状況から察しますと、ユーザー定義関数を使う方法が、得策と思います。
ここでは、例として StrSplit関数を作成することにします。
使い方は、=StrSplit(文字列 , 1または2)
◎ 第2引数に「1」を指定した場合の戻り値:
・文字列の中に数字が存在する場合、それより左の文字列
・数字が含まれていない場合は、その文字列
・数字から始まる場合は、長さ0の文字列
◎ 第2引数に「2」を指定した場合の戻り値:
・文字列に数字が存在すると、最初の数字を含めその右の文字列
・数字が無い場合は、長さ0の文字列
・数字から始まる場合は、その文字列
使用例:セルA1に "日本2005" の文字列が入力されているとして
=StrSplit(A1,1) で、"日本" が表示されます。
=StrSplit(A1,2) で、"2005" が表示されます。
普通の関数のように式をコピーすることが出来ます。
これで宜しかったら、次の手順で操作してみてください。
1.Alt + F11 で VBE(Visual Basic Editor)を開きます。
2.VBE のメニューから[挿入] -->[標準モジュール] を指定します。
3.コードウィンドウに下記コード(19行)をコピーして貼り付けます。
4.Alt + Q (または、右上隅の×)でウィンドウを閉じ、シートに戻ります。
5.メニューから[ツール]-->[マクロ]-->[セキュリティ]で「セキュリティ
レベル」を 「中」にして[OK]します。
6.これで、ブック内のシートで StrSplit関数が使用できます。
Function StrSplit(WStr As String, N As Integer) As String
Dim L As Integer
Dim Pog As Integer
Application.Volatile
For L = 1 To Len(WStr)
If IsNumeric(Mid(WStr, L, 1)) Then Exit For
Next L
If N = 1 Then
If L = 1 Then
StrSplit = ""
Else
StrSplit = Left(WStr, L - 1)
End If
ElseIf N = 2 Then
StrSplit = Mid(WStr, L)
Else
StrSplit = ""
End If
End Function
|
|