• ベストアンサー

エクセル 日付が変わると同時にセルを空にしたいです

こんな事が出来るのかも分からないのですが… エクセルでB4にTODAYで日付が表示されるようにしています。 その日付が変わるとB5~B32のセル内を空にしたいのですが可能なのでしょうか? マクロなどは使った事がなく全くわかりません…。 関数などでそういった設定は出来るのでしょうか? 出来れば本日中にお答えいただければ幸いです! 分かりにくい文面で申し訳ありませんが、よろしくお願いいたします!!

質問者が選んだベストアンサー

  • ベストアンサー
  • excelist
  • ベストアンサー率56% (13/23)
回答No.1

今のままでは無理だと思われます。 というのは「日付が変わると」という部分の判断が今のままでは難しいからです。文面から判断するに「前回のブック保存時の日付」が「今回ブックを開いた日付」と違う場合(つまり翌日以降)にセルを空白にしたいのだと思います。今だと「前回のブック保存時の日付」の情報がどこにもないと思います。 それと、関数で実現するのは難しいです。 関数で「空白に見せる」ことは可能ですが「空白にする」というのは無理だからです。 以上を踏まえると 1.ブック保存時に現在日付を自動でどこかのセルに書き込む 2.ブックを開いたときに現在日付と保存日付を比較して日付が異なっていたらセルをクリア という2種類のマクロが必要になると思います。 そこそこ知識がないと上記の処理は作れないと思いますので、お手軽にやりたいのであれば「マクロの記録」を使ってB5~B32を選択⇒DELETEキーで空白にする、という動作を記録して、セルをクリアしたいときにはそのマクロを実行する、というのがよいかも知れません。

sanche1012
質問者

お礼

お答えいただきありがとうございました。 色々勉強していきたいと思います!

sanche1012
質問者

補足

丁寧なご返答、ありがとうございます。 やはり難しいんですね…。 一日一度は確認の為に開かなくてはいけないデータを全員がちゃんとチェックしているかの確認の為にB5~B32(C列に名前が入っています)に『○』を付けるようにしているんです。 後日のチェック時にその日の夕方にその『○』は消すようにしているのですが私が帰った後や出社前に確認する方がいる為正午に消えれば…と思い今回質問させていただきました。 この様な場合、他に良い方法はありそうでしょうか? 分かり難い文面で申し訳ないです… よろしくお願いいたします。

その他の回答 (3)

回答No.4

皆さんもおっしゃっているとおり、どこかのセルをクリアする関数、数式というのはないと思います。 となるとマクロですが、ただ、消すことはできても、次のことが気になります。 ●質問者さんがチェックされた後に入力された○印は、(それ用のマクロを同時に使わなければ)記録に残らない。 ●自動にするということは、他の誰がファイルを開いたとしても、比較対象の日付とその日の日付が異なっていれば、データは消えてしまう。(マクロ有効で開けば) これではちょっと嫌だなということでしたら、次のような運用にするのはいかがでしょうか?こうすれば、勝手に消える心配もなく、ゆっくりチェックなどの作業ができます。 1.○印を入力する列を、2つ用意しておく。 2.左の列には「~6/16」、右の列には「6/17~」といった日付(質問者さんによるチェック日)を上部にでも表示しておく。 3.社員の皆さんには、該当するほうの列を選んで入力してもらう。

sanche1012
質問者

お礼

お答えありがとうございます! 実はこの質問をさせていただいた後に自分なりに考えて実は2列作るという方法を使っていました! 私の方法もあながち間違いではないのだとMarcoRossiItalyさんの回答を見て安心しました!笑 やはりマクロを勉強しないと色々やりたい事が出来ないですね… 暇な時間を見つけて少しづつ勉強していこうと思います! ありがとうございました!

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんにちは! 横からおじゃまします。 関数でお望みの操作となると、かなり難しいと思います。 (簡単にできる方法があればごめんなさい。) そこでお望みでないマクロになってしまいますが、一例です。 Alt+F11キー → 画面左側の「This Workbook」をダブルクリック → VBE画面に ↓のコードをコピー&ペーストしてBookを保存してみてください。 次回、ブックを開いた時点でB4セルが開いた日付でない場合はB5~B32データを消すようにしています。 Private Sub Workbook_Open() 'この行から Dim ws As Worksheet Set ws = Worksheets("Sheet1") '←「Sheet1」の部分は実際のSheet名に! If ws.Range("B4") <> Date Then With ws.Range("B4") .Value = Date .NumberFormatLocal = "yyyy/m/d" '←セルの表示形式は好みで! End With ws.Range("B5:B32").ClearContents End If End Sub 'この行まで ※ Bookを開くときに「セキュリティ警告画面」が出てしまいますが、 「マクロを有効にする」を選択してください。 ※ B4セルの関数は消えて、生データの日付になってしまいます。 以上、参考になりますかね?m(_ _)m

sanche1012
質問者

お礼

わざわざマクロまでありがとうございます! ただ私だけが見るデータではないのでセキュリティなどが出ると困る方が出るかもしれません… 私以上にエクセルが分からない方が結構いまして…。 今回は使えないのですがいただいたマクロは個人的に勉強の材料として使わせていただきます! 丁寧にお答えいただきありがとうございました!

  • KURUMITO
  • ベストアンサー率42% (1835/4283)
回答No.2

B4セルが本日以外の日付ならばB5セルからB32の範囲のデータのフォントを白色にして見かけ上データが無いようにすることで良いのでしたら次のようにします。 B5セルからB32セルまでを選択してから「ホーム」タブの「条件付き書式」で「新しいルール」をクリックします。 「数式を使用して…」にチェックをして下の窓には =B$4<>TODAY() と入力し、「書式」では「フォント」の色を白色にしてOKします。 上以外ではマクロを使用することになるでしょう。

sanche1012
質問者

お礼

お答えいただきありがとうございました。 色々勉強していきたいと思います!

sanche1012
質問者

補足

ご返答、他の方法までご説明いただきありがとうございます。 excelistさんへの補足をかぶってしまうのですがご了承ください。 一日一度は確認の為に開かなくてはいけないデータを全員がちゃんとチェックしているかの確認の為にB5~B32(C列に名前が入っています)に『○』を付けるようにしているんです。 後日のチェック時にその日の夕方にその『○』は消すようにしているのですが私が帰った後や出社前に確認する方がいる為正午に消えれば…と思い今回質問させていただきました。 この様な場合、他に良い方法はありそうでしょうか? 分かり難い文面で申し訳ないです… よろしくお願いいたします。