C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[5]: 【ExcelVBA】時間データの計算


(過去ログ 173 を表示中)

[トピック内 10 記事 (1 - 10 表示)]  << 0 >>

■99895 / inTopicNo.1)  【ExcelVBA】時間データの計算
  
□投稿者/ 工場プログラマー (1回)-(2022/06/16(Thu) 13:53:24)

分類:[Microsoft Office 全般] 

ExcelVBAにて

17:39-14:00=3:39の様な簡単な時間計算を行いたいです。
実際には変数に時間を格納し、for〜Nextで上から読んで条件を満たす時間を処理するんですけど
DateDiffやDateadd、formatを用いて試みましたがエラー続きでうまくいきません。




引用返信 編集キー/
■99896 / inTopicNo.2)  Re[1]: 【ExcelVBA】時間データの計算
□投稿者/ shu (1279回)-(2022/06/16(Thu) 14:01:19)
No99895 (工場プログラマー さん) に返信

CDate(#17:39# - #14:00#)
で計算できます。
引用返信 編集キー/
■99897 / inTopicNo.3)  Re[2]: 【ExcelVBA】時間データの計算
□投稿者/ 工場プログラマー (2回)-(2022/06/16(Thu) 14:05:03)
No99896 (shu さん) に返信
> ■No99895 (工場プログラマー さん) に返信
>
> CDate(#17:39# - #14:00#)
> で計算できます。

CDate(#17:39# - #14:00#) → 中身変数で出来ますか?

安直ですけどCDate(Cells(i,1) - Cells(i,2))みたいな?
自分はやってみたけど無理でした

引用返信 編集キー/
■99898 / inTopicNo.4)  Re[3]: 【ExcelVBA】時間データの計算
□投稿者/ shu (1280回)-(2022/06/16(Thu) 14:12:02)
No99897 (工場プログラマー さん) に返信

Shee1の
L11に17:39
M11に14:00

が入っている状態でイミディエイトウィンドウにて
CDate(Sheet1.RAnge("L11") - Sheet1.Range("M11"))
CDate(Sheet1.Cells(11,12) - Sheet1.Cells(11,13))
ともに計算できました。
引用返信 編集キー/
■99899 / inTopicNo.5)  Re[1]: 【ExcelVBA】時間データの計算
□投稿者/ 大谷刑部 (192回)-(2022/06/16(Thu) 14:52:23)
No99895 (工場プログラマー さん) に返信
> ExcelVBAにて
>
> 17:39-14:00=3:39の様な簡単な時間計算を行いたいです。
> 実際には変数に時間を格納し、for〜Nextで上から読んで条件を満たす時間を処理するんですけど
> DateDiffやDateadd、formatを用いて試みましたがエラー続きでうまくいきません。

Datediffで分(interval:"n")で出して時分形式になるように再計算(60で割って商が時、余りが分)すればいいだけな気がしますが、
一発で引き算がしたいという意味ですか?

引用返信 編集キー/
■99900 / inTopicNo.6)  Re[2]: 【ExcelVBA】時間データの計算
□投稿者/ 工場プログラマー (3回)-(2022/06/16(Thu) 15:28:02)
2022/06/16(Thu) 15:28:43 編集(投稿者)

No99899 (大谷刑部 さん) に返信
> ■No99895 (工場プログラマー さん) に返信
>>ExcelVBAにて
>>
>>17:39-14:00=3:39の様な簡単な時間計算を行いたいです。
>>実際には変数に時間を格納し、for〜Nextで上から読んで条件を満たす時間を処理するんですけど
>>DateDiffやDateadd、formatを用いて試みましたがエラー続きでうまくいきません。
>
> Datediffで分(interval:"n")で出して時分形式になるように再計算(60で割って商が時、余りが分)すればいいだけな気がしますが、
> 一発で引き算がしたいという意味ですか?

思いついたけど見たときにコードわかり辛いかなと思いまして、、
出来れば一発で引き算できるといいですね

引用返信 編集キー/
■99901 / inTopicNo.7)  Re[4]: 【ExcelVBA】時間データの計算
□投稿者/ 工場プログラマー (4回)-(2022/06/16(Thu) 15:52:19)
No99898 (shu さん) に返信
> ■No99897 (工場プログラマー さん) に返信
>
> Shee1の
> L11に17:39
> M11に14:00
>
> が入っている状態でイミディエイトウィンドウにて
> CDate(Sheet1.RAnge("L11") - Sheet1.Range("M11"))
> CDate(Sheet1.Cells(11,12) - Sheet1.Cells(11,13))
> ともに計算できました。

変数を入れたらエラーは起きませんが、時間が入らないです(0:00と表示されている)
型があってないんですかね??

引用返信 編集キー/
■99902 / inTopicNo.8)  Re[3]: 【ExcelVBA】時間データの計算
□投稿者/ 大谷刑部 (193回)-(2022/06/16(Thu) 16:03:23)
No99900 (工場プログラマー さん) に返信
> 2022/06/16(Thu) 15:28:43 編集(投稿者)
>
> ■No99899 (大谷刑部 さん) に返信
>>■No99895 (工場プログラマー さん) に返信
> >>ExcelVBAにて
> >>
> >>17:39-14:00=3:39の様な簡単な時間計算を行いたいです。
> >>実際には変数に時間を格納し、for〜Nextで上から読んで条件を満たす時間を処理するんですけど
> >>DateDiffやDateadd、formatを用いて試みましたがエラー続きでうまくいきません。
>>
>>Datediffで分(interval:"n")で出して時分形式になるように再計算(60で割って商が時、余りが分)すればいいだけな気がしますが、
>>一発で引き算がしたいという意味ですか?
>
> 思いついたけど見たときにコードわかり辛いかなと思いまして、、
> 出来れば一発で引き算できるといいですね

ならshuさんが提示したやり方の方が近いですね。

>CDate(Cells(i,1) - Cells(i,2))

をセル参照の箇所自体もCDateで引き算の前にdate型に明示型変換すれば確実にできると思います。
ただし、セル値に日付、時刻とみなせない値が入ってたらエラーになりますけど。

引用返信 編集キー/
■99903 / inTopicNo.9)  Re[4]: 【ExcelVBA】時間データの計算
□投稿者/ 工場プログラマー (5回)-(2022/06/16(Thu) 16:20:01)
No99902 (大谷刑部 さん) に返信
> ■No99900 (工場プログラマー さん) に返信
>>2022/06/16(Thu) 15:28:43 編集(投稿者)
>>
>>■No99899 (大谷刑部 さん) に返信
> >>■No99895 (工場プログラマー さん) に返信
>>>>ExcelVBAにて
>>>>
>>>>17:39-14:00=3:39の様な簡単な時間計算を行いたいです。
>>>>実際には変数に時間を格納し、for〜Nextで上から読んで条件を満たす時間を処理するんですけど
>>>>DateDiffやDateadd、formatを用いて試みましたがエラー続きでうまくいきません。
> >>
> >>Datediffで分(interval:"n")で出して時分形式になるように再計算(60で割って商が時、余りが分)すればいいだけな気がしますが、
> >>一発で引き算がしたいという意味ですか?
>>
>>思いついたけど見たときにコードわかり辛いかなと思いまして、、
>>出来れば一発で引き算できるといいですね
>
> ならshuさんが提示したやり方の方が近いですね。
>
> >CDate(Cells(i,1) - Cells(i,2))
>
> をセル参照の箇所自体もCDateで引き算の前にdate型に明示型変換すれば確実にできると思います。
> ただし、セル値に日付、時刻とみなせない値が入ってたらエラーになりますけど。

Cells(i, 3) = CDate(Cells(i, 1)) - CDate(Cells(i, 2))
これで出来ました!
みなさん教えてくださりありがとうございました。
解決済み
引用返信 編集キー/
■99905 / inTopicNo.10)  Re[5]: 【ExcelVBA】時間データの計算
□投稿者/ 大谷刑部 (195回)-(2022/06/16(Thu) 17:21:09)
No99903 (工場プログラマー さん) に返信
>
> Cells(i, 3) = CDate(Cells(i, 1)) - CDate(Cells(i, 2))
> これで出来ました!
> みなさん教えてくださりありがとうございました。

セルに代入の場合は多分OKですが、変数に代入の場合は、

CDate(Cells(i, 1)) - CDate(Cells(i, 2))

の時点ではリテラル値になってるはずなので、演算結果に対しても、CDateをかけた方が無難と思います。
VBAおよび6以前のVBの日付型は内部処理の実態はDoubleなのでその点ご注意を。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -