Excel2000 VBA 文字列操作 /(スラッシュ)で区切られた文字列を分解 [Excel2000 VBA 文字列操作]
Excel2000 VBA 文字列操作 /(スラッシュ)で区切られた文字列を分解
goo天気から取得した最高気温、最低気温の文字列"34 / 28 "を分解する。
Sub 最高最低気温分解()
'goo天気の最低気温、最高気温の文字列を分解する
'
Dim temperature As String
Dim strA, strB As Variant
Dim i, temperatureHL(1) As Integer
'文字設定
temperature = "34 / 28 " '34最高気温 28最低気温
'spaceを削除
temperature = Replace(temperature, " ", "") 'spaceをnullに置換
'区切り文字 / で展開
strA = Split(temperature, "/")
For Each strB In strA
temperatureHL(i) = CInt(strB) 'temperatureHL(0)に34 temperatureHL(1)に28
i = i + 1 'Cint()で文字を数値(integer)に変換
Next
'MsgBoxに表示
MsgBox temperatureHL(0) & vbCrLf + vbCrLf & temperatureHL(1)
End Sub
Excel2000 VBA 文字列操作 ファイル名を名前と拡張子に分解 [Excel2000 VBA 文字列操作]
Excel2000 VBA ファイル名を名前と拡張子に分解
ファイル名に使えない文字 \ / : * ? " < > |(shiftキー+\)
ファイル名は 名前.拡張子の形でドット(ピリオド)はファイル名に使えるので、単純にピリオドで区切れない。
VBEにはInStrRev関数があり調べる文字を右から検索して、最初に見つかった文字が左から何番目にあるかを数値で返す。
InStrRev関数を使えばピリオドの位置を調べピリオド以降が拡張子になるわけで、ファイル名を名前と拡張子に分解するマクロ作ってみた。
Sub ファイル名を名前と拡張子に分解()
Dim fileName, fileName2, 拡張子 As String
fileName = "Test.123ABC.xls"
'InStrRev 右側から検索して見つかった左からの位置
fileName2 = Left(fileName, InStrRev(fileName, ".") - 1)
'Len(ファイル名)はファイル名の文字数
拡張子 = Right(fileName, Len(fileName) - InStrRev(fileName, "."))
MsgBox fileName2 & " " & 拡張子
End Sub
Excel2000 VBA 文字列操作 メモ1 [Excel2000 VBA 文字列操作]
文字列の最後の一文字を削除する
文字数=Len(文字列)
new文字列=left(文字列,文字数-1) 2文字なら2
カンマ区切り文字を展開する
利用方法 山田一郎を山田と一郎に分けるには、山田(手動でカンマを入れる)一郎 でマクロを実行すると、山田と一郎に展開できる
Sub カンマ区切り文字列を展開()
'
'選択したカンマ区切り文字を右側に展開する
'
Dim 文字列 As Variant
Dim 文字 As Variant
Dim i As Integer
Dim cell_row As Integer
Dim cell_column As Integer
'アクティブセルの行列を調べる
cell_row = ActiveCell.Row
cell_column = ActiveCell.Column
'Split関数 for each で展開
文字列 = Split(ActiveCell, ",")
For Each 文字 In 文字列
Cells(cell_row, cell_column + i) = 文字
i = i + 1
Next
End Sub
Split(文字列,区切り文字)
For Each 変数(要素) In グループ(配列) ・・・・ Next
文字列の特定の文字を置き換える(置換)
- post_no = Replace(post_no, "-", "") 「-」を「Null ""」にする
- 例 123-4567 → 1234567
文字列から1文字づつ取り出す
- mojiretu(count)=mid(mojiretu(0),1,1)
- 例
- mijiretu(0)=abcd
- for count=1 to 4
- mojiretu(count)=mid(mojiretu(0),count,1)
- next count
- 結果 mijiretu(0)=abcd mojiretu(1)=a mojiretu(2)=b mojiretu(3)=c mojiretu(4)=d
文字数を調べる
- 文字数=Len(文字列)
- Len("あいうえお")は 5(文字)
文字列検索 InStr(検索文字列,検索文字)
- InStr("ABCDEFDD","D") は4 最初に見つかった位置
文字列の左から2文字取り出す
- 左2文字=left(文字列,2)
- Left("あいうえお",2) は 「あい」
文字列の右から2文字取り出す
- 右2文字=right(文字列,2)
- Right("あいうえお",2) は 「えお」
文字列を左から検索して最初に見つかった位置を調べる
- tel_no = InStr("012-34-5678","-") -の位置を調べる
- tel_no は 4
- InStr(検索開始位置、検索文字列、検索文字(列))