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は初心者レベルです。
もし比較的簡単にワークシート関数だけでできるようでしたら、そちらも教えてください。
よろしくお願いいたします。
No.2
- 回答日時:
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]
●新規ワークシート
そのシートは非表示にしてもよい
書式は適宜変更してください
CoalTar 様
ご回答ありがとうございます。
式の解説がとてもわかりやすかったです。
また、添付図もわかりやすかったです。
この度は、ありがとうございました。
No.3
- 回答日時:
>もし比較的簡単にワークシート関数だけでできるようでしたら、そちらも教えてください。
関数で表示するなら、たとえば以下のような数式を入力します。
=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)
No.4ベストアンサー
- 回答日時:
ワークシートを開き、
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になります。
aokii 様
ご回答ありがとうございます。
非常に親切かつ丁寧に解説されていて、VBA初心者の私でも良くわかりました。
この度は、本当にありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Excel(エクセル) エクセルについて教えてください。 2 2023/06/14 11:11
- Excel(エクセル) Excel VBAで、行の高さを、上下1文字分程度高くしたい 3 2023/04/23 00:17
- その他(Microsoft Office) Excel 2列の値を返す数式についてです 1 2022/11/23 22:59
- Visual Basic(VBA) Excelのマクロ ブック間である範囲をコピー Workbooks(“a.xlsx“).Sheets 3 2022/05/12 17:02
- Visual Basic(VBA) 顧客ごとに違う点検案内を作成するマクロ 4 2022/09/16 05:34
- Excel(エクセル) エクセルの条件付き書式 3 2022/05/08 03:17
- Excel(エクセル) エクセルでフィルタ後の列の重複を回避したい 6 2022/10/13 12:50
- Excel(エクセル) 至急です><Excelの関数を教えてください。 2 2022/03/22 17:56
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ダブルクリックでセルに色をつ...
-
ファイルサーバー上のexcelファ...
-
行方向の同じ値のセルを結合す...
-
セルをクリックしたら色を変え...
-
ExcelVBA コンボボックスに入力...
-
Excel VBA:フォーム←→セルのア...
-
VBAでの SendKeysの変数指定方法
-
Excel VBA で色付きのセルの値...
-
vbaで指定したセルより下の行を...
-
【VBA】アクティブセルだけ背景...
-
エクセルでアクティブセルに対...
-
エクセル マクロ 線対称・点...
-
VBA Rangeの足し算
-
VBA ボタンをセルの右側に合わ...
-
Excelでプルダウンからフィルタ...
-
エクセルでセルをクリックする...
-
エクセル連結解除時、全てのセ...
-
Excelで、あるセルの値に応じて...
-
Excel UserForm の表示位置
-
VBAを使って検索したセルをコピ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
vbaで指定したセルより下の行を...
-
エクセルでセルをクリックする...
-
VBAでの SendKeysの変数指定方法
-
Excel VBA:フォーム←→セルのア...
-
Excelマクロ セルを行頭に移動
-
【VBA】アクティブセルだけ背景...
-
IF関数で違う値もTRUEになる
-
エクセルマクロで「セルのサイ...
-
Excel VBA で色付きのセルの値...
-
ダブルクリックでセルに色をつ...
-
excel マクロでの特殊文字入力方法
-
マクロのデータ削除
-
ExcelVBA コンボボックスに入力...
-
ファイルサーバー上のexcelファ...
-
VBA Rangeの足し算
-
(エクセルVBA)セルを左クリッ...
-
Excelのマクロで選択している行...
-
セルをクリックしたら色を変え...
-
エクセル:セルの色のコード番...
-
EXCEL(VBA) セルをクリックし...
おすすめ情報