
機械の稼働時間を管理したいのですが、機械の種類も多く稼働時間が機械によってさまざまです。
機械も途中でストップして、また再開したり、またストップしたりとあるので稼働時間計算がわかりません。
イメージが伝わるかわからないですが、教えて下さい。
VBAは現在勉強中です。
下記はイメージ
・機械の種類5種類1、2、3、4、5
・A列に日付と時間(2012/9/7 2:00)
・B列に機械の番号(1号機)
・C列に状態(スタート・ストップ)
A B C
1 2012/9/7 2:00 1 スタート
2 2012/9/7 5:00 2 スタート
3 2012/9/7 10:00 1 途中ストップ
4 2012/9/7 11:30 3 スタート
5 2012/9/7 13:50 2 再スタート
6 2012/9/7 10:00 1 途中ストップ
7 2012/9/7 13:50 2 再スタート
8 2012/9/8 16:00 1 停止
9 2012/9/8 17:00 2 停止
という感じにシート(sheet1)に入力していき、(sheet2)にそれぞれの現在の稼働時間や動いていなければ停止中という表示をしたいのです。
select caseを使って、機械ごとにまずは機械種類(B列)で一番下(新しい行)を検索して、その行の状態(C列)によってス停止なら「停止中」 スタートなら今の時間からスタートの時間合計を表示。
まではできるのですが、途中停止などが何度も入ったりするので、さっぱりわかりません。また、日をまたいだりしてるので時間計算もうまくできません。
説明が下手ですが、イメージ出来たかたは教えて下さい。
よろしくお願い致します。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
これが
A B C
1 2012/9/7 2:00 1 スタート
2 2012/9/7 5:00 2 スタート
3 2012/9/7 10:00 1 途中ストップ
4 2012/9/7 11:30 3 スタート
5 2012/9/7 13:50 2 再スタート
6 2012/9/7 10:00 1 途中ストップ
7 2012/9/7 13:50 2 再スタート
8 2012/9/8 16:00 1 停止
9 2012/9/8 17:00 2 停止
機械ごとにシートを分けて
A B C D
開始時刻 停止時刻 停止種別 経過時間
2012/9/7 2:00 2012/9/7 12:00 一時
2012/9/7 13:00 2012/9/7 16:00 終了
のようなら簡単なのですけどねぇ。
CC_Tさんも危惧しているように、
記入漏れや記入間違いのチェックも含めて考えないと
危なっかしくて使えないとおもいます。
No.2
- 回答日時:
リストでダブりがあったりでおかしいですが、実データはそんなことないだろうという前提で回答します。
一時停止せずに再スタートとか、まさかあり得ないですよね?
機械の状態と、運転スタートからの積算運転時間が知りたいとして、時間の方は「基準時」とステータス変更時間の間で経過時間を計算し、スタートまで遡って積算させるロジックで行けるんじゃないかと。
以下、セル参照や行検索の部分は省略してるから、そのままVBAに入れても動きっこないですが、
ロジックの参考になるでしょうか?(^^;
~~~~~~~~~~~~~~~~~~~~~~~
'---宣言
dim 「基準時」 as date,「運転時間」 as date
dim 「機械」 as integer,「判断行」 as integer
dim 「表示」 as string
'---機械別の処理
for 「機械」=1 to 5 '<--リアルタイム更新しないなら、For~Nextループで済む
「基準時」=now '<--これはマクロ実行時を基準とする場合。
「運転時間」=0
「判断行」=当該機械の最新状況の入った行数 '<-これ、別ループで検索ね。
'---
判断:
Select case 判断行のステータス
case 停止
「表示」="停止中"
goto 次の機械
case スタート
「表示」="運転中"
「運転時間」=now-スタート時間
goto 次の機械
case 再スタート
「表示」="運転中"
「運転時間」=「基準時」-判断行の時間 '(暫定計算)
goto 次の行
case 途中ストップ
表示="一時停止中"
「基準時」=判断行の時刻
goto 次の行
'---
次の行:
「判断行」=当該機械の次のステータス変化行。 '<-これも、別ループで検索ね。
goto 判断
'---
表示更新:
状態表示セル=表示
運転時間セル=「運転時間」 ’←24時間越対応のため、セルの書式設定は[hh]:mmにして下さい。
'---
次の機械:
next 「機械」
'---
end sub
No.1
- 回答日時:
別のシートや別の表に、整理した表を作りましょう。
以下の表は、元の表を並び替えて、始動、停止の時刻を、2、3、5、6、8、9…29、30行目に繰り返して入力した物です。時刻は「日付と時刻を一緒に、yyyy/mm/dd hh:mmの形式で入力します。
4、7、10、13…行目には、予め、式を入力しておき、表示形式を「hh:mm」にして「時:分」の表示にします。
23行目も、式を入力したら、表示形式を「hh:mm」にして「時:分」の表示にします。
A B C D
1 1号機 2号機 3号機
2 始動 2012/9/7 2:00 2012/9/7 5:00 2012/9/7 11:30
3 停止 2012/9/7 10:00 2012/9/7 13:50
4 時間 以下の式1 以下の式2 以下の式3
5 始動 2012/9/8 16:00
6 停止
7 時間 以下の式4 以下の式5 以下の式6
(略)
29 始動
30 停止
31 時間 式は略 式は略 式は略
32 稼動時間 以下の式7 以下の式8 以下の式9
33 状態 以下の式10 以下の式11 以下の式12
式1
=IF(ISBLANK(B2),0,IF(ISBLANK(B3),NOW(),B3)-B2)
式2
=IF(ISBLANK(C2),0,IF(ISBLANK(C3),NOW(),C3)-C2)
式3
=IF(ISBLANK(D2),0,IF(ISBLANK(D3),NOW(),D3)-D2)
式4
=IF(ISBLANK(B5),0,IF(ISBLANK(B6),NOW(),B6)-B5)
式5
=IF(ISBLANK(C5),0,IF(ISBLANK(C6),NOW(),C6)-C5)
式6
=IF(ISBLANK(D5),0,IF(ISBLANK(D6),NOW(),D6)-D5)
式7
=SUMIF(B2:B31,"<2000/1/1",B2:B31)
式8
=SUMIF(C2:C31,"<2000/1/1",C2:C31)
式9
=SUMIF(D2:D31,"<2000/1/1",D2:D31)
式10
=IF(MOD(COUNTIF(B2:B31,">=2000/1/1"),2),"稼働中","停止中")
式11
=IF(MOD(COUNTIF(C2:C31,">=2000/1/1"),2),"稼働中","停止中")
式12
=IF(MOD(COUNTIF(D2:D31,">=2000/1/1"),2),"稼働中","停止中")
式7~9は、個々の始動から停止までの時間のみを抽出して合計する式です。
日付時刻として入力されている物か、始動から停止までの時間が計算された物なのかの判断は「データが2000年よりも小さいか?」で判定しています。
式10~12は「日付時刻として入力されている物を数えて、奇数なら稼働中、偶数なら停止中」と言う式です。
日付時刻として入力されている物か、始動から停止までの時間が計算された物なのかの判断は「データが2000年よりも大きいか?」で判定しています。
稼働中の機器は「NOW()」により現在時刻を使用して計算しているので、F9キーを押すと再計算されて、現在の稼働時間が表示されます。
回答ありがとうございます。
エクセルではchie65535さんのように稼働時間計算は作成できたのですが、1年分のデータを入力しているとどうしても、ファイルが重くなったり、後から日付を指定して表示出来なくて困ってしまったのでVBAで作成できたらと思い質問しました。
丁寧な回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 洗濯・クリーニング・コインランドリー 【止まってばかりの洗濯機…これって洗えてますか?】 ※長文です。すみません とても困っておりますので 4 2022/03/30 11:50
- 建設業・製造業 工場で安全装置を解除するアホがいて困る 1 2022/05/01 23:40
- 建設業・製造業 トヨタの期間工として働いているんですが、自分の出したうんこを機械の中に入れた瞬間、アラームが鳴って、 4 2022/12/26 23:21
- 統計学 確率について 会社ではある製品を生産しており、生産機会が3種類ある。製品はどれか一つの機会で作る。機 2 2022/05/30 18:33
- その他(生活家電) 機械的構造物商品の選定 1 2022/11/18 10:54
- その他(悩み相談・人生相談) 駐車場の管理会社とのトラブルについて相談させてください。 先日、24時間パーキングに24時間を超えて 4 2022/04/12 15:48
- 美術・アート ワンドロって基本的に1時間ぶっ通しでやるものなんですか? タイマーで計って、途中休憩などでタイマーを 1 2023/04/17 07:35
- 防犯・セキュリティ 車が停止したら、音で知らせる機械、道具が欲しい。 4 2023/02/16 09:59
- アクセサリ・腕時計 機械式の腕時計を初めて購入したのですが、秒針の流れ方や音といい、その高度なメカニカルさといい、これま 2 2022/05/08 15:07
- その他(ビジネス・キャリア) 今時の派遣社員って仕事が出来ないだけじゃなく計算も出来ないのか? 8 2022/07/22 20:53
このQ&Aを見た人はこんなQ&Aも見ています
-
【お題】大変な警告
【大喜利】「今このパソコンは大変危険な状態です」という警告メッセージを無視してパソコンを開いたら、こんなことが起こった
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
モテ期を経験した方いらっしゃいますか?
一生に一度はモテ期があるといいますが、みなさんどうですか? いまがそう! という方も、「思い返せばこの頃だったなぁ」という方も、よかったら教えて下さい。
-
洋服何着持ってますか?
洋服を減らそうと思っているのですが、何着くらいが相場なのかわかりません。
-
泣きながら食べたご飯の思い出
泣きながら食べたご飯の思い出を教えてください。
-
機械の運転時間帯を表すグラフを作りたい。
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・「これはヤバかったな」という遅刻エピソード
- ・初めて自分の家と他人の家が違う、と意識した時
- ・いちばん失敗した人決定戦
- ・思い出すきっかけは 音楽?におい?景色?
- ・あなたなりのストレス発散方法を教えてください!
- ・もし10億円当たったら何に使いますか?
- ・何回やってもうまくいかないことは?
- ・今年はじめたいことは?
- ・あなたの人生で一番ピンチに陥った瞬間は?
- ・初めて見た映画を教えてください!
- ・今の日本に期待することはなんですか?
- ・集中するためにやっていること
- ・テレビやラジオに出たことがある人、いますか?
- ・【お題】斜め上を行くスキー場にありがちなこと
- ・人生でいちばんスベッた瞬間
- ・コーピングについて教えてください
- ・あなたの「プチ贅沢」はなんですか?
- ・コンビニでおにぎりを買うときのスタメンはどの具?
- ・おすすめの美術館・博物館、教えてください!
- ・【お題】大変な警告
- ・洋服何着持ってますか?
- ・みんなの【マイ・ベスト積読2024】を教えてください。
- ・「これいらなくない?」という慣習、教えてください
- ・今から楽しみな予定はありますか?
- ・AIツールの活用方法を教えて
- ・最強の防寒、あったか術を教えてください!
- ・歳とったな〜〜と思ったことは?
- ・モテ期を経験した方いらっしゃいますか?
- ・好きな人を振り向かせるためにしたこと
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
DataGridViewでyyyy/MM/dd
-
VisualBasic6.0のFormat関数で...
-
エクセルのVBAで日付を検索し転...
-
VB 日付範囲チェック
-
ユーザーフォームのラベルに日...
-
ExcelVBAでSQLサーバの日付時刻...
-
Eclipseの対応する括弧の強調表...
-
【VBA】土日をスキップして日付...
-
Excel VBA で入社日から今日迄...
-
VBA 日付、未来の日付はエラー...
-
日付の変換
-
JSPからYYYYMMDDで日付入力する
-
C++で日付判定を行いたい!!
-
和暦表示
-
VB6.0 のformat関数について
-
システム日付とは?
-
テキストボックスにカレンダー...
-
VBAで日付入力しているのですが
-
JQueryのfullcalendarを使って...
-
Insertについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAで日付を検索し転...
-
DataGridViewでyyyy/MM/dd
-
Eclipseの対応する括弧の強調表...
-
VisualBasic6.0のFormat関数で...
-
ユーザーフォームのラベルに日...
-
システム日付とは?
-
テキストボックスにカレンダー...
-
VBAで当月の1日を表示するには...
-
【VBA】土日をスキップして日付...
-
コンボボックスに日付を表示する
-
【Excel VBA】条件に合った行の...
-
VBAで日付入力しているのですが
-
今日より前の書き方 マクロ
-
3人のじゃんけんのプログラム
-
「eclipseで作るカレンダー(ス...
-
指定した日付が、その月の第何...
-
VBでDate型の大小比較がうまく...
-
VBA 日付・時刻の判別 時刻を認...
-
テキストボックスに今日の日付...
-
DateTimePickerを西暦表示にす...
おすすめ情報