• 締切済み

Excelの関数で質問があります。

例えばA1からA10までの範囲のセルに数値(文字)が入ってます、その範囲のセルの中で最後に変更されたセルの数値(文字)をB1に表示させたいです。

みんなの回答

  • masnoske
  • ベストアンサー率35% (67/190)
回答No.3

こういう事でいいのでしょうか. コードをシートモジュールに貼り付けてください. Private Sub Worksheet_Change(ByVal Target As Range) If Intersect(Target, Range("A1:A10")) Is Nothing Then Exit Sub Range("B1").Value = Target.Value End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

>関数ではできないだろう。B列対応セルにでも、日付+時刻を自動的に記録する仕組みを作れば、B列のMAXで求まるが。 エクセルには、シートのセル以外に情報を記録しておくところはありません (厳密には設定などで情報を引き継いでいるのはもちろんですが、そいうのは除いて)。 特にブックを閉じてしまうと、次に開くときには、使えません。 あえてやるなら、 (1)コメントに保存するー>コメントは個々のセル対応である。好都合。 (2)別シートをメモとして考えて、その対応セルに、セル番地、日付、時刻の情報を保存する。 (3)テキストファイルに書き出す。例CSVなど。 必要の時は、CSVを読みこんで、そこの情報で処理する。 などを考えました。 これらはすべてVBAでプログラムを組んで何とか、というものです。 それにVBAのEventsの仕組の利用が必要です。 例えば Sheet1のシートのイベントに Private Sub Worksheet_Change(ByVal Target As Range) Target.Comment.Delete Target.AddComment Target.Address & " " & Date & " " & Time Target.Comment.Visible = False End Sub 必要のつど、そのシートのコメントを読んで、最大(最後の意味になる。わかりますか?)の日付・時刻シリアル値を探すVBAを組んで実行する。 VBAコードは略。 素人的には、誰でも思いつくニーズだが、エクセルにその備えの仕組ががなく、難しい課題だと思う。 ーー 素人の質問らしく、ブックを閉じるまでで考えればよいのか、閉じて明日の作業の後に考える場合もあるのか、はっきり質問に書いてないのは、落ち度です。

f_qo_op_y
質問者

お礼

アドバイスありがとうございます。

f_qo_op_y
質問者

補足

情報が足りず、申し訳ございません。

  • kon555
  • ベストアンサー率51% (1842/3559)
回答No.1

 関数で行う事は不可能です。エクセルにはセル単位での入力時間を記録する機能がないので・・・。  一応、現在時刻入力はキーボードショートカットで行えますから、例えば「セルを変更した場合にはその下に日付を時刻を入力する」というルールにして、その日時でソートして特定のセルに表示する事は可能です。 時刻は[Ctrl]+[:] 日付は[Ctrl]+[;]  同様の時間記録行為をマクロという機能で自動化する事は可能ですが、対象外のセルであれ何であれ、何かを入力する度に軽く処理が入ってしまうという、ちょっと重たいマクロになるので、自分で対応できないスキルで安易に行うのはオススメできません。  運用で対応できるならそちらの方がいいです。 

f_qo_op_y
質問者

お礼

アドバイスありがとうございます。

関連するQ&A