- ベストアンサー
エクセルで自動的に・・・
ある表を作っています。作業を自動化したいです。 詳細は次の通りです。 ●1行目はタイトルです。 ●D列に数字を上書きすると、その行を表の一番下に並び替えたいです。 ●その行のH列に今日の日付を入れたいです。 このようにするには、どのようなことをすればいいですか? よろしくおねがいします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
これでどうでしょうか? 処理対象のシートがSheet1であると仮定した場合、 まず他にファイルを開いている場合は、閉じてください。 次に、Alt+F11でVisual Basic Editorを起動し、左上部のプロジェクトウィンドウでSheet1をダブルクリックし、右側のコードウィンドウに下記コードを貼り付ければokです。 Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 4 Then Exit Sub Dim a, b As Long a = Target.Row b = Range("A1").CurrentRegion.Rows.Count Cells(a, 8).Value = _ CStr(Year(Now())) & "/" _ & CStr(Month(Now())) & "/" _ & CStr(Day(Now())) Rows(a).Copy Rows(b + 1) Rows(a).Delete Shift:=xlUp End Sub
その他の回答 (2)
マクロを作成すればいいと思います。 1行目をタイトル行のための行とします。 1行目に特定のセルを決めて、数字を入れてから動作するようにします。 セルに書式が必要な場合は列単位に書式設定をしておくといいでしょう。 1)2行目に行を追加。 2)H2のセルに本日日付を代入。 3)D2のセルに特定のセルの数字を代入。 4)1行目をタイトル行にしてH列の日付を昇順にするなどの指定をして、並び替えを行います。 ってことをしたらいいと思います。 マクロの使い方や記述方法がわからない場合、 ツール->マクロ->マクロの記録で、やりたい手順をマクロに自動記録させて、マクロを解析していくと理解が早いでしょう。 マクロが入っているエクセルのファイルはウイルスの攻撃対象となりやすいため十分注意してくださいね。
補足
説明が不充分でスミマセンでした。 D列に入力するのは何行目かは場合によって異なります。 例えば、D22に入力することもあればD4に入力することもあるのですが、教えてくださったマクロでうまくいきますでしょうか? 知識不足でスミマセンm(__)m よろしくお願いします。
- news_0203
- ベストアンサー率27% (98/352)
●3は関数を使うといいと思います。 日付の関数は、 =today() と入力すると表示されます。 その日付はパソコンの中の日付がつくので、日にちなどが違うときは 「スタート」→「設定」→「コントロールパネル」→「日付と時刻」で訂正すると解決すると思います。 しかしながら●1と●2の内容ですが、 一行目のタイトルというものは、どうするのですか? あとD列に数字を上書きするとその行の一番下に並べ替えるというのは具体的には・・・? すいません・・・。 「並び替え」となると「ツールバー」のなかの「データ」から「並び替え」を選択すればいいのですが・・・? よろしいでしょうか? また何か補足の方がいただけるともう一度書き込みをしたいと思います。 宜しくお願いします。 最後にですが先ほどのtoday関数は 2003/1/18 という形で表示されますが宜しかったでしょうか?
補足
さっそくのご回答ありがとうございます 1行目はタイトルですので、2行目以降のD列に数字を入力した場合にデータの並び替えをいちいち選択しなくても、入力した時点で自動的に並び替えたいのです。 ちなみに、現在は46行まで表にしていますがこれも変動がありますので「表の最終行」に移したいのです。 today関数ですが、昨日以前にD列に入力した行のH列も今日の日付になってしまいませんか? あくまでも、D列に入力した日付にしたいのですが。。。 面倒な事ばかりでスミマセン。よろしくお願いします。
お礼
wildcardさん、ありがとうございます~! カンペキです!! こういうのって、どうやっておぼえたら良いんでしょう。。。 いつもOKwebに頼りっぱなしです・・・ ありがとうございました!