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

どうしても一人で解決できず質問させていただきます。
図はイメージで実際のものとは異なります。
左側の元データがあり、このデータは4月1日から3月31日まで上書きされるものです。
例えば4月4日時点の数値、13日時点の数値、5月7日時点の数値といった風にどんどん累計が上書きされます。月末の数値が確定されたら、毎月月末の数値で上書きされます。(図参照)

そこで、図右のように各月の数値を関数をもって自動集計したいんですが何か良い方法はありませんか。

関数を設定してその関数は月末を迎えた時点で自動で関数から数値に代わすような仕組みとかってないですかね。

何か良い手はありませんでしょうか。
どうかご教授よろしくお願いいたします。

「数式→数値固定する方法ありますか?」の質問画像

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

  • ありがとうございます。
    月毎に集計してもらうように依頼しましたがシステム上無理だと却下されました。
    月ごとの値が出ればさむなんとかって関数で対応は可能(事実月単位で出るものはそうしている)ですが、そこが難儀です。
    さらにシステム(更新者)のデータを続くことができないため、今ある状況下で対応する必要があるのです。
    値貼り付けはこちらでは可能ですが元のデータがつつけないため、4月は良くても5月からは都度そのデータを続く必要があります。それはこちらとしても不可能なため質問させていただきました。

    No.1の回答に寄せられた補足コメントです。 補足日時:2023/06/18 22:32
  • うーん・・・

    システムからの出力タイミングの話で、月末締めは出るものの、例えば翌月月初更新時には上書きになります。
    今やろうとしているのは全自動集計をすることです。システムから出力されるデータに自動集計のシートを作成追加して、毎月の集計表を作成しようとしています。
    人手をかけるのであればいくらでも可能な話ですが、人手をかけずにシステムで完結する方法を考えているのが現状課題です。よろしくお願いします。

    No.2の回答に寄せられた補足コメントです。 補足日時:2023/06/18 23:37
  • ご回答いただいた皆様
    ありがとうございました。
    あきらめがつきました。VBA対応可能かシステムに相談中で、対応可能ならVBAにて処理しようとおみます。

      補足日時:2023/06/24 16:51
  • うれしい

    ありがとうございます。月の2日以降に自動的に控えを作成する方法をご教授お願いします。
    それが可能でしたら完全自動化が可能と思われます。よろしくお願いいたします。

    No.4の回答に寄せられた補足コメントです。 補足日時:2023/06/24 16:54

A 回答 (5件)

No4です。



>月の2日以降に自動的に控えを作成する方法をご教授お願いします。
すでに既出の回答にある通りです。(No3様の回答も参照してください)


VBAだと直接実行できないかもなので、VBSをタスクスケジューラに登録しておけば良いですね。
(もちろん、VBS以外の方法でもかまいません)
どのようなタイミングが良いのかは実際の環境にもよりますが、更新後即時に控えをさ作成しなくても良さそうなので、1回/1週間などの間隔でも充分ではないでしょうか。
(極端に言うなら、1回/月でも良いのかも)

システムからの出力で必ずクリアされるようなセルがあれば、そこをフラグ代わりに利用するのが良いでしょうし、無ければ必ず出力されるセルで代用しても良いでしょう。
・最初に、このチェック用セルをチェックして、フラグが立っていれば何もしない。
 (実際は、識別可能であればどのようなフラグでも良いです)
・クリアされていれば、ファイルをオープンして控えを作成し、
 フラグを立てておく。
といった感じの処理を登録しておけば実現できるでしょう。

フラグを設けるとしたのは、当該エクセルファイルを毎回開くと若干時間が掛かるので、開かずにチェックだけを行って、処理の必要があればブックを開くという方が効率的かと想像したからです。
そんなことには構わないのであれば、毎回ブックを開いて直接確認する方式にしておけばフラグは不要になります。

「ブックを開かずにセル値を取得する」のにはExcel4マクロといわれるものを利用すれば可能です。
(1セルの値の取得だけなら、こちらの方が速くできますので)
ただし、エクセルアプリケーションオブジェクトを起動しなければなりませんので、その時間だけは必要になりますけれど。
    • good
    • 0

