Excel 時間、日付操作

システムの都合上、時間の値が24:00以上の数値が存在してしまいます。
そのため、時間に23:59以上の値があった場合、
日付に+1を行い時間をー24:00としたい(24:00ちょうどの場合は00:00)
Excelファイルです。

DateTime型の変数を使用してみましたが、エラーになってしまいます。

画像の②を日付を翌日に変えて、開始時間00:30 終了時間09:18としたい。
image

お願いいたします。

こんにちは

やり方はいろいろあるかと思いますが、以下一例です。
(開始時間と終了時間が文字列として入力されていると仮定しています)

Sample20210614-2.zip (9.2 KB)

2 Likes

24時を超える可能性のある「開始時間・終了時間」を加味して「開始日時・終了日時」の日付型に変換するなら、時と分に分解して.AddHourと.AddMinuteで加算して計算すれば出来ると思います。

例)2021/06/14 と 33:18 なら 2021/06/14 00:00:00 に 33時間と18分を足す

<開始時刻の計算式>
CDate(row("日付").ToString
	).AddHours(CInt(row("開始時間").ToString.Substring(0, row("開始時間").ToString.IndexOf(":")))
	).AddMinutes(CInt(row("開始時間").ToString.Substring(row("開始時間").ToString.IndexOf(":") + 1)))

<終了時刻の計算式>
CDate(row("日付").ToString
	).AddHours(CInt(row("終了時間").ToString.Substring(0, row("終了時間").ToString.IndexOf(":")))
	).AddMinutes(CInt(row("終了時間").ToString.Substring(row("終了時間").ToString.IndexOf(":") + 1)))

参考にフローを添付します。

Main.xaml (10.9 KB)
Main2.xaml (11.2 KB)

「Main.xaml」は単純に計算したパターンで
「Main2.xaml」は計算用の関数を定義したものです。

仕様的に「終了時間だけが日をまたぐ」可能性がありそうなので、開始日時と終了日時の2列を追加して、それぞれのDatetimeの値を計算しています。

2 Likes

@Yoichi
ご返信ありがとうございます。

細かい部分で申し訳ないのですが、
処理後の日付や時間が10未満の場合1桁になってしまいます。
yyyy/MM/DD またはHH:mmの形でExcelに書き出すにはどのような処理になりますか。

教えていただけると助かります。

@shinji
ご返信ありがとうございます。

変換後に日付列にyyyy/MM/ddの形で代入しようとすると、
以下のエラーになってしまいます。
Excelの日付列に上記形式で書き込む方法を教えていただけると助かります。

代入: Conversion from string “05/07/2021 09” to type ‘Integer’ is not valid.

こんにちは

以下のような感じでいかがでしょうか?

Sample20210614-2v2.zip (9.3 KB)

1 Like

@Yoichi
ありがとうございます。 とても助かります。

「一行を書き込み」で出力したところ、理想の形になっていました。

Excelが勝手にユーザー定義を設定してしまうところが問題だったようです。