- ベストアンサー
エクセルの関数で縦の範囲に入力された値をJ3セルに反映させる方法
- Excel2007を使用しており、Sheet1内のD4:D500範囲に半角英字を入力すると、J3セルの値も入力された英字と同じになる方法を知りたいです。
- D4:D500範囲に半角英字をランダムに入力すると、J3セルの値も最後に入力された英字と同じになるようにする方法を教えてください。
- Excel2007のSheet1内のD4:D500範囲にある半角英字の入力を順不同ランダムに行うと、J3セルの値も最後に入力された英字と同じになる方法を教えてください。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
関数ではできないと思います。 一案ですが、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
その他の回答 (2)
- chie65536(@chie65535)
- ベストアンサー率44% (8740/19838)
エクセルは「入力された順序」は記録しません。 D100⇒D350⇒D75の順で入力するのと、D100⇒D75⇒D350の順で入力するのは「結果的に同じ」ですから、関数だけではどうしようもありません。 これを実現するには「シート上のセルの値変更をキャプチャするイベントに対するマクロコード」に「値が変更されたら、どこが変更されたか調べ、そのセルの値をJ3セルに転記する」と言う処理を記述しなければなりません。
- mt2008
- ベストアンサー率52% (885/1701)
関数では、どの入力が最新か判らないと思いますので、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
補足
ご回答ありがとうございました。 上記トライしてやってみたのですが、コンパイルエラーウィンドウが出て ★名前が適切でありませんWorksheet_Change★、と出ました。今現在の自分の使っているシート番号を 再度確認したらSheet1ではなくSheet16として使われておりました(※ちなみにシート名は"変換シート"です)。 この辺が関係あるのでしょうか?どう修正して良いかわかりませんでした。
お礼
大変参考になりました。 新規ファイルではうまくいくのですが、現行のマクロに追加してマクロを組み込むとどうもうまくいきませんでしたので、一度クローズして自身もう一度マクロとしての具体的な質問を再アップしたいと思います。 大変ありがとうございました。