プロが教えるわが家の防犯対策術!

エクエルで月ごとに表を作成してシート名を年月でつけています。
そのうえで前月のシートと今月のシートの表を比較し、前月よりも少ない数値を赤で表示しようとしています。
来月は今月のシートをコピーし、同じように前月(今月)と比較し同じように少ない数値を赤で表示したいのですが、参照するシート名が変わるので、条件付き書式で対処しようとしたのですが、どのように条件づければよいか分からなくなりました。
条件の設定の仕方または条件付き書式でなくてもかまいません何か良い方法があれば教えてください。

A 回答 (2件)

こんにちは



>参照するシート名が変わるので、条件付き書式で対処しようとしたのですが、
>どのように条件づければよいか分からなくなりました。
シート名を取得できれば、質問者様ご自身であとの設定はできるものと想像しました。

シート名をどのように付けているのか不明ですが、なんらかの規則性があるものと推測します。
例えば「2023年05月」とか「2023.05」あるいは「5月」とか・・


No1様の回答にあるTODAY()関数を利用して「前月」のシート名を生成するのが簡単ですが、TODAY()関数を使うと、同じシートであっても、翌月になると参照するシートが変わってしまい、おかしなことになりかねません。
恒久的に設定するには、自分のシート名から前月のシート名を作成して、それを元にINDIRECT関数で「前月の同じセル」と比較するようにする必要があります。
ちなみに、自シート名を取得するだけなら
 =MID(CELL("filename",A1),FIND("]",CELL("filename",A1))+1,99)
などで取得することができます。
後は文字列操作で「前月のシート名」を算出すれば可能でしょう。
もしも、自シートのどこかにその月の日付を示すセルが存在するのなら、シート名を参照するよりも、そちらから算出する方が簡単だと思います。


一方で、INDIRECT関数は揮発性関数ですので、再計算が頻発することになるため、大量に使用した場合はPCの性能によっては反応が遅くなる可能性があります。
設定するセル範囲やPCの性能に依存しますので、ほとんど気にならない場合も多いとは思いますけれど。

これを避けたい場合は、「マクロを利用して条件付き書式を設定する」方法が考えられます。
条件付き書式に設定する内容は
 =前月のシート!A1>A1
のような簡単な内容ですが、非揮発性関数として設定できるので、対象セルが変化した場合のみ再計算がされることになります。
「前月のシート名」さえ計算できれば比較的簡単なマクロですむ内容ですが、質問者様がマクロを使える(作成できる)ことが必要になります。


とはいうものの・・・
各月同じ形式のシートだと想像しますので、手作業でシートをコピーし、条件付き書式の編集でシート名を編集すれば済む話なので、1年分をまとめて作成しても、数分もかからない作業ではないかと思いますけれど・・
(実は、この方法が一番のお勧めです)
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます

お礼日時:2023/05/08 12:49

条件付き書式を使って、前月のシートと今月のシートで同じセルを比較し、前月よりも少ない数値を赤で表示する方法は以下の通りです。



条件付き書式を設定したいセル範囲を選択します。

「条件付き書式」を選択し、「新しいルール」を選択します。

「ルールの管理」ダイアログボックスが表示されたら、「使用する式を選択する」を選択し、以下の式を入力します。

=INDIRECT("'"&TEXT(TODAY(),"yyyy年mm月")&"'!"&ADDRESS(ROW(),COLUMN()))<INDIRECT("'"&TEXT(DATE(YEAR(TODAY()),MONTH(TODAY())-1,1),"yyyy年mm月")&"'!"&ADDRESS(ROW(),COLUMN()))

※ 上記式中の「yyyy年mm月」は、対象のシート名に合わせて変更してください。

「書式」をクリックし、フォントの色を赤に設定します。

「OK」をクリックして、条件付き書式を設定します。

この方法で、今月のシートと前月のシートを比較し、前月よりも少ない数値が赤で表示されます。来月には、今月のシートをコピーした後、式の中の「MONTH(TODAY())-1」の部分を「MONTH(TODAY())-2」に変更することで、同じように前月と比較して赤で表示することができます。
    • good
    • 0
この回答へのお礼

早速のご回答ありがとうございます

お礼日時:2023/05/05 18:43

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