[Exce関数l]文字列の中から数字のみを抽出するEXTRUCTNカスタムワークシート関数

2022年3月21日

概要

文字列の中から数字だけを抽出するEXTRUCTNカスタムワークシート関数を作成しました。

ワークシート関数だけで(VBAを使用せずに)同じことをしたい場合はコチラの記事を参照して下さい。

数字ではなく任意の文字を抽出する場合はEXTRUCTカスタムワークシート関数を、数字だけを削除する場合はREMOVENカスタムワークシート関数をご使用ください。

EXTRUCTN関数の動作例は下記の通りです。

機能

文字列の中からアラビア数字のみを抽出します。半角数字のみを抽出するか、半角と全角の両方を抽出するかを指定できます。

構文

EXTRUCTN(文字列 , [全角を抽出] )

引数説明引数の指定既定値
文字列抽出対象の文字列を指定します。必須(無し)
全角を抽出全角数字も抽出する場合はTRUE、抽出しない場合はFALSEを指定します。省略した場合はTRUEが指定されます。省略可能TRUE

コード

下記のコードを全てコピーし、標準モジュール等に貼り付けて下さい。下記のコード表示欄の右上に「Copy」ボタンがありますのでご使用下さい。なお、標準モジュールが何だか分からない方は、 Excelのカスタムワークシート関数を使用する方法 を参照して下さい。
' [Exce関数l]文字列の中から数字のみを抽出するEXTRUCTNカスタムワークシート関数 
' Copyright (c) 2020-2022  黒箱 
' This software is released under the MIT License;. 
' このソフトウェアはMITライセンスの下でリリースされています。 

'* @fn Public Function EXTRUCTN(ByVal Text As String, Optional ByVal ExtructWide As Boolean = True) As Variant
'* @brief 文字列の中からアラビア数字のみを抽出します。
'* @param[in] Text 抽出対象の文字列を指定します。
'* @param[in] ExtructWide 全角数字も抽出する場合はTRUE、抽出しない場合はFALSEを指定します。省略した場合はTRUEが指定されます。
'* @return Variant 抽出した文字列を返します。
'*
Public Function EXTRUCTN(ByVal Text As String, Optional ByVal ExtructWide As Boolean = True) As Variant

    '引数Textが空白のみなら処理なし
    If (Trim(Text) = "") Then Exit Function

    '変換文字のパターン設定
    Dim Pattern As String   '変換対象文字のパターン(Like右辺値)

    If (ExtructWide) Then
        Pattern = "[0-90-9]" '#の明確な仕様が不明であったため保険
    Else
        Pattern = "[0-9]"
    End If

    '抽出
    Dim i As Long
    Dim Char As String      '引数Textの文字を1文字ずつ抽出する際の格納先
    Dim Result As String    '戻り値

    For i = 1 To Len(Text)
        Char = Mid(Text, i, 1)
        If (Char Like Pattern) Then Result = Result & Char
    Next i
    
    EXTRUCTN = Result

End Function

プログラムの利用について

本プログラムのライセンスは「The MIT License」を適用しています。

本プログラムは無償で利用できますが、本プログラム内の著作権表示及びライセンス表示は削除せずに表示しておいて下さい。

必須ではございませんが、本ホームページのプログラムを書籍またはホームページ等で一般公開したい方は、お問い合わせフォームよりご連絡頂けると幸いです。

スポンサーリンク