- ベストアンサー
エクセル 毎日更新する表のデータだけを時系列で保存したい
毎日更新する表があります。 どの部屋に誰が入っていて売上はいくらか、その人に最適な部屋はどこか、現在の部屋は最適なのか、等を表示する表です。 その表から必要な部分(その日の売上、理論値との乖離率など)だけ抜き出し別のシートに時系列(日にちごと)で集計したいと思っています。 マクロでデータの数値だけをコピーをする方法を考えましたが、集計表の今日の日付の欄にコピーできる方法がわかりません。 入力用の表(入力時の日付は入っています)から日付を判断して別シートのその日付欄にコピーをするスマートな方法をご教示ください。 よろしくお願いいたします。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1です。 >NSh.Cells(i, 2).Value = OSh.Cells(j, ).Value '最適料金の合計 (j, )のところはなぜ何も入っていないのでしょうか?? 私は「値の入った列番号を入れます」と書いているはずですが? もし「最適料金の合計」の列がF列だったとしたらここにいれるのは「6」です。 申し訳ないのですが、そちらの状況は私には全くわかりません。唯一書かれ ていることだけが私がわかることなのです。 なので完全に質問者様の環境下で動作するものを作成するのは難しいです。 >マクロの記述はよくわかりませんので 最初の補足質問にこうありますが、本来全くわからない人には難しい問題だ と思います。何処をどういうふうに修正すればわからないですからね。 >日付はコピーできていました。 ということは、シート名は正しいものに修正できているのでしょう。やはり 上に書いた問題だと思われます。因みに「日付」は前回の回答にも書きましたが 入力用シートからのコピーではありません。
その他の回答 (3)
#1です。 >なんどもすいません。 気にしないで下さい。 ■条件■ ・各シート共にタイトル行が存在する。 ・入力用のシートのA列の最後に合計を意味する文字が入力されている。 又、その行に最適料金の合計 現在の料金の合計 それらの乖離率が存在 する。 ・入力シートに日付が存在するかどうか不明なので「今現在」の日付を入力 する。 ・転記が終わったら入力用のシートのデータを消す。 Sub test() Dim i As Long, j As Long Dim OSh As Worksheet, NSh As Worksheet Set OSh = Sheets("sheet1") '入力用シートの名前に変更して下さい。 Set NSh = Sheets("sheet2") '貼付る側のシート名に変更して下さい。 i = NSh.Range("A65536").End(xlUp).Offset(1).Row j = OSh.Range("A65536").End(xlUp).Row NSh.Cells(i, 1).Value = Format(Now, "yyyy/mm/dd") '日付 NSh.Cells(i, 2).Value = OSh.Cells(j, △).Value '最適料金の合計 NSh.Cells(i, 3).Value = OSh.Cells(j, ■).Value '現在の料金の合計 NSh.Cells(i, 4).Value = OSh.Cells(j, ◇).Value '乖離率 OSh.Range("A2:○" & j).ClearContents End Sub 各△■◇のところには入力用シートのそれぞれの値の入った列番号を入れます。 ○には入力シートのデータの入っている一番右側の列の記号を入れます。 注意 データをクリアするようになっていますのでコピーしたファイルで試して下さい。
お礼
ありがとうございます。 家に持ち帰って試行錯誤していたのですが、 NSh.Cells(i, 2).Value = OSh.Cells(j, ).Value '最適料金の合計 の段階でエラーになります。 日付はコピーできていました。
#1です。 まだ良くわかりません・・・。私の理解力がないのか・・・。 >元のシートは今日のデータしかないため 入力用ですよね?1日分しか入力しないとして、次の日はどうするつもり ですか? >縦に明日、あさってと時系列で記録 部屋1:今日 部屋2:今日 部屋1:明日 部屋2:明日 のイメージでしょうか? もしこのイメージであれば毎日入力されたデータを別シートに貼り付けて いくだけでいいのですよね?もともと時系列だし。
補足
なんどもすいません。 入力用は今日だけです。 翌日には状況が翌日用にかわります。 要は翌日は上書きです。 なので2枚目に必要なデータだけ時系列で保存できないかなと考えています。 今日 全館データ… 明日 全館データ… あさって 全館データ… こんな感じです。
>マクロでデータの数値だけをコピーをする方法を考えましたが、集計表の >今日の日付の欄にコピーできる方法がわかりません。 どのように記述したのですか? >入力用の表(入力時の日付は入っています)から日付を判断して別シート >のその日付欄にコピーをするスマートな方法をご教示ください。 元シートと貼付先シートの表はどのようなものなのでしょうか?
補足
マクロの記述はよくわかりませんので、記録でコピー、ペースト(値のみ)をしようとしました。 元のシートは今日のデータしかないため、そこから必要な部分だけを2枚目のシートに今日の日付と共に時系列で毎日データが増えて行くようにしたかったのです。 元は、 部屋1 氏名 入居日 … … 入居日数(今日の日付から逆算)… 1日の料金A B C 最適料金 現在の料金 が横に。 以後部屋2、3と縦に続きます。 これを縦に集計し、本日の合計を出します。 2枚目には、日付 最適料金の合計 現在の料金の合計 それらの乖離率 を横に 縦に明日、あさってと時系列で記録して行きたいのです。 ややこしくて申し訳ありません。
お礼
何度もご親切にありがとうございました。 列番号というのがわからずセルを指定しておりました。 いただいた回答をもとにカスタマイズしてなんとか思いどおり使用できるようになりました!