大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで時間の型を、変換する方法についてご紹介します。時間の型を変換するには、Formatを使えばできます。Formatを使えば、時間をhh:mm:ssや、12時間の表記に変換できて便利です。

はじめに

この記事では、時間の型を、Formatを使って変換する方法についてご紹介します。

Formatを使えば、時間を『hh時mm分ss秒』や12時間の表記に変換したり、自由自在です。

時間の型を変換する際には、Formatを使っていきましょう。

この記事で紹介すること

  • 時間の型を変換する方法

目次から見たい項目へ移動すると便利ですよ。

目次

ポイントとなるVBAコード

初めに、ポイントとなるVBAコードについて、記載しておきます。

VBAコードだけ確認したい場合に、ご活用ください。

Dim A, B
'時間の型を変換
A = "17:1:2"
B = Format(A, "hh時mm分ss秒") '"17時01分02秒"
B = Format(A, "hh:mm:ss") '"17:01:02"
B = Format(A, "hh") '"17"
B = Format(A, "nn") '"01"
B = Format(A, "ss") '"02"
B = Format(A, "hh:mm:ss AM/PM") '05:01:02 PM"

'数値4桁を日付型の時間に変換
A = 1701
B = TimeValue(Format(A, "@@:@@")) '17:01

'日付+時間のデータから一部データを取得
A = "2020/1/1 17:1:2"
B = TimeValue(Format(A, "hh:mm:ss")) '17:01:02
B = CDate(Format(A, "yyyy/mm/ss")) '2020/01/01

では、解説していきます。

VBAでFormatを使って時間の型を変換する

VBAでFormatを使って時間の型を変換する方法について、ご紹介します。

使い方(Format)

まず、Formatの使い方です。次のようにFormatへ入力します。

『変換後の時間 = Format(時間, 書式)』

書式には、次のようなものがあります。

  • 長い時間に型を変換:"hh時mm分ss秒"
  • 短い時間に型を変換:"hh:mm:ss"
  • 時間だけ取得:"hh"
  • 分だけ取得:"nn"
  • 秒だけ取得:"ss"
  • 12時間表記に変換:"hh:mm:ss AM/PM"

では、具体的なVBAコードを使って説明していきます。

長い時間に型を変換

時間を長い時間の型に変換してみます。Formatに"hh時mm分ss秒"と入力します。

時間『"17:1:2"』を長い時間の型に変換するVBAコードです。

Sub TEST1()
    
    Dim A, B
    
    A = "17:1:2"
    
    '長い時間に変換
    B = Format(A, "hh時mm分ss秒")
    
    MsgBox B
    
End Sub

実行してみます。

長い時間に変換

Formatで長い時間の表記に変換した結果

結果は、『17時01分02秒』となりました。

長い時間の型に変換できています。

短い時間に型を変換(hh:mm:ss)

時間を短い時間の型に変換してみます。Formatに"hh:mm:ss"と入力します。

時間『"17:1:2"』を短い時間の型に変換するVBAコードです。

Sub TEST2()
    
    Dim A, B
    
    A = "17:1:2"
    
    '短い時間に変換
    B = Format(A, "hh:mm:ss")
    
    MsgBox B
    
End Sub

実行してみます。

短い時間に変換

Formatで短い時間の表記に変換した結果

結果は、『17:01:02』となりました。

短い時間の型に変換できています。

時だけ取得

時間から時だけを取得してみます。Formatに"hh"と入力します。

時間『"17:1:2"』から時だけを取得するVBAコードです。

Sub TEST3()
    
    Dim A, B
    
    A = "17:1:2"
    
    '時だけを取得
    B = Format(A, "hh")
    
    MsgBox B
    
End Sub

実行してみます。

時だけ取得

Formatで時だけを取得した結果

結果は、『17』時となりました。

時間から、時だけを取得できています。

分だけ取得

時間から分だけを取得してみます。Formatに"nn"と入力します。

時間『"17:1:2"』から分だけを取得するVBAコードです。

Sub TEST4()
    
    Dim A, B
    
    A = "17:1:2"
    
    '分だけを取得
    B = Format(A, "nn")
    
    MsgBox B
    
End Sub

実行してみます。

分だけ取得

Formatで分だけを取得した結果

結果は、『01』分となりました。

時間から、分だけを取得できています。

秒だけ取得

時間から秒だけを取得してみます。Formatに"ss"と入力します。

時間『"17:1:2"』から秒だけを取得するVBAコードです。

Sub TEST5()
    
    Dim A, B
    
    A = "17:1:2"
    
    '秒だけを取得
    B = Format(A, "ss")
    
    MsgBox B
    
