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


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

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

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

回答の条件
  • 1人2回まで
  • 登録:2007/07/17 14:54:06
  • 終了:2007/07/24 09:23:08

ベストアンサー

id:rikuzai No.2

りくっち回答回数1366ベストアンサー獲得回数1412007/07/17 16:58:15

ポイント35pt

まず、どうして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

id:news1

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

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

2007/07/17 18:39:54

その他の回答(1件)

id:taknt No.1

きゃづみぃ回答回数13537ベストアンサー獲得回数11982007/07/17 15:08:34

ポイント35pt

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


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

id:news1

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

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

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

2007/07/17 15:32:25
id:rikuzai No.2

りくっち回答回数1366ベストアンサー獲得回数1412007/07/17 16:58:15ここでベストアンサー

ポイント35pt

まず、どうして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

id:news1

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

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

2007/07/17 18:39:54

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません