こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

エクセルの関数について。

エクセルの関数について。

Excel2007を使用しております。
次のことが関数で出来るかどうか教えていただきたいのですが、

現在、Sheet1内にてD4:D500まで縦の範囲にてA~Jまでの入力規制セットした半角英字が途中までランダムに入力されておりまた新たに入力予定です。

上記範囲で半角英字を入力された時点でセルJ3がその入力された英字と同じ値になることをしたいと思っております。例えばD100にBと入力したらセルJ3の値もそれと同値に、その後D350にFと入力したらその時点でJ3もF値に、またその後D75にA入力したらセルJ3もA値にといった入力を順不同ランダムに行うことによってセルJ3もランダムに値変更出来る仕組みにしたいと思っております。

結果としてセルJ3の値はD4:D500範囲にて最後(最新)に入力された値と同じ値が入っている状態になっていればMUSTなのですが、これを関数で実現するにはどうやったらよろしいでしょうか?

また関数で不可であれば他に方法があればどうかお教え頂けると幸いでございます。

どうぞよろしくお願い申し上げます。

投稿日時 - 2010-01-19 12:25:49

QNo.5605016

すぐに回答ほしいです

質問者が選んだベストアンサー

関数ではできないと思います。
一案ですが、VBAマクロにてD4:D500範囲でデータ書換えがあった場合にJ3セルに表示する方法は如何でしょうか。
(1)対象シートタブ上で右クリック→コード表示→以下のコードを貼り付けてみて下さい。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D4:D500")) Is Nothing Then Exit Sub
If Target.Count = 1 Then
If Target.Value <> "" Then Range("J3") = Target.Value
End If
End Sub

投稿日時 - 2010-01-19 15:25:53

お礼

大変参考になりました。
新規ファイルではうまくいくのですが、現行のマクロに追加してマクロを組み込むとどうもうまくいきませんでしたので、一度クローズして自身もう一度マクロとしての具体的な質問を再アップしたいと思います。
大変ありがとうございました。

投稿日時 - 2010-01-19 18:27:16

ANo.3

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.2

エクセルは「入力された順序」は記録しません。

D100⇒D350⇒D75の順で入力するのと、D100⇒D75⇒D350の順で入力するのは「結果的に同じ」ですから、関数だけではどうしようもありません。

これを実現するには「シート上のセルの値変更をキャプチャするイベントに対するマクロコード」に「値が変更されたら、どこが変更されたか調べ、そのセルの値をJ3セルに転記する」と言う処理を記述しなければなりません。

投稿日時 - 2010-01-19 13:30:49

ANo.1

関数では、どの入力が最新か判らないと思いますので、VBAでやる以外にないと思います。

VBAでもよろしければ、該当シートに以下の様なコードを入れて見てください。

Private Sub Worksheet_Change(ByVal Target As Range)
 With Target
  If (.Column = 4) And (.Row >= 4) And (.Row <= 500) Then
   Range("J3").Value = .Value
  End If
 End With
End Sub

投稿日時 - 2010-01-19 12:58:30

補足

ご回答ありがとうございました。
上記トライしてやってみたのですが、コンパイルエラーウィンドウが出て
★名前が適切でありませんWorksheet_Change★、と出ました。今現在の自分の使っているシート番号を
再度確認したらSheet1ではなくSheet16として使われておりました(※ちなみにシート名は"変換シート"です)。
この辺が関係あるのでしょうか?どう修正して良いかわかりませんでした。

投稿日時 - 2010-01-19 14:14:04

あなたにオススメの質問