Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


49055 / 76732 ←次へ | 前へ→

【32600】Re:文字の選別
回答  awu  - 05/12/19(月) 11:17 -

引用なし
パスワード
   関数の使用を希望されているようですが、ワークシート関数では、数式が
長くなって可読性が悪くなったり、ワーク用の列を使用するなど煩雑になる
かと思います。

それで、状況から察しますと、ユーザー定義関数を使う方法が、得策と思います。

ここでは、例として 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
1 hits

【32570】文字の選別 俊之 05/12/18(日) 14:25 質問
【32571】Re:文字の選別 かみちゃん 05/12/18(日) 14:37 発言
【32572】Re:文字の選別 俊之 05/12/18(日) 14:44 質問
【32573】Re:文字の選別 かみちゃん 05/12/18(日) 14:53 発言
【32574】Re:文字の選別 俊之 05/12/18(日) 15:03 質問
【32575】Re:文字の選別 かみちゃん 05/12/18(日) 15:15 発言
【32577】Re:文字の選別 俊之 05/12/18(日) 15:30 質問
【32578】Re:文字の選別 かみちゃん 05/12/18(日) 15:35 発言
【32591】Re:文字の選別 ichinose 05/12/18(日) 20:16 発言
【32592】Re:文字の選別 Kein 05/12/18(日) 20:20 回答
【32600】Re:文字の選別 awu 05/12/19(月) 11:17 回答
【32607】Re:文字の選別 俊之 05/12/19(月) 14:48 お礼

49055 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free