文字列操作関数【Access/Excel】

関数【Access_Excel】 05.関数
関数【Access_Excel】

よく使う文字列操作関数を紹介します。

Format関数

元になる値を指定された書式に変換します。
【書式】
Format(元の値,書式)
引数「書式」に指定する主な記号は下表の通りです。

区分記号説明
数字記号#
0
,
.
%
1桁の数字を返す。#で指定した桁に数値が存在しない場合は0が入らない。
1桁の数字を返す。0で指定した桁に数値が存在しない場合は0が入る。
1000単位の区切り記号を返す。
#または0と組み合わせて小数点の位置を指定する。
数値を100倍して%記号を付けて返す。
yy・yyyy
m・mm
d・dd
/
aaa・aaaa
ddd・dddd
ww
y
q
g・gg・ggg
e・ee
西暦を返す。2桁・4桁。
月の数値を返す。1桁の場合、先頭に0が付かない・先頭に0が付く。
日の数値を返す。1桁の場合、先頭に0が付かない・先頭に0が付く。
日付の区切りを指定する。
日本語の曜日を返す。1文字・3文字。
英語の曜日を返す。先頭3文字・すべて。
1年のうちで何週目にあたるかを表す数値を返す。
1年のうちで何日目にあたるかを表す数値を返す。
1年のうちで何番目の四半期に当たるかを表す数値を返す。
年号を返す。アルファベット・1文字・全部。
和暦を返す。1桁の場合、先頭に0が付かない・先頭に0が付く。
時間記号h・hh
n・nn
s・ss
:
時の数値を返す。1桁の場合、先頭に0が付かない・先頭に0が付く。
分の数値を返す。1桁の場合、先頭に0が付かない・先頭に0が付く。
秒の数値を返す。1桁の場合、先頭に0が付かない・先頭に0が付く。
時刻の区切り位置を指定する。
文字記号&
@
1つの文字を返す。&で指定した位置に文字が存在しない場合スペースが入らない。
1つの文字を返す。@で指定した位置に文字が存在しない場合スペースが入る。
Sub Format_1()
    Dim MyDate As Date
    Dim MyNum As Currency
    
    MyDate = #1/1/2001#
    MyNum = 1234.567
    
    MsgBox Format(MyDate, "Long Date")  'OSの長い日付形式の書式に従って日付を返します。例)2001年1月1日
    MsgBox Format(MyDate, "yyyy/mm/dd") '2001/01/01 を返します
    MsgBox Format(MyNum, "Currency")    'OSの地域設定に従って金額を返します。例)\1,235
    MsgBox Format(MyNum, "#,###.###")   '1,234.567 を返します
       
End Sub

StrConv関数

文字列を指定した形式に変化します。
【書式】
StrConv(文字列,文字種)
引数[文字種]に指定する主な定数は、下表のとおりです。

定数説明
vbUpperCase文字列を大文字に変換します。
vbLowerCase文字列を小文字に
vbProperCase文字列内のすべての単語の最初の文字を大文字に変換します。
vbWide文字列内の狭い (1 バイト) 文字をワイド (2 バイト) 文字に変換します。
vbNarrow文字列内のワイド (2 バイト) 文字を狭い (1 バイト) 文字に変換します。
vbKatakana文字列内のカタカナ文字をひらがな文字に変換します。
vbHiragana文字列内のひらがな文字をカタカナ文字に変換します
vbUnicodeシステムの既定のコード ページ を使用 して文字列を Unicode に変換します。
vbFromUnicode文字列を Unicode からシステムの既定のコード ページに変換します。
Sub StrConv_1()
    MsgBox StrConv("abc", vbUpperCase)  'ABC を返します。
    MsgBox StrConv("abc", vbProperCase) 'Abc を返します。
    MsgBox StrConv("あいうえお", vbKatakana)    'アイウエオ を返します。
    MsgBox StrConv("アイウエオ", vbHiragana)    'あいうえお を返します。
End Sub

Left関数/Right関数/Mid関数

Left関数は文字列の左から指定した数の文字列を、Right関数は文字列の右から指定した数の文字列を、Mid関数は、文字列の指定した位置から指定した数の文字列をそれぞれ返します。
【書式】
Left(文字列,文字数)
Right(文字列,文字数)
Mid(文字列,開始位置,文字数)

Sub Left_Right_Mid()
    MsgBox Left("abcdef", 3)    'abc を返します。
    MsgBox Right("abcdef", 3)   'def を返します。
    MsgBox Mid("abcdef", 3, 3)  'cde を返します。
End Sub

Replace関数

検索文字列に指定した文字列を置換文字列に置き換えた結果を返します。
【書式】
Replace(文字列,検索文字列,置換文字列,[開始位置],[開始回数],[置換回数],[比較方法])

