左からではなくて右側から或る文字列を検索してその文字から右側のデータを取り出す方法です。拡張子を取り出すときに役立つのではないでしょうか?もっといい方法があるのでしょうか?
【事例】
Sub moji()
mojimoji = "test.txt"
Cells(1, 2) = Len(mojimoji)
mojisu = Len(mojimoji)
Cells(1, 3).Select
Selection.ClearContents
For i = mojisu To 1 Step -1
moji_search = Mid(mojimoji, i, 1)
If moji_search = "." Then
' Cells(1, 3) = Left(Cells(1, 1), i) '左からある特定の文字までを取り出したい場合
Cells(1, 3) = Mid(mojimoji, i, mojisu - i + 1) '右からからある特定の文字までを取り出したい場合
Exit For '見つけたい文字列が一番最初に見つかったらfor文は抜けるようにする
End If
Next i
End Sub
2007/11/09
2007/11/08
軸の文字列フォーマットを設定する(日付編)
グラフ作成時のX軸のラベルを垂直方向に並べる ことをしたいときには以下のようにします。
【事例】
With ActiveSheet.ChartObjects("test").Chart.Axes(xlCategory, xlPrimary).TickLabels
.Alignment = xlCenter
.Offset = 100
.Orientation = xlUpward
.NumberFormatLocal = "YYYY/MM/DD hh:mm:ss"
End With
【解説】
ちなみに上記の場合はグラフ名を"test"という風にしています。上記フォーマットだと"2007/11/08 18:03:05"などのフォーマットでラベルが表示されます。比較的役立つ情報かと思います。
【事例】
With ActiveSheet.ChartObjects("test").Chart.Axes(xlCategory, xlPrimary).TickLabels
.Alignment = xlCenter
.Offset = 100
.Orientation = xlUpward
.NumberFormatLocal = "YYYY/MM/DD hh:mm:ss"
End With
【解説】
ちなみに上記の場合はグラフ名を"test"という風にしています。上記フォーマットだと"2007/11/08 18:03:05"などのフォーマットでラベルが表示されます。比較的役立つ情報かと思います。
2007/11/07
左からある特定の文字列までの文字列を取り出すマクロ~その2~
前に,ある文字列のある文字以降の文字列を取り出す方法を示しましたが文字列検索がうまく出来なかったのでfor文を使用して取り出すようにしていました.文字列検索の関数が分かったのでとっても楽になります.
【事例】
Sub moji()
mojimoji = "test.txt"
Cells(1, 2) = Len(mojimoji)
mojisu = Len(mojimoji)
Cells(1, 3).Select
Selection.ClearContents
serchi_char = "."
moji_search = InStr(1, mojimoji, serchi_char, 1)
Cells(1, 3) = Mid(mojimoji, moji_search)
End Sub
【解説】
基本的にはその1と同じですが右側から検索したい場合は、その1を使用したほうがよいようです。
【事例】
Sub moji()
mojimoji = "test.txt"
Cells(1, 2) = Len(mojimoji)
mojisu = Len(mojimoji)
Cells(1, 3).Select
Selection.ClearContents
serchi_char = "."
moji_search = InStr(1, mojimoji, serchi_char, 1)
Cells(1, 3) = Mid(mojimoji, moji_search)
End Sub
【解説】
基本的にはその1と同じですが右側から検索したい場合は、その1を使用したほうがよいようです。
WEBのデータファイルをEXCEL上に取り込む
WEB上にあるデータをEXCELシートにコピーするということを良くします.
その場合,以下のようにしてやると簡単にEXCELにデータを取り出せて楽です.
【事例】
Sub test1()
ThisWorkbook.Activate
Sheets("sheet1").Select
Cells.Select
Selection.ClearContents
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://table.yahoo.co.jp/t?c=2007&a=11&b=01&f=2007&d=11&e=11&g=d&s=4689.t&y=0&z=4689.t" _
, Destination:=Range("A1"))
.Name = "Yahooデータ"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
End Sub
【解説】
上記のマクロを実行すると,sheet1シートにYahooの2007/11/01~2007/11/11までの株価をデイリーで表示します。
取り出したいデータはWEB上ではデータベースのようになっておりいろいろなパラメータをWEBサーバ側に要求する場合が多いのでその部分を関数にしてやって&でつなぐといろいろとさらに汎用性が広がります.例えばURLの部分を下記のようにします.
一つ注意点としては日付・時間などをWEBサーバに要求する場合はCStr()関数を使用して関数を文字列データへ変換しないとうまくいかないことが多いです.
こんな感じで,Yahooのホームページから株価をExcelにダウンロードすれば株価のトレンドチャートとかを自動でかけるようになると思います(本気でやってないのでどのようになるかは…やられた方,ご報告のほどよろしくお願いいたします.)。
その場合,以下のようにしてやると簡単にEXCELにデータを取り出せて楽です.
【事例】
Sub test1()
ThisWorkbook.Activate
Sheets("sheet1").Select
Cells.Select
Selection.ClearContents
Range("A1").Select
With ActiveSheet.QueryTables.Add(Connection:= _
"URL;http://table.yahoo.co.jp/t?c=2007&a=11&b=01&f=2007&d=11&e=11&g=d&s=4689.t&y=0&z=4689.t" _
, Destination:=Range("A1"))
.Name = "Yahooデータ"
.FieldNames = True
.RowNumbers = False
.FillAdjacentFormulas = False
.PreserveFormatting = True
.RefreshOnFileOpen = False
.BackgroundQuery = False
.RefreshStyle = xlOverwriteCells
.SavePassword = False
.SaveData = True
.AdjustColumnWidth = True
.RefreshPeriod = 0
.WebSelectionType = xlEntirePage
.WebFormatting = xlWebFormattingNone
.WebPreFormattedTextToColumns = True
.WebConsecutiveDelimitersAsOne = True
.WebSingleBlockTextImport = False
.WebDisableDateRecognition = False
.Refresh BackgroundQuery:=False
End With
End Sub
【解説】
上記のマクロを実行すると,sheet1シートにYahooの2007/11/01~2007/11/11までの株価をデイリーで表示します。
取り出したいデータはWEB上ではデータベースのようになっておりいろいろなパラメータをWEBサーバ側に要求する場合が多いのでその部分を関数にしてやって&でつなぐといろいろとさらに汎用性が広がります.例えばURLの部分を下記のようにします.
一つ注意点としては日付・時間などをWEBサーバに要求する場合はCStr()関数を使用して関数を文字列データへ変換しないとうまくいかないことが多いです.
こんな感じで,Yahooのホームページから株価をExcelにダウンロードすれば株価のトレンドチャートとかを自動でかけるようになると思います(本気でやってないのでどのようになるかは…やられた方,ご報告のほどよろしくお願いいたします.)。
2007/11/06
左からある特定の文字列までの文字列を取り出すマクロ~その1~
例えば,拡張子より左側の文字を取り出したい場合以下のようにすればよい.
【事例】
Sub moji()
mojimoji = "test.txt"
Cells(1, 2) = Len(mojimoji)
mojisu = Len(mojimoji)
Cells(1, 3).Select
Selection.ClearContents
For i = 1 To mojisu
moji_search = Mid(mojimoji, i, 1)
If moji_search = "." Then
' Cells(1, 3) = Left(Cells(1, 1), i) '左からある特定の文字までを取り出したい場合
Cells(1, 3) = Mid(mojimoji, i, mojisu - i + 1) '右からからある特定の文字までを取り出したい場合
Exit For '見つけたい文字列が一番最初に見つかったらfor文は抜けるようにする
End If
Next i
End Sub
【事例】
Sub moji()
mojimoji = "test.txt"
Cells(1, 2) = Len(mojimoji)
mojisu = Len(mojimoji)
Cells(1, 3).Select
Selection.ClearContents
For i = 1 To mojisu
moji_search = Mid(mojimoji, i, 1)
If moji_search = "." Then
' Cells(1, 3) = Left(Cells(1, 1), i) '左からある特定の文字までを取り出したい場合
Cells(1, 3) = Mid(mojimoji, i, mojisu - i + 1) '右からからある特定の文字までを取り出したい場合
Exit For '見つけたい文字列が一番最初に見つかったらfor文は抜けるようにする
End If
Next i
End Sub
登録:
コメント (Atom)