No2です。



>例えば翌月月初更新時には上書きになります。
固定出力ということですよね?
であるなら、月の2日以降に自動的に控えを作成するようにしておきさえすれば、解決すると考えられます。

No3様の回答にもありますが、完全自動化するのなら、タスクスケジューラ等を利用するのが良いかも知れません。
電源が落ちたままという可能性のないPCで実行する必要がありますけれど・・
とはいえ、1回/月で実行できれば良いので、必ずしも毎日電源が入る保証も必要ないでしょう。
(極端に言えば、連続1か月間電源が入らないようなことが無ければよさそう)
この回答への補足あり
    • good
    • 0

固定値のデータを吐き出すような場合、セル参照は無理なので、VBAを使うしか方法はないと思います



また、VBAをを使ってデータベースとして書き出し、タスクスケジューラで、定期的にPowerShellで上記VBAを実行するようにすれば、完全自動化は可能だと思います


・VBAでデータの読み込み、書き込みをする
https://daitaideit.com/vba-get-write-db/

・PowerShellでVBAを定期的に実行する
https://www.excellovers.com/entry/taskschedule01 …

この辺りを参考にして、作りこむしかないと思います
    • good
    • 0

No1です。



>月毎に集計してもらうように依頼しましたがシステム上無理だと却下されました。
何らかのシステムからの出力ということですよね?

No1の回答は「月毎の集計を出力データにする」などとは言っていないつもりです。
「上書き」しないようにできさえすれば、後の加工は何とでもなるでしょうと書いたつもりです。
毎月出力されるデータをきちんと揃えられれば、それを元に計算すれば良いだけなので、関数でもなんででも簡単にできるでしょう。

システムが同一ブックの同一シートの決まった位置にしか出力しないというのであれば、それを放置せずに、別シートに保管するなり、別ブックに保管して控えを作成することを考えれば良いのではないでしょうか?
シートの控えを取る程度であれば、マクロでも簡単に自動化できると思います。

一方で、普通のシステムならシステムからの出力を同じブックの固定位置にしか出力できないというようなことはなく、毎月個別のブックで出力されるとかブックは固定でもシートを変えるとかしているのではないでしょうか?
もしもそうであるなら、控えのブック等を作成する必要もなくなります。
単に、「自動作成したいシート」に計算で算出させれば良いだけですので。
この回答への補足あり
    • good
    • 0

こんにちは



>各月の数値を関数をもって自動集計したいんですが
>何か良い方法はありませんか。
エクセルの関数は、セルや定数を用いて計算するものですので、参照されているセルの値が変われば、算出結果もそれに応じて変化します。
計算方法を「自動」にせずに「手動」にしておけば、即時反映されることは無くなりますけれど・・・


>関数を設定してその関数は月末を迎えた時点で自動で関数から
>数値に代わすような仕組みとかってないですかね。
手操作でも良ければ、比較的簡単にできます。
 1)固定値化したいセル範囲を選択しコピー
 2)そのままで、値をペースト
することで、関数を固定値にすることができます。
月に1回であるなら、その程度でも対応できるのではと思います。


>何か良い手はありませんでしょうか。
>どうかご教授よろしくお願いいたします。
質問者様がマクロを作成できるようであれば、マクロを利用することである程度まで自動化することは可能と思われます。
ただし、完全に自動化しようとするなら、実際のシートがどのように更新され、マクロはどのようなタイミングで実行されるべきか等、充分な事前検討が必要と考えられます。


もしも、更新入力が1回/月とかであるのなら、そのデータを「上書き」ではなく、別の列に記載するようにしておきさえすれば、ご質問のような問題は発生しませんし、お求めのデータに変換するのも容易なことだと思いますけれど・・
ですので、この方法が一番のお勧めです。
どうしても、現状のように「2列目に最新データが1列だけ表示されていなくてはなくてはダメ」と言うのであれば、別に「閲覧用シート」を作成しておいて、関数等でご提示のような表示となるシートにしておけば済むことと思います。
この回答への補足あり
    • good
    • 0

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