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

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

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

Re[1]: fpspreadのfomuraで時刻の加減


(過去ログ 92 を表示中)

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

■54748 / inTopicNo.1)  fpspreadのfomuraで時刻の加減
  
□投稿者/ 柴犬 (2回)-(2010/11/01(Mon) 10:53:05)

分類:[VB.NET/VB2005 以降] 

お世話になります。

VB.NET 2003にて、FpSpreadを使用しているのですが、
Spread内のセル計算で時刻データの加減を行いたいと思っております。

セルA1、A2に時刻を入力し、A3にA1,A2の差を計算するとしたらどのようなやり方があるか、
詳しい方、ご教授よろしくお願いします。

ちなみに、セルA1、A2のセルタイプはDateTimeを使用し、A3はTextを使用します(24時間を越える時刻表記がしたいため)。

A
1 8:00
2 17:00
3 9:00
~~~~~~ 期待する結果

一応、自分で考えたのは
=CONCATENATE(ABS(LEFT(A2, LEN(A2)-3) - LEFT(A1, LEN(A1)-3)), ":", ABS(RIGHT(A2, 2) - RIGHT(A1, 2)))
なのですが、どうやら、DateTimeからTextに変換できていないため計算ができないようでした。

よろしくお願いします。
引用返信 編集キー/
■54755 / inTopicNo.2)  Re[1]: fpspreadのfomuraで時刻の加減
□投稿者/ 柴犬 (3回)-(2010/11/01(Mon) 12:03:30)
No54748 (柴犬 さん) に返信

自己解決(?)してしまったので報告します。

関数一覧から、時刻の演算を行うものを探しましたが見つかりませんでした。
また、計算不可だった上記式の解決法として、やはり時刻からテキストへの変換が必要で、
HOUR()関数やMINUTE()を使用したら値が表示されました。

どうやら、演算用の関数がないようなのでゴリゴリ自力で記述する方法が早そうです。
=IF(OR(A1="", A2="", "", FN1)

<FN1> = CONCATENATE(<FNH>, ":", <FNM>)
<FNH> = CONCATENATE(<IS_KURISAGARI>, <FNHH> - 1, <FNHH>)
<FNHH> = IF(HOUR(A2)-HOUR(A1) < 0, HOUR(A2) - HOUR(A1), 24 + HOUR(A2) - HOUR(A1))

<FNM> = RIGHT(CONCATENATE("00", <FNMM>, 2))
<FNMM> = IF(<IS_KURISAGARI>,60 + MINUTE(A2) - MINUTE(A1), MINUTE(A2) - MINUTE(A1))

<IS_KURISAGARI> = MINUTE(R7C10) - MINUTE(R7C9) < 0

※ 一文だと長いので記述方法を工夫しています。

上記のほかに簡潔に計算ができるものがあれば募集します。

よろしくお願いします。
解決済み
引用返信 編集キー/


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

このトピックに書きこむ

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

管理者用

- Child Tree -