質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

7060閲覧

入退室チェックリストのマクロの組む方法

退会済みユーザー

退会済みユーザー

総合スコア0

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

1クリップ

投稿2017/06/23 02:39

入退室のログデータから、入退室の整合性が取れていない人を探し出したいですが、まず以下のように出力したいと考えています。一か月分のデータですが、省略しいます。

(テキストファイルから読み込んでシートに張り付けた)ログデータ :

日付 氏名 入退室
2017/06/01 09:12:11 山田 太郎 入室
2017/06/01 10:12:11 山田 太郎 退室
2017/06/01 13:12:11 山田 太郎 退室
2017/06/01 14:12:11 山田 太郎 退室
2017/06/01 15:12:11 山田 太郎 退室
2017/06/01 11:09:11 入江 共久 入室
2017/06/01 12:12:11 入江 共久 退室

.
.
.
2017/6/30 15:00:01 入江 智久 入室
2017/6/30 16:00:01 入江 智久 退室

出力形式

日付 氏名 入室時刻記録 退室時刻記録
2017/06/01 山田 太郎 2017/06/01 09:12:11 2017/06/01 10:12:11
2017/06/01 山田 太郎 2017/06/01 13:12:11
2017/06/01 山田 太郎 2017/06/01 14:12:11
2017/06/01 山田 太郎 2017/06/01 15:12:11
2017/06/01 入江 共久 2017/06/01 11:09:11 2017/06/01 12:12:11
.
.
.
2017/6/30 入江 智久 2017/6/30 15:00:01 2017/6/30 16:00:01
どのようにマクロを組めばいいかわかりません、ロジックのところが分からないです。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

まず・・・

お困りなのはわかりますが、teratailでは丸投げの質問は推奨されていません。
多少なりとも自分なりに試行錯誤した内容を記載しましょう。
多少の努力もしていないのであればそれはただのクレクレ君です。
このサイトを趣向(運営の方針)をよく理解したうえで投稿しましょう。

アドバイス

ロジックの組み方がわからないということですね。
まずはやりたいこと実現するためにどうすればいいか、順を追って整理するところからはじめてはどうでしょうか。

例えばマクロではなく手作業で目的のものを作る場合、どんな手順で、どんな判断をしながら作成していくか。
それを書き出してVBAのロジックにあうように変えていけばいいと思います。

たぶん、今回やりたいことをロジック的に書くと以下のような内容になるのではないかと思います。

①データを時間順に並べる ②データを氏名でフィルタリングする ③入室/退室をチェックしながら出力シートに出力する 【入室の場合】 ③-a 行を変えて出力する(※) 【退室の場合】 ③-b1 直前のデータが入室であれば、行を変えずに出力する ③-b2 直前のデータも退室であれば、行を変えて出力する(※) (※)行を変えて出力するときには時間や氏名も一緒に出力します

参考になれば幸いです。

投稿2017/06/23 03:01

編集2017/06/26 01:02
jawa

総合スコア3013

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Tomohiro12

2017/06/23 04:55

>お困りなのはわかりますが、teratailでは丸投げの質問は推奨されていません。 >多少なりとも自分なりに試行錯誤した内容を記載しましょう。 >多少の努力もしていないのであればそれはただのクレクレ君ですので、このサイトを利用する資格なしです。 このルールが明確に記載されたページを教えてください
jawa

2017/06/23 05:26

推奨していない質問 https://teratail.com/help/avoid-asking 質問を投稿する際に上記の「非推奨の質問」についてのリンクがあり、その中で以下のような記載がされていると思います。 >・コードをください・デバッグしてください等の丸投げの質問 >何かを作りたいのでコードを書いてほしい、学校の課題を解いてほしい等の質問は、具体的にプログラミングで困っている質問ではないと考え、推奨していません。 >問題や質問は実際に調査や作業に取り組み、具体的なところで生まれると考えるためです。 >まずは実際に作業に取り組み、つまづいたところで投稿をしてみてください。 また、マイナス評価の指摘項目にも「やりたいことだけを記載した丸投げの質問」というものがあります。 今回の質問内容では「こういう表を作りたいです。自分ではわからないので今のところ何もしていませんが、ロジックを組んでください」という丸投げの質問と取られてもおかしくないということです。 ただ、今回の質問はコードを組む前のロジックを考える部分でつまづいているようでしたので、私は「努力の経過は記載されていないけれど何もしなかったわけではないのだろう」と受け取りました。 そういう意味でアドバイスを記載しています。 ですので、次回からは少しでも自分なりに試したこと、調べたことがあるならそれも記載して欲しいです。 それがなければいつ「やりたいことだけを記載した丸投げの質問」と受け取られても仕方がないと思いますので。
Tomohiro12

2017/06/26 00:44

スミマセン、私はこの問題の質問者ではないのですが >お困りなのはわかりますが、teratailでは丸投げの質問は推奨されていません。 >多少なりとも自分なりに試行錯誤した内容を記載しましょう。 の部分については、私も問題ないと思いますが >多少の努力もしていないのであればそれはただのクレクレ君ですので、このサイトを利用する資格なしです。 私の想像通り、推奨されない ・禁止ではない ・回答してくださる方が少ない ・回答者が嫌な気持ちになる 事があっても、「このサイトを利用する資格なしです。」 と決めつけるのはいかがかと思います まず >お困りなのはわかりますが、teratailでは丸投げの質問は推奨されていません。 >多少なりとも自分なりに試行錯誤した内容を記載しましょう。 のみ質問者に対し指摘し 質問に追記を促すだけでよいのではないのでしょうか?
jawa

2017/06/26 01:19 編集

単に運営側が推奨していない(やってほしくない)と言っているだけで、禁止しているわけではないから問題ないということですね。 非推奨を承知で投稿するというのもどうかと思いますが、「資格なし」は言いすぎた部分があったと思いますので訂正しておきます。 なお、前述のとおりiriesatoshiさんが今回の質問に対して何もしてないと言っているわけではありませんので、誤解のないように。 論点がずれていってしまいそうですが、言いたいのは「やったことがあるならそれもちゃんと伝えましょう」という部分です。
guest

0

ベストアンサー

私も昔、accessの入退室記録から出退勤のデータ作成をしたことがあります。
以外に難しいのですよね・・・

基本的には、人名と日付をキーに入室と退室がペアになるようにデータを管理します。
時刻順にソートされてると思いますので、入室や退室が連続したら新規のレコードを作成するようにします。

あと、いきなり結果を出力しないで内部データ(配列など)で管理するのがコツです。

最後に、データを人名ごとに日付順で出力すれば完成です。

ちなみに・・・24時すぎるようなケースがあると、日付の区切り時刻の考慮が必要です。
いわゆる翌日の6時(30時)までは同一日付の扱いとするてきな。

投稿2017/06/23 02:54

momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問