- ベストアンサー
入力用のセルと管理用のセルを分けるには??
A1・C2・D4に入力すると、E列・F列・G列に上から順に表示させるみたいな ことは可能ですか? 1回目 ABCD EFGH 15 567 2 6 3 4 7 2回目 ABCD EFGH 13 567 2 3 5 3 4 5 みたいな感じで空白は空白で表示したいのですが、可能でしょうか?? 分かりにくくスミマセン・・・・。分かる方よろしくお願いします!! エクセル2003です。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
可能ですよ。ただし、No1のかたのおっしゃるようにワークシート関数では無理なのでマクロになります。 では全自動で実行するマクロの一例です。 手順は下記のとおりです。 簡単ですから試してみてください。 1. 該当するシートのタブを右クリックして、[コードの表示]。 2. 出てきた白い所に、以下のコードを貼付けます。 '********これより下********** Private Sub Worksheet_Change(ByVal Target As Range) Dim myC As String Dim x As Range If Intersect(Target, Range("A1,C2,D4")) Is Nothing Then Exit Sub Select Case Target.Address(0, 0) Case "A1": myC = "E" Case "C2": myC = "F" Case "D4": myC = "G" End Select If Cells(Rows.Count, myC).End(xlUp).Value = "" Then Set x = Cells(Rows.Count, myC).End(xlUp) Else Set x = Cells(Rows.Count, myC).End(xlUp).Offset(1) End If x.Value = Target.Value End Sub '********これより上********** 3.Alt+F11キーでワークシートへもどります。 これでOK A1、C2、D4それぞれに入力する都度自動で実行されます。
その他の回答 (2)
- KURUMITO
- ベストアンサー率42% (1835/4283)
関数を使ってEFG列にデータを入力するにしてもA,C,D列のデータがその都度消される場合には不可能です。マクロを利用することになるでしょう。 しかしながら本来の目的がEFG列に次々にデータを入力していきたいとのことでしたら別の方法があります。 例えばE1セルに適当な項目名、例えばE、F1セルにF、G1セルにGという文字を入力したのちにE,F,G列を範囲として選択します。 その後に「データ」メニューから「フォーム」をクリックします。 忠告の画面が表示されますがそれを無視して「OK」ボタンをクリックします。 画面が表示されますので左側のセルに項目名がありますので、該当する窓にデータを入力して右側の「新規」をクリックします。 同じ列でデータを下方に入力していく場合には「新規」で新たな入力をすればよいのですが、別の列に移るなどの場合には「前を検索」などをクリックしてからデータを入力して「新規」をクリックするなどの操作をすればよいでしょう。一度試験してみてください。
お礼
こういうのもあるんですね!!! 勉強になります!! ところで先日、IF関数の選択肢・・・の件でVLOOKUPの方法についてで お礼を言えなくてすみません。 列のデータ形式を文字列に変更し解決しました。 ありがとうございました!!
- A88No8
- ベストアンサー率52% (836/1606)
こんにちは エクセルは表計算ソフトなので、データに対して作用した結果を得ます。 なので、2回目のようにデータが入れ替わったら過去の記録は残せません。 この場合は表計算の機能ではなく、VBA(プログラム言語)の機能を使って構築するしかないと思います。 少なくとも自動実行は無理です。「全てのデータの編集が終わったよ」というプログラムを走らせるアクションが必要なので。
お礼
ありがとうございました。 もう一度質問しなおしてみますね!!
補足
さっそく試してみました!! すばらしいです!! もっと聞いてもいいですか?? 実は入力用セルは40箇所以上あるのですが、 すべての入力を確認してからE・F・G列にまとめて反映させたいのですが 無理でしょうか?? さらに反映させる場所は列ではなく指定したセル範囲にすることは可能 ですか??わがまま言ってすみません・・・・・。