数値と文字が混在している文字列から文字列だけを取り出すマクロ

面倒な文字列から文字列だけを取り出す、動画編21回
マクロ講座

エクセルマクロ講座入門編21回

こんどは文字や記号や数値が混在する文字列から文字だけを取り出すマクロ、(2022年度)

数値と文字が混在している文字列から文字列だけを取り出すマクロ、文字や記号や数値が混在する文字列から文字だけを取り出すにはどうするか。

(サンプルファイルは、こちらです。 タイトル、サンプルrn回) 【コンテンツ】
1.複雑な文字列から文字だけ取り出す
2.リメイク、どこを変更するか?
3.対象セルから、選択範囲から取り出す
4.ユーザー定義関数の活用、スマートな使い道

ユーザー定義関数の活用を伝授、こんどは文字や記号や数値が混在する文字列から文字だけを取り出すマクロ、2022年度 エクセルマクロ講座入門編21回

便利なマクロを Function プロシージャにしてもっと活用

  1. 前回作成した 「B 3セルから数値だけを取り出す」というマクロのコードはこちらになります。

    NAMAE1
  2. もし数値ならばのこのコードの部分、こちらを文字ならばというふうに解釈できるように変えます

    NAMAE2
    Public Sub B3セルから文字だけ抽出()
        Dim 文字 As String, i As Long
        Dim Target As String
        Target = Cells(3, 2).Value
        
        For i = 1 To Len(Target)   '文字数分繰り返す
            If IsNumeric(Mid(Target, i, 1)) = False Then   '数値でないならば
                文字 = 文字 & Mid(Target, i, 1)   '変数数値に文字を追加する
            End If
        Next i
        
        Cells(3, 3).Value = 文字
    
    End Sub
    
  3. If IsNumeric(Mid(Target, i, 1)) = False
    としたので、数値でないならば=文字ならばの意味になります。

    NAMAE3
  4. また変数も数値 as string から文字 as string に変更して、数値の部分を文字という変数に置き換えます。

    NAMAE4
  5. マクロを実行した状態です。

    NAMAE5

マクロを使いやすくするために、ユーザー定義関数にする

  1. このコードを元に、 function プロシージャを作成します。

    NAMAE6
  2. 引数に範囲を指定して、次のように書き換えました。

    NAMAE7
  3. Public Function GetCellString(範囲 As Range)
        Dim 文字 As String, i As Long
        Dim Target As String
        Target = 範囲.Value
        For i = 1 To Len(Target)   '文字数分繰り返す
            If IsNumeric(Mid(Target, i, 1)) = False Then   '数値でないならば
                文字 = 文字 & Mid(Target, i, 1)   '変数文字に文字を追加する
            End If
        Next i
        GetCellString = 文字
    End Function
  4. 数値を取り出す関数は、このようなコードです。

    Function Getcellfig(範囲 As String) As Long
      Dim 数値 As Long 'セルに含まれる数値をLong型の変数に
      Dim i As Integer '文字列の1つ1つの順番
        For i = 1 To Len(範囲) '文字数分繰り返す
          If IsNumeric(Mid(範囲, i, 1)) Then '数値ならば
            数値 = 数値 & Mid(範囲, i, 1) '変数数値に数値を追加する
          End If
        Next i
      Getcellfig = 数値
    End Function