オフィス・ブール ロゴ
【レスキュー連絡先】
代表 : 末永 尚登
TEL: 070-4087-0025 FAX:095-893-6090

【 VBAパーツ 】

14.セル値を文字列と数字に分離する

これは1つのセルに文字列と数字が混ざって入力されているとき、そのセル値を文字列と数字に分割して、配列に出力するマクロです。
1つのコードが英記号と番号(数字)で構成されていることはよくあることで、それぞれの桁数があらかじめ決まっていたり、並びも固定ならそれほど苦労せずに分離できると思います。
しかし、中には桁数も出現する位置もパターンも何も決まっていなくて、とにかく文字列と番号(数字)を分けなくてはいけないこともあるかもしれません。
そのようなとき、このマクロは役に立ちます。

Public Sub Sample()
'分割マクロの呼び出し

    Dim Letter(5) As String
    Dim Number(5) As String
    Dim i As Long
    
    
    Call LMSplit(Letter, Number)
    
    For i = 0 To UBound(Letter)
        If Letter(i) = "" Then Exit For
        Debug.Print Letter(i)
    Next i
    For i = 0 To UBound(Number)
        If Number(i) = "" Then Exit For
        Debug.Print Number(i)
    Next i
    
End Sub
Public Sub LMSplit(Letter() As String, Number() As String)
'分割マクロ

    Dim i As Long
    Dim j As Long
    Dim k As Long
    Dim myData As String
    Dim xx As String
    Dim LetBuf As String
    Dim NumBuf As String
    Dim bNum As Boolean
    
    
    myData = Range("A1").Value
    For i = 1 To Len(myData)
        xx = Mid(myData, i, 1)
        If xx Like "[0-9]" Then
            '数字
            If Not bNum And i > 1 Then
                Letter(k) = LetBuf
                LetBuf = ""
                k = k + 1
            End If
            NumBuf = NumBuf & xx
            bNum = True
        Else
            '文字
            If bNum Then
                Number(j) = NumBuf
                NumBuf = ""
                j = j + 1
            End If
            LetBuf = LetBuf & xx
            bNum = False
        End If
    Next i
    
    'Last
    If LetBuf <> "" Then
        Letter(k) = LetBuf
    End If
    If NumBuf <> "" Then
        Number(j) = NumBuf
    End If
    
End Sub


 


オフィス・ブール ロゴ 所在地:長崎県長崎市  代表:末永尚登
E-mail: suenaga@officeboole.com   TEL: 070-4087-0025  FAX: 095-893-6090