Top> よくつかうプログラム> 日付の変換関数

VBA通信教材申込み

VBA課題解決型実践塾セミナー内容

申込 ヤフーショッピング

日付の変換関数

日付の変換関数

他の形式のファイルを変換時日付のパターンが揃っていない時があります。
日付が2014/01/20がエクセルに変換すると2014/1/20に変わります。

日付の変換関数

Sub 文字を日付に変換()
  Dim hiduke As String
  hiduke = "2014/01/10"
  MsgBox CDate(hiduke)
End Sub
Sub 文字を日付に変換セル()
  Cells(2, 2) = CDate(Cells(2, 1))
  Cells(3, 2) = CDate(Cells(3, 1))
End Sub
Sub 日付を文字に変換()
  Dim hiduke As String
  hiduke = "2014/01/1"
  MsgBox Format(hiduke, "yyyy/mm/dd")
End Sub
Sub 日付を文字に変換セル()
  Cells(2, 3) = Format((Cells(2, 2)), "yyyy/mm/dd")
  Cells(3, 3) = Format((Cells(3, 2)), "yyyy/mm/dd")
End Sub
エクセルのデータの中に混在した場合そろえる関数を考えてみましょう。
2014/1/10と2014/01/20が混在する場合。
mid関数を使います。
VBA実践塾部品集(関数)
開始位置から指定した数の文字列の取り出しを参考にしてください。
mid関数は何文字目から何文字を取り出す関数です。
例えばhenkan=”2014/1/10”
とした場合mid(henkan,7,1)は7文字目/から1文字/を取り出します。

1)月が1月から9月までの場合0を入れる方法を考えます。

先頭から7番目が/かどうかで変換するかどうかを判断します。
henkan=日付
If mid(henkan,7,1) = "/" Then
  変換処理をする
Else
  変換処理をしない
End If

変換処理
  henkan1 = "0" & Mid(henkan, 6, 1)
  henkan2 = Mid(henkan, 1, 5) & henkan1
henkan=”2014/1/10”の場合
henkan1=”01”
henkan2=”2014/01”
になります。

2)日が1日から9日の場合

2014/1/1を2014/01/10に変換します。
条件の取り出し方を考えます。
1)の流れからいけば/のある場所を判断すればよいと思いますが、
select文を使う場合は1つの条件での判断になりますので、日付の長さで判断します。
長さを取得する関数はlen(henkan)です。

日付の変換関数

Sub 変換1()
  Dim henkan As String
  Dim henkan1 As String
  Dim henkan2 As String
  henkan = "2014/1/10"
  henkan1 = "0" & Mid(henkan, 6, 4)
  henkan2 = Mid(henkan, 1, 5) & henkan1
  MsgBox henkan2
End Sub
Sub 年月変換()
  Dim i As Long
  Dim henkan As String
  Dim henkan1 As String
  Dim henkan2 As String
  For i = 2 To 3
    henkan = Cells(i, 1)
    If Mid(henkan, 7, 1) = "/" And Len(henkan) = 9 Then
      henkan1 = "0" & Mid(henkan, 6, 4)
      henkan2 = "'" & Mid(henkan, 1, 5) & henkan1
    Else
      henkan2 = "'" & henkan
    End If
    Cells(i, 2) = henkan2
  Next
End Sub
Sub 年月変換1()
  Dim i As Long
  Dim henkan As String
  Dim henkan1 As String
  Dim nagasa As Long
  For i = 2 To 5
    henkan = Cells(i, 1)
    nagasa = Len(Cells(i, 1))
    Select Case nagasa
      Case 8
        henkan1 = "'" & Mid(henkan, 1, 5) & "0" & Mid(henkan, 6, 2) & "0" & Mid(henkan, 8, 1)
      Case 9
        henkan1 = "'" & Mid(henkan, 1, 5) & "0" & Mid(henkan, 6, 4)
      Case 10
        henkan1 = "'" & henkan
    End Select
    Cells(i, 3) = henkan1
  Next
End Sub
Sub 長さ()
  Dim i As Long
  Dim nagasa As Long
  For i = 2 To 5
    nagasa = Len(Cells(i, 1))
    Cells(i, 4) = nagasa
  Next
End Sub
関数を使っていますので関数の使い方は
VBA実践塾部品集(部品の基礎)
関数の使い方を参考にしてください。
Sub 年月変換2()
  Dim i As Long
  For i = 2 To 5
    Cells(i, 5) = hiduke(Cells(i, 1))
  Next
End Sub
Function hiduke(henkan As String)
  Dim nagasa As Long
  nagasa = Len(henkan)
  Select Case nagasa
    Case 8
      hiduke = "'" & Mid(henkan, 1, 5) & "0" & Mid(henkan, 6, 2) & "0" & Mid(henkan, 8, 1)
    Case 9
      hiduke = "'" & Mid(henkan, 1, 5) & "0" & Mid(henkan, 6, 4)
    Case 10
      hiduke = "'" & henkan
  End Select
End Function
プログラムの説明はメルマガで順次紹介していきますが、
エクセルの関数を使えばこのような関数は必要ないように思いますが
思ったような処理をしたい場合は必要になる時がありますので勉強してください。
文字型を入力するとき先頭に‘をつけないといけませんがそれをコピーすれば日付に変わります。
長さも’を除いた長さになります。
今回もエクセルの素晴らしさを実感しました。

 

 

塾長あいさつ
基本方針(考え方)
通信教育内容
課題解決セミナー内容
初心者基礎コース内容
カリキュラム・料金
案内地図・各種リンク
問合せ・申込み
アベノ塾
システムの内製化
アサイコンピュータACS
応用部品集(有料)
販売管理(事例)
財務管理(事例)
顧客管理(事例)
見積もり(事例)
給与(事例)
介護(事例)
ゴースト暗算(事例)
部品集(部品の基礎)
部品集(シート関連)
部品集(データベース)
部品集(セル関連)
部品集(関数)
部品集(フォーム関連)
部品集(ブック関連)
部品集(その他)
変数の勉強
繰り返しと条件文
マスター登録.訂正.削除
フォルダー内のファイル
項目をシート名で作成
ブックの操作
CSVファイルの取り込み
呼び出し元・先
商品マスター検索
エクセル関数をVBAで
エクセル関数を使う
よくつかうプログラム
販売管理(ソース)
財務管理(ソース)
給与管理(概要・画面)
見積もり(概要・画面)
工程管理(概要・画面)
原価管理(概要・画面)