人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excelで、入力したデータがたまってゆくものを作りたいのですが、どのようにしたら良いでしょうか。
循環参照を使うとできるという話を聞いたことがあるのですが、どのように使ったらよいかわかりませんでした。
できそうに無い場合は、全部をリンクさせてつくろうかなと思っているのですが…。

1203425794
●拡大する

●質問者: isaihara
●カテゴリ:コンピュータ
✍キーワード:Excel データ リンク 入力
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● SALINGER
●33ポイント

マクロを使えば簡単に作れます。

図の位置関係でいくと、今日の予定のシートの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にしています。

図から想像したサンプルですので、実際の予定表にあわせて変更してください。

◎質問者からの返答

ありがとうございます。早速試してみたいと思います。

まずこの方法で作ってみたいと思います。

マクロを使わないものがあれば一番良いのですが、難しいでしょうか。


2 ● SALINGER
●77ポイント ベストアンサー

循環参照を使う方法を紹介しますと。

まず、循環参照を使えるようにするために

ツール→オプション→計算方法で反復計算にチェックをいれて反復回数を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を" "にするとイメージに近い形で表示されたのですが、これでも問題は無いでしょうか。


3 ● SALINGER
●33ポイント

たぶん、今日と次の日の日付の部分が(水)のように曜日が入っていることで日付型になってないからだと思います。

最後の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.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