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

エクセルで入力日を自動入力する方法を探してます

仮にA1のセルに「1000」と入力すると、A2に「7/17火」と本日の日付が自動入力される方法を探しております。

更に以下の要件を満たすことが必要です
1.翌日にファイルを開いても「7/17火」は固定された状態であること。
2.A1に修正を加えた場合、修正日に日付が変更されること

このようなエクセルの操作方法を教えてください

●質問者: news1
●カテゴリ:コンピュータ
✍キーワード:A1 エクセル セル ファイル 入力
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● きゃづみぃ
●35ポイント

VBAを使うしかないですね。

その入力するシートに 以下を 記述します。

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address(0, 0) = "A1" Then

If Range("A1") <> "" Then Range("A2") = Format(Date, "m/d aaa")

End If

End Sub


これで 希望のとおりになるでしょう。

◎質問者からの返答

うーんVBAしかないのですか。

何とか関数や書式設定で解決できないかと思ったのですが。

他の回答もお待ちしております。


2 ● りくっち
●35ポイント ベストアンサー

まず、どうしてVBAで処理するしかないか、という点についてご説明を。


Excel関数は、一部の関数(配列やADDRESSなど)を除き、基本的には「参照するセル」に対して演算を行います。

設定で手動・自動と更新のタイミングを選ぶことはできますが、

演算を行うセルを条件分けすることはできません。

なので、「修正された時だけ特定の数式を更新する」という動作は基本的にできません。


そのため、「変更部分を随時反映する」ことをしようとすると、

履歴をとって反映したいところだけを反映する、

入力をデータ形式にして集計結果を表示する、

といった「変更前」のデータをなんらかの形で残しておかなければ不可能ということなのです。


これを踏まえて、関数での力技を一つ提示します。


まず入力シートと別に履歴シートを作成します。

これをSheet2として、入力シートに以下のように記述します。

A2=IF(A1="","",IF(AND(A1=Sheet2!A1,Sheet2!A1<>""),Sheet2!A2,TEXT(TODAY(),"m/daaa")))

複数セル必要なら列方向にフィルコピーします。


一日目は普通に入力します。

A1に値が入力されれば、A2に自動的に日付が入ります。

作業が終わったら入力シートを全選択してコピー、

Sheet2に値貼り付けをし、保存してブックを閉じます。


翌日ブックを開き、A1に前日と違った値を入力すると当日の日付がA2に自動的に表示されます。

修正してもA1の値に変わりがなければ前回の日付が表示されます。

A1の値自体を消した場合については、↑の数式では日付自体がクリアされます。

値を消した場合も修正日付を更新する場合は、

A2=IF(AND(A1="",Sheet2!A1=""),"",IF(AND(A1=Sheet2!A1,Sheet2!A1<>""),Sheet2!A2,TEXT(TODAY(),"m/daaa")))

としてください。


以上ご参考まで。

http://www.shuiren.org/chuden/teach/excel/ber.htm

◎質問者からの返答

なるほどエクセルの特性もよく理解できました。

そもそも無理なお願いだったのですね。

関連質問


●質問をもっと探す●



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