引数定数説明
文字列元の値となる文字列を指定する。
検索文字列検索する文字列を指定する。
置換文字列置換する文字列を指定する。
開始位置(省略可)開始する位置。省略すると先頭から検索する。
開始回数(省略可)置換する回数。省略するとすべて置き換える。
置換回数(省略可)置換する回数。省略するとすべて置き換える。
比較方法(省略可)vbUseCompareOption(規定)
vbBinaryCompare
vbTextCompare
vbDatabaseCompare
OptionCompareステートメントの設定で比較する。
バイナリモードで比較する。
テキストモードで比較する。
データベースに格納されている設定で比較する。
※OptionCompareステートメントはモジュールの宣言セクションに次のいずれかを記述します。「Option Compare Binary」「Option Compare Text」「Option Compare Database」。
Sub Replace_1()
    MsgBox Replace("1234567", "345", "***")     '12***67 を返します。
    MsgBox Replace("1234567", "345", "***", 3, 1)   '***67 を返します。
End Sub

InStr関数

文字列の中から検索文字列を検索し見つかった位置を返します。
【書式】
InStr([開始位置],文字列,検索文字列,[比較方法])

引数説明
開始位置(省略可)開始する位置。省略すると先頭から検索する。
文字列元となる文字列を指定する。
検索文字列検索する文字列を指定する。
比較方法(省略可)※Replace関数と同じ。
  vbUseCompareOption(規定)
  vbBinaryCompare
  vbTextCompare
  vbDatabaseCompare
Sub InStr_1()
    MsgBox InStr("abcdef", "bc")    '2 を返します。
    MsgBox InStr(2, "abcabc", "ab") '4 を返します。
End Sub

LCase関数/UCase関数

LCase関数は文字列のアルファベットを小文字にします。UCase関数は大文字にします。
【書式】
LCase(文字列)
UCase(文字列)

Sub LCase_UCase()
    MsgBox LCase("Windows") 'windows を返します。
    MsgBox UCase("Windows") 'WINDOWS を返します。
End Sub

Len関数/LenB関数

Len関数は文字列の文字数を返します。LenB関数は文字列のバイト数を返します。
【書式】
Len(文字列)
LenB(文字列)

Sub Len_LenB()
    MsgBox Len("12345")     '5 を返します。
    MsgBox LenB("12345")    '10 を返します。
    MsgBox Len("123あいう")     '6 を返します。
    MsgBox LenB("123あいう")    '12 を返します。
    MsgBox LenB(StrConv("123あいう", vbFromUnicode))    '※9 を返します。
End Sub

半角文字を1バイト、全角文字を2バイトと扱う場合はStrConv関数を利用します。

Trim関数/LTrim関数/RTrim関数

Trim関数は文字列の両側の半角スペースを削除します。LTrim関数は文字列の左側の半角スペースを削除します。RTrimは文字列の右側の半角スペースを削除します。
【書式】
Trim(文字列)
LTrim(文字列)
RTrim(文字列)

Sub Trim_1()
    MsgBox "*" & Trim("  a b c  ") & "*"      '*a b c* を返します。
    MsgBox "*" & LTrim("  a b c  ") & "*"     '*a b c  * を返します。
    MsgBox "*" & RTrim("  a b c  ") & "*"     '*  a b c* を返します。
End Sub

文字列中の半角スペースを削除したい場合はReplace関数を使い” “(半角スペース)を””(空文字)に置換します。

Stirng関数/Space関数

String関数は指定し数の文字を返します。Space関数は指定した数の半角スペースを返します。
【書式】
String(文字数,文字)
Space(文字数)

Sub String_Space()
    MsgBox "*" & String(3, "a") & "*"       'aaa を返します。
    MsgBox "*" & String(3, "abc") & "*"     'aaa を返します。※最初のaだけが対象。
    MsgBox "*" & Space(3) & "*"             '*   * を返します。
End Sub

Split関数/Join関数

Split関数は文字列を区切って1次配列を作ります。Join関数は要素が文字列の1次配列を結合します。
【書式】
Split(文字列,[区切り文字],[区切る数],[比較方法])
Join(1次配列,[区切り文字])

関数引数説明
Split文字列元の値となる文字列を指定する。
区切り文字(省略可)区切り文字。省略するとスペースが区切り文字になる。
区切る数(省略可)配列に区切る数。省略すると要素数は無制限になる。
比較方法(省略可)※Relplace関数と同じ
Join1次配列要素が文字列の1次配列を指定する。
区切り文字(省略可)区切り文字。省略するとスペースが区切り文字になる。
Sub Split_Join()
    Dim BeforeString As Variant
    Dim AfterString As String
    Dim i As Long
    
    BeforeString = Split("12,34,56", ",")
    
    For i = 0 To 2
        MsgBox i + 1 & "番目の要素は" & BeforeString(i)
    Next
    
  
    AfterString = Join(BeforeString, "/")
    
    MsgBox AfterString  '12/34/56 を返します
    
End Sub

次は日付操作関数【Access/Excel】です。

コメント

タイトルとURLをコピーしました