プロが教える店舗&オフィスのセキュリティ対策術

EXCEL2007を使用しています。
1分ごとに事前に決まっている値を足し続ける方法を教えてください。

例えば、A2セルに「3」が入力されているとします。
9時から11時までの間、1分ごとに3を足し続けて計算結果をB2に表示したいのです。
つまり、9時にはB2セルはゼロで、9時1分にはB2セルは3、9時2分にはB2セルは6、9時3分にはB2セルは9,・・・というふうにしたいのです。
そして、11時まで計算したら、今度は、12時半から15時までB2セルの値に3を足し続けたいのです。

どなたか教えていただけないでしょうか?

なお、上記の例では3を足し続けることになっていますが、何を足すかはその日によって変わります。
従いまして、A2セルの値を足し続けるようにしたいのです。
よろしくお願いいたします。

なお、私はVBAは初心者レベルです。
もし比較的簡単にワークシート関数だけでできるようでしたら、そちらも教えてください。
よろしくお願いいたします。

A 回答 (4件)

excel vba タイマー割り込み


とか
excel vba application.ontime
とかでネット検索してみてください。
    • good
    • 0
この回答へのお礼

nattocurry 様

調べ方を教えていただきまして、ありがとうござます。

お礼日時:2011/07/16 07:45

VBAを使わない方法



D2:F2セルに 0
F3セルに E3-D3
下へオートフィル

現在時刻の取得
B1セルに =TEXT(NOW(),"h:m:s")*1

B2セルに
=IF(MATCH(B1,D:D)=MATCH(B1,E:E),INT(1440*SUM(F1:INDEX(F:F,MATCH(B1,E:E))))*A2,
INT(1440*SUM(F1:INDEX(F:F,MATCH(B1,D:D)-1),B1-LOOKUP(B1,D:D)))*A2)
開始時刻と終了時刻外ならば 該当する時間(F列)まで足して分に換算(*1440)し、
整数化を行って×A2セル
開始時刻と終了時刻内ならば、該当する時間(F列)の一つ前までと
現在時刻から該当する開始時刻を引いて足す。
そして、分に換算(*1440)し、整数化を行って×A2セル

データ-外部データの取り込み-新しいWebクエリ
(インターネットにつながっていない場合は、「新しいデータベースクエリ」で
自分のブックを参照する手段もあります)
添付図のようにチェックして[取り込み]
プロパティで
定期的に更新する 1分ごと [OK]
●新規ワークシート
そのシートは非表示にしてもよい

書式は適宜変更してください
「EXCEL 1分ごとに決まった値を足し続」の回答画像2
    • good
    • 0
この回答へのお礼

CoalTar 様

ご回答ありがとうございます。
式の解説がとてもわかりやすかったです。
また、添付図もわかりやすかったです。
この度は、ありがとうございました。

お礼日時:2011/07/16 07:52

>もし比較的簡単にワークシート関数だけでできるようでしたら、そちらも教えてください。



関数で表示するなら、たとえば以下のような数式を入力します。

=INT((MIN(NOW()-TODAY(),"11:00"*1)-"9:00")*24*60+((MIN(NOW()-TODAY(),"15:00"*1)-"12:30")*24*60))*A2

上記の数式は、どこかのセルを変更した場合に自動的に計算しなおしますが、もしシートに変更がない場合はF9キーを押して再計算する必要があります。

また、9:00以降の数式ですので、9:00以前の場合はマイナスの値になりますので、以下のようにIF関数などを使って「0」になるようにしてください。

=(元の数式)*(NOW()-TODAY()-"9:00">0)
    • good
    • 0
この回答へのお礼

MackyNo1 様

ご回答ありがとうございます。
式の解説もわかりやすかったです。
この度は、ありがとうございました。

お礼日時:2011/07/16 07:54

ワークシートを開き、



1.開発メニューから、VisualBasicを呼び出します。
2.メニューから、挿入、標準モジュール、で出てきた白い広い部分に以下のコードをコピペします。

Sub test01()
With Sheets("Sheet1").Range("A1")
.Value = Time
.NumberFormatLocal = "h:mm:ss"
End With
Application.OnTime Now + TimeValue("0:00:01"), "test01"
End Sub

3.ワークシートへもどります。
4.メニューから、ツール、マクロ、マクロで出てきたマクロ名(test01)を選択して実行します。

これでSheets("Sheet1")のA1に毎秒ごとに時刻が表示されます。

ここまでできたら、A1,B1,C1,D1に以下の時刻を入れ、
09:0011:0012:3015:00
F1に以下の数式を入れます。
=IF(A1<B1,0,IF(A1<C1,HOUR(C1-A1)*60+MINUTE(C1-A1),IF(A1<D1,HOUR(C1-B1)*60+MINUTE(C1-B1),IF(A1<E1,HOUR(C1-B1)*60+MINUTE(C1-B1)+HOUR(E1-A1)*60+MINUTE(E1-A1),HOUR(C1-B1)*60+MINUTE(C1-B1)+HOUR(E1-D1)*60+MINUTE(E1-D1)))))

A1に3を入れて、B1に以下の数式を入れます。
=A2*F1

ちなみに、その時の時刻が、9:00以降前だったら、エラーになりますのでご注意下さい。

マクロの許可や、実行を伴うエクセルファイルの保管や起動は、マクロ操作に慣れていないとかなり面倒なので、頑張って下さい。

ファイルの保存は、拡張子が.xlsmになります。
    • good
    • 0
この回答へのお礼

aokii 様

ご回答ありがとうございます。
非常に親切かつ丁寧に解説されていて、VBA初心者の私でも良くわかりました。
この度は、本当にありがとうございました。

お礼日時:2011/07/16 07:56

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!