End Sub

実行してみます。

秒だけ取得

Formatで秒だけを取得した結果

結果は、『02』秒となりました。

時間から、秒だけを取得できています。

12時間表記に変換  

時間を12時間表記に変換してみます。Formatに"hh:mm:ss AM/PM"と入力します。

時間『"17:1:2"』を12時間の表記に変換するVBAコードです。

Sub TEST6()
    
    Dim A, B
    
    A = "17:1:2"
    
    '12時間の表記に変換
    B = Format(A, "hh:mm:ss AM/PM")
    
    MsgBox B
    
End Sub

実行してみます。

12時間の表記に変換

Formatで12時間の表記に変換した結果

結果は、『05:01:02 PM』となりました。

12時間の表記に変換できています。

Formatを使って数値から時間に変換

Formatを使えば、数値から時間に変換することができます。

数値4桁はTimeValueで時間に変換できない

数値を日付型の時間に変換するには、TimeValueを使います。

だた、数値4桁の値を直接、日付型の時間に変換はできません。

数値『1701』を日付型の時間に変換しようとするVBAコードです。

これはエラーとなります。

Sub TEST7()
    
    Dim A, B
    
    A = 1701
    
    '日付型の時間に変換したい
    B = TimeValue(A) 'エラーとなります
    
End Sub

実行してみます。

数値4桁を日付型の時間に変換しようとしてエラー

数値4桁をTimeValueを使って日付型の時間に変換した結果

結果は、エラーとなりました。

Formatの"@@:@@"を使って数値4桁を時間に変換

数値4桁を、時間に変換したいときは、Formatが使えます。

手順としては、

・①Formatの"@@:@@"を使って時間の型に変換

・②TimeValueで日付型の時間に変換

という流れです。

数値『1701』を日付型の時間に変換してみます。

Sub TEST8()
    
    Dim A, B, C
    
    A = 1701
    
    '時間の型に変換
    B = Format(A, "@@:@@")
    
    '日付型の時間に変換
    C = TimeValue(B)
    
    MsgBox C
    
End Sub

実行してみます。

数値4桁を日付型の時間に変換

Formatを使って数値4桁を日付型の時間に変換した結果

結果は、『17:01:00』となりました。

数値4桁を、日付型の時間に変換できました。

日付型のデータを一部データだけに変換

Formatを使えば、日付型のデータから、時間だけとか、日付だけ、といったような一部のデータを取得することもできます。

日付+時間のデータを時間だけに変換

日付+時間のデータから、Formatを使って時間だけの日付型に変換してみます。

手順は、

・①日付+時間からFormatの"hh:mm:ss"で時間だけを取得

・②取得したデータを日付型に変換

という流れになります。

日付『"2020/1/1 17:1:2"』から、時間だけを取得して日付型に変換するVBAコードです。

Sub TEST9()
    
    Dim A, B, C
    
    A = "2020/1/1 17:1:2"
    
    '時間だけを取得
    B = Format(A, "hh:mm:ss")
    
    '日付型の時間に変換
    C = TimeValue(B)
    
    MsgBox C
    
End Sub

実行してみます。

日付+時間から時間だけを取得

日付+時間のデータから時間だけを取得して日付型に変換した結果

結果は、『17:01:02』の時間だけの日付型となりました。

日付+時間のデータを日付だけに変換

先ほどとは反対に、日付+時間のデータから、Formatを使って日付だけの日付型に変換してみます。

手順は、

・①日付+時間からFormatの"yyyy/mm/dd"で日付だけを取得

・②取得したデータを日付型に変換

という流れになります。

日付『"2020/1/1 17:1:2"』から、日付だけを取得して日付型に変換するVBAコードです。

Sub TEST10()
    
    Dim A, B, C
    
    A = "2020/1/1 17:1:2"
    
    '日付だけを取得
    B = Format(A, "yyyy/mm/dd")
    
    '日付型の日付に変換
    C = CDate(B)
    
    MsgBox C
    
End Sub

実行してみます。

日付+時間から日付だけを取得

日付+時間のデータから日付だけを取得して日付型に変換した結果

結果は、『2020/01/01』の日付だけの日付型となりました。

おわりに

この記事では、時間の型をFormatを使って変換する方法についてご紹介しました。

Formatを使えば、時間を『hh時mm分ss秒』や12時間の表記に変換することができます。

また、数値4桁から日付型の時間に変換や、日付データから一部データの取得などの応用も可能です。

時間の型を変換したり、一部データを取得したい場合は、Formatを使いましょう。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

サイト内を検索する

↓キーワードを入力する

アーカイブから探す