【初月無料キャンペーン中】gooドクター

タイムカード打刻情報がサーバに蓄積されるようになっています。
そのCSVをエクスポートして集計したいのですが、
当月集計と年間集計を出したいです。
デイリーチェックしたいとの事なので、毎日CSVをエクスポートしては
取り込んで再集計されるようにしたいです。
CSVを選択してCSVシートに反映されるマクロは作ってあります。
ただ、当月集計と年間集計を出せるようにするにはどうしたら良いでしょうか?
ざっくりしすぎてすみません。
今日だったら当月が3月で、年間集計は1月~3月ですが、
来月になったら当月が4月で、年間集計は1月~4月となります。
ピボットテーブル使うなりすればよいと思いますが、
月が替わるごとに自動的に当月が変わるようにするにはどんなやり方が良いでしょうか?

質問者からの補足コメント

  • どう思う?

    システムは年と月を指定してDLする仕様です。
    なので過去の訂正などがない限り当月分しかDLしない運用が良いと思ってます。
    日々DLして最新に更新したいのですが現在で言うと、
    1月分と2月分はDL済みで、3月は1日ずつUpdateされてる事になります。
    これは手動、エクセルへの取り込みも手作業です。(オート化も考えていません)

    CSV取込すると追記ではなく、全更新になります。
    1月、2月、3月・・・と1シートに積み上げで更新していくべきか、
    シートごとに分けるか、どれが後々便利なのか、から検討中です。

    例えば、2021年フォルダに各月分のCSVを入れておいて、
    フォルダ内のファイルを全て読み込んで全体更新するマクロにするのが良いかもしれません。
    (そのマクロは自分で用意できます)

    手法の方からもアドバイス頂けると助かります。

    No.2の回答に寄せられた補足コメントです。 補足日時:2021/03/12 16:21
gooドクター

A 回答 (3件)

こんにちは!



VBAでの処理とは異なりますが、エクセル2016以降に標準機能のパワークエリでデータをくっつけてピボットテーブルで表示させる方法はどうでしょうか?

ピボットテーブルなので、当月、年累計など粒度を変えて集計ができます。

月毎のデータファイルをあるフォルダに入れ等月データは上書きします。

各勤怠データには日付があると思うので、今日の日付から一日引いた日付「昨日」で抽出すれば最新のデータとなります。

https://kouritu.net/excel-powerquery-data-migrat …

https://sakatakablog.com/excel/630/
    • good
    • 0
この回答へのお礼

ちょっと今まで知らなかった画期的な方法?の様に驚いています。
まだ熟読してませんが取り急ぎお礼まで。

メインExcelの隣にデータCSVを入れるフォルダを置くか、
フォルダの中にメインExcelとデータCSVを入れるかも検討必要ですね。
そのフォルダの置き場所を変えても相対的に動作するのか、パスの再設定が必要なのかと疑問がまだ残っていますが、調べてみます。
また別のVBAの必要性があるか不明ですが共存可能ですかね?

お礼日時:2021/03/14 16:50

こんにちは



>打刻情報がサーバに蓄積されるようになっています。
>そのCSVをエクスポートして集計したい
サーバに何らかのリクエスト(「年月」など)をすると、対象のCSVデータがエクスポートされるような仕組みができているということでしょうか?
「年間集計」というのが3か月分というのもよくわかりませんけれど、とりあえずその期間を設定できれば良いものと解釈しました。

>CSVシートに反映されるマクロは作ってあります。
とのことなので、日付を変数に取得できればよいのでしょうか?
今日の日付は、(PCの日付設定が正しくされていれば)Now関数で取得できます。
わかり易く、「1日ベース」に変換するなら、
 d1 = DateSerial(Year(Now), Month(Now), 1)
 d2 = DateAdd("m", -2, d1)
とすることで、
 d1に今月の1日の日付
 d2に2か月前の1日の日付(=期間のスタート月)
が取得できます。(両方とも日付型の値です)

リクエストがどのような形式なのかは不明ですが、上記の値を利用して、Format関数などで適切な形式に変換すれば宜しいのではないかと想像します。


※ 「当月」というのを今月と解釈しましたが、今月のデータって月末にならないと全部はそろわないものと思います。(「集計」というのがどのようなものなのか不明なので…)
もしも、「当月」というのが前月の意味であるのなら、d1を求める際にMonthの項を-1するようにしておけばよいでしょう。
この回答への補足あり
    • good
    • 0
この回答へのお礼

ありがとうございます。
分かりづらくてすみません。
期間指定はできないのです。年と月を指定して1か月分だけDLできるシステムです。補足に書かせていただきました。

>※ 「当月」というのを今月と解釈しましたが、今月のデータって月末にならないと全部はそろわないものと思います。

例えば給与計算が目的なら、4/1になってから3月分をDLしないと意味ないですね。
でもこの集計はお金には全くタッチせず、残業時間等を管理したいのです。
日々チェックして、規定を超えそうな人にアラートを出せるように毎日管理できる仕組みを作りたいのです。

お礼日時:2021/03/12 16:26

先月末日、


=DATE(YEAR(TODAY()).MONTH(TODAY()).0)

此と 比較して、
大きければ 当月。
    • good
    • 0

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

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング