循環参照を使うとできるという話を聞いたことがあるのですが、どのように使ったらよいかわかりませんでした。
できそうに無い場合は、全部をリンクさせてつくろうかなと思っているのですが…。
循環参照を使う方法を紹介しますと。
まず、循環参照を使えるようにするために
ツール→オプション→計算方法で反復計算にチェックをいれて反復回数を1回以上にします。
図の場合ですと、月予定のC4せるの数式を
=IF(DAY(Sheet1!$A$6)=A4,Sheet1!$A$7,IF(DAY(Sheet1!$E$6)=A4,Sheet1!$E$7,C4))
にして下に数式をコピーします。
これで、今日の予定シートがSheet1でA6セルとE6セルに日付が入っていればご希望の動作をします。
ただし、
A6セルを=Today()とかにすると、日付が変わった後に勝手に前日の予定を上書きします。
これについてはもう一工夫必要になってくると思います。
マクロを使えば簡単に作れます。
図の位置関係でいくと、今日の予定のシートのWorksheet_Changeイベントに次のようなマクロを入れます。
Private Sub Worksheet_Change(ByVal Target As Range) If Target.Row = 7 And Target.Column = 1 Then With Worksheets("Sheet2") .Cells(Day(Range("A6").Value) + 3, 3).Value = Range("A7").Value End With End If If Target.Row = 7 And Target.Column = 5 Then With Worksheets("Sheet2") .Cells(Day(Range("E6").Value) + 3, 3).Value = Range("E7").Value End With End If End Sub
A6セルの数式を=today() E6セルの数式を =today()+1 として日付型にして
月の予定をSheet2にしています。
図から想像したサンプルですので、実際の予定表にあわせて変更してください。
ありがとうございます。早速試してみたいと思います。
まずこの方法で作ってみたいと思います。
マクロを使わないものがあれば一番良いのですが、難しいでしょうか。
循環参照を使う方法を紹介しますと。
まず、循環参照を使えるようにするために
ツール→オプション→計算方法で反復計算にチェックをいれて反復回数を1回以上にします。
図の場合ですと、月予定のC4せるの数式を
=IF(DAY(Sheet1!$A$6)=A4,Sheet1!$A$7,IF(DAY(Sheet1!$E$6)=A4,Sheet1!$E$7,C4))
にして下に数式をコピーします。
これで、今日の予定シートがSheet1でA6セルとE6セルに日付が入っていればご希望の動作をします。
ただし、
A6セルを=Today()とかにすると、日付が変わった後に勝手に前日の予定を上書きします。
これについてはもう一工夫必要になってくると思います。
ありがとうございます。やってみたのですが、なぜか0以外表示されませんでした。でも、DAYを取り除いて、最後のC4を" "にするとイメージに近い形で表示されたのですが、これでも問題は無いでしょうか。
たぶん、今日と次の日の日付の部分が(水)のように曜日が入っていることで日付型になってないからだと思います。
最後のC4部分が循環参照してる部分で、これを" "にすると今日の日付を変えた場合、前の日付の予定が消えることになります。
なぜ循環参照が必要かというのは、前に入力したデータを残すためです。
ワークシート関数を使う方法では、やはり明日の予定を入力しても、日付が明日になった時点で今日のデータが上書きされてしまうことになります。
それで、1のVBAを使った方法に、更にシートがアクティブになったときに月の予定から今日の予定を取得するコードを付け加えるといいと思います。
これで、A6セルに=Today()、E6セルに=Today()+1を入力しておくことで、次の日シートを開いたときに前日入力した明日の予定が今日の予定の欄に入っていてスムーズに入力できることになります。
Private Sub Worksheet_Activate() Application.EnableEvents = False With Worksheets("Sheet2") Range("A7").Value = .Cells(Day(Now) + 3, 3).Value Range("E7").Value = .Cells(Day(Now) + 4, 3).Value End With Application.EnableEvents = True End Sub
なるほど、ありがとうございます。
すごく助かりました。
ありがとうございます。やってみたのですが、なぜか0以外表示されませんでした。でも、DAYを取り除いて、最後のC4を" "にするとイメージに近い形で表示されたのですが、これでも問題は無いでしょうか。