- ベストアンサー
EXCELの自動計算で特定のセルのみ自動計算をしない設定方法はあるか
- EXCELの自動計算で特定のセルのみ自動計算をしない設定方法について質問します。共有しているEXCELファイルのトップ部分にファイルの更新時間を表示させていますが、このセルのみオプションの自動計算の「手動(保存時に再計算)」にしたいです。
- 共有しているEXCELファイルの特定のセルのみオプションの自動計算を無効にする方法について質問です。ファイルの更新時間を表示するセルは、オプションの自動計算が自動になっているため、EXCELを開くたびに再計算されます。他のセルは自動計算してもらいたいので、このセルのみ手動で再計算する方法を教えてください。
- 共有しているEXCELファイルの特定のセルのオプションの自動計算を無効にする方法について教えてください。ファイルの更新時間を表示するセルはオプションの自動計算が自動になっているため、EXCELを開くたびに時間が再計算されてしまいます。他のセルは自動計算してもらいたいので、このセルのみ手動で再計算する方法があれば教えてください。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 >ただ、私が欲しい事柄は、エクセルファイルを上書き保存したときに >更新日時を表示しているセルにその時の日時を変更したいと言う事なので、 そういうつもりで作っています。 ただし書きを付けるというのは、ダメだったとおっしゃっているのでしょうか? >「エクスプローラから取得できる更新日時」ですと、また更新前の時間に戻ってしまいませんでしょうか? この意味が良く理解できていません。なぜ、更新前の時間に戻るのでしょうか?実害のないコードですから、試してみた上で問題が発生しているなら理解できるのですが、使った様子もないままに、同じ内容を繰り返し要求されるとなると、こちらは、ご質問者様の反応に疑問を持ってしまいます。 エクスプローラから取れるプロパティには、 作成日時、更新日時、アクセス日時 というものがあります。その中の更新日時です。保存した後に、それが、更新前に戻るということはありえません。 補足の最後に、再度要求していますが、 >(更新日時を表示しているセル<A1>のみ、オプションにある手動<保存前に再計算>をしたいのです) 現実はに、保存前にその部分だけ再計算させるということなら、 ユーザー定義関数は一切やめて、以下のように、ThisWorkbook モジュールに保存の際に走るマクロを置くことになります。 Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) With CreateObject("Scripting.FilesystemObject") Set objFile = .GetFile(ThisWorkbook.FullName) Worksheets("Sheet1").Range("A1").Value = Format$(objFile.DateLastModified, "yyyy/mm/dd hh:mm:ss") End With End Sub ということになります。保存の際に、ひとつのセルだけ再計算させて、他は再計算させないというようなこと自体は、Excelとしては、無意味なことのようにも感じますが、一体、どのようなことをしているのでしょうか。 私が書いていることに不安や疑いを持って実行できないようでしたら、VBAやマクロのご使用はお勧めできません。私は、良心を持って回答をしている以上、100%の保証も、「自信あり」の表示もしません。万が一のご希望どおりでない可能性も加味して回答しています。どうぞ、その点をご理解になって、ご判断ください。
その他の回答 (3)
- imogasi
- ベストアンサー率27% (4737/17069)
質問者は何を以って、ファイル更新されたと見るのか、ということではないですか。単純に安易に=NOW()をセルに入れるのでなく、質問者がイメージする「データが変更されたとき」、その日付を、その質問のセルの日付を変える、と考える(改める)と良いのでは。 例えば http://www.nurs.or.jp/~ppoy/access/excel/xlM039.html のような記述(問題)がありますが、それは役立ちませんか。 シートのChange イベントは、 セルにデータを入力されると該当する。 VBAで値を変えても該当しない。 自動計算で値が変わっても該当しない。 設定の変更などは該当しない。 コピー貼り付けは該当する。 ようなのでこれを捉えるのが一番近いかなと思うが。
お礼
情報提供ありがとうございました。また、参考URLもありがとうございました。 私が欲しい事柄は、エクセルファイルを上書き保存したときに 更新日時を表示しているセルにその日時を変更したいと言う事なのです。ある範囲を変更したとかでは無く、単純にファイルを上書き更新した時の日時が欲しいのです。 (更新日時を表示しているセル<A1>のみ、オプションにある 手動<保存前に再計算>をしたいと言うことです)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 以下は、ファイルから更新日時を出す関数マクロです。 エクセルのプロパティとは若干違う可能性があるけれども、エクスプローラから取得できる更新日時とは一致しているはずです。 '------------------------------------------- '標準モジュール Public Function LastModifiedTime() As String '更新時間 Dim myF As String Dim objFile As Object myF = Application.Caller.Parent.Parent.FullName With CreateObject("Scripting.FilesystemObject") Application.Volatile Set objFile = .GetFile(myF) LastModifiedTime = Format$(objFile.DateLastModified, "yyyy/mm/dd hh:mm:ss") End With Set objFile = Nothing End Function '------------------------------------------- ※標準モジュールへの取り付け方: Alt + F11 (Altを押しながらF11)を押すと、Visual Basic Editor 画面が出てきます。 次に、メニューの[挿入]-[標準モジュール]と開けて、クリックすると、画面が現れますので、以下のコードを貼り付けて、 Alt + Q で、画面を閉じます。 '------------------------------------------- ワークシートには、どこにでもよいので、 = LastModifiedTime() とします。 ファイルを開くと、最初このコードが読み込まれないので、#NAME! とエラーが発生してから、ファイルを読んで、元のファイルから、更新日を探してくるという仕組みです。もし、エラーを見たくないのですと、アドインなどにしなくてはなりません。
お礼
マクロをご提供いただきましてありがとうございます。 私ではゼッタイに思い浮かばないマクロです。 (マクロは無知なもので…。) ただ、私が欲しい事柄は、エクセルファイルを上書き保存したときに 更新日時を表示しているセルにその時の日時を変更したいと言う事なので、「エクスプローラから取得できる更新日時」ですと、また更新前の時間に戻ってしまいませんでしょうか? (更新日時を表示しているセル<A1>のみ、オプションにある 手動<保存前に再計算>をしたいのです)
- hana-hana3
- ベストアンサー率31% (4940/15541)
>ある特定のセルのみ自動計算をしないように設定することは そのような設定はできません。 NOW()関数は、どうやっても自動計算されてしますので、別の方法(マクロ等)で記入すべきかと思います。 自動計算して貰いたく無い場所に、自動計算する関数を使うのは仕様上の誤りがあると思います。 また、Ctrl + [;] [スペース] Ctrl + [:] という手順で記入すれば、NOW関数と同じ形式で入力出来ます。
補足
そうなんですか…。設定できないんですね。 マクロはどうやって記入すれば良いんでしょうか?マクロは全くの無知なので…。 Ctrl+[;],[:]等のキー操作は全く知らない他の方々に対して周知させるのが難しいです。
お礼
Wendy02さん こんばんは。 まず始めに私の補足部分のコメントで不愉快な感じを受けさせてしまって申し訳ありません。 私が申し上げた >「エクスプローラから取得できる更新日時」ですと、また更新前の時間に戻ってしまいませんでしょうか? と言うのは、エクスプローラの更新日時を参照するとなると当該ファイルを開く前回に更新した日時を参照すると思っていたので、開いて編集した後の上書き保存時にその前回更新日時が表示されてしまうと思ったからなのです。頭の中では上書き保存→エクスプローラの更新日時を参照→エクスプローラの更新日時の更新と言う順番だと思ったのです。 しかし、今回教えていただきましたマクロで「まさしく、コレ!」と言う結果が出ました。嬉しいです。 また、「不安や疑いを持って・・・」とありますが、とんでもないです。私の拙い文章説明、申し訳ありませんでした。 Wendy02さんのご良心、とてもありがたく思っております。 本当にありがとうございました。
補足
お礼で申し上げるのを忘れてしまいました。 >保存の際に、ひとつのセルだけ再計算させて、他は再計算させないというようなこと自体は、Excelとしては、無意味なことのようにも感じますが、一体、どのようなことをしているのでしょうか。 とのことですけど、会社にてあるファイルを共有して利用しております。その共有ファイルをweb上に載せようとしていて、ある商品の在庫を更新する必要があるのです。その商品の横には商品コードに基づいた価格を自動で引っ張ってくる様にしているのですが、この価格を自動で参照するところでvlookupを利用して自動再計算をさせる必要があります。しかし、そのファイルは前回いつ更新してあるものなのかを一目で知りたいと言う話になりました。=now()ですとエクセルを開いた瞬間の日時が表示されてしまって前回更新日時が分からないので、ここのセルのみを自動再計算させず、上書き保存する時にその時の時間を表示するようにしたかったのです。