プロが教えるわが家の防犯対策術!

Excelについての質問です。
シートを「入力」と「データ」に分けており、入力シートには、その日一日分のデータが入力できるようにしています。(※この作業自体は、すでにマクロで自分のイメージ通りに入力できるようになっています。)
ここで皆さんのお知恵をお借りしたいのですが...
日付が変わった時に、自動的に入力シートのデータをデータシートに転記し、データを一日分ごと(365日分)に、データシートに蓄積していきたいと考えております。
また、入力シートは、日付が変わった時に、自動的にデータが0になるようにリセットできるようにしたいのですが、これら2つの作業を可能にする数式やマクロを、どのようなものにすればよいかわかりません。どなたか良いお知恵を授けていただけますとありがたいです。

A 回答 (3件)

>日付が変わった時に、自動的に入力シートのデータをデータシートに転記


>し、データを一日分ごと(365日分)に、データシートに蓄積していきた
>いと考えております。
一般的には、一日の入力作業が終わったら
ボタンを押して、入力したデータが蓄積のシートのデータがある最終行の
下に移動して、入力シートをクリアすると思うのですが。
こちらでは駄目なのでしょうか。
    • good
    • 6

》 数式やマクロを、どのようなものにすればよいかわかりません


そういう人に「知恵を授け」たぐらいでは・・・
貴方、大丈夫ですかぁ?「知恵を授けていただけますとありがたい」なんて、仰っているけど。
    • good
    • 0

こんにちは!



表の具体的なレイアウトが判らないので、やり方だけ・・・
VBAになりますが一例です。
両シートとも1行目が項目行になっていて、日付列がA列だとします。

>日付が変わった時に、自動的にデータが0になるようにリセットできるようにしたいのですが
というコトですので、「入力シート」の2行目以降のデータはコピー&ペースト後消去するようにしています。
(万一数式が入っている場合は数式も消去されますので、気を付けてください)

Alt+F11キー → VBE画面左下にある「ThisWorkbook」をダブルクリック → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペーストしてみてください。

Private Sub Workbook_Open()
Dim lastRow As Long, lastCol As Long
Dim myRng As Range, wS As Worksheet
Set wS = Worksheets("データ")

With Worksheets("入力")
If Date <> .Range("A2") Then
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column
Set myRng = Range(.Cells(2, "A"), .Cells(lastRow, lastCol))
myRng.Copy wS.Cells(Rows.Count, "A").End(xlUp).Offset(1)
myRng.ClearContents
End If
End With
End Sub

これでファイルを開いたときに
開いた日付と「入力」シートのA2セルの日付が違う場合に
「入力」シートの2行目以降のデータが「データ」シートのA列最終行以降に
コピー&ペーストされているはずです。m(_ _)m
    • good
    • 1

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング