アプリ版:「スタンプのみでお礼する」機能のリリースについて

エクセル(Ver.2007)にて、伝票(入力用)のフォーマットをSheet(1)に作成しました。伝票は1日毎に入力して更新し、そのデータをカテゴリー分けて集計用フォーマットのSheet(2)とSheet(3)に随時 必要データを添付する効果的な方法を模索しております。浅はかな知識の中でマクロの存在を知りましたが、全くの無知であり、助けを求めた次第です。
Sheet(1)には、A1・・・日付、B2・・・客数、E2・・・総売上、A4~A9・・・コース名、C4~C9・・・数量、D4~D9・・・単価、E4~E9・・・売上を入力するセルを作成してあります。
Sheet(2)には、Sheet(1)の①日付・②コース名・③数量・④単価・⑤売上を反映させ、Sheet(3)には、①日付、②客数、③総売上を反映させて行きたいです。日々、入力内容が変わる為、空白のセルも存在する事がありますが、Sheet(2)とSheet(3)には空白部分は反映させず順に詰めて添付するようにしたいです。また、可能かどうかは分かりませんが、Sheet(1)の入力項目は更新後には未入力状態に戻す事が出来ると時短にもなり大変助かりますが、そのような事は可能でしょうか。
説明も不十分で分かり辛く、大変申し訳ございません。画像を添付させて頂きましたので、ご確認下さい。何もかもが無知で大変お手数をお掛け致しますが、何卒 ご教授頂きますよう宜しくお願い致します。

「エクセル マクロの設定」の質問画像

質問者からの補足コメント

  • うーん・・・

    早急なご回答、誠に有難うございます。早速、頂いたマクロをVBAに入力し、実行したのですが、”インデックスが有効範囲にありません”という エラー!? が出ました。自分には、何処に問題があるのかが理解出来ませんでした。
    もしかしたら入力シート(Sheet 1)の3列目の コース名 部分を、シートAとBをセルの結合をしてしまっている事が何か関係があるのでしょうか?何度もお手数をお掛け致しまして、申し訳ございません。ご教授頂いても宜しいでしょうか?

    No.1の回答に寄せられた補足コメントです。 補足日時:2016/07/07 11:41

A 回答 (3件)

シート結合は考慮していますので問題はありません。


あくまでも推測ですが、シート名が違うのでは?
もし「Sheet1」が「入力シート」などに変更されているならば、他のシートも含め該当箇所を全て修正してください。
    • good
    • 0
この回答へのお礼

完璧に理想通りに出来ました。早急で実直なご対応頂き、本当に有難うございました。自分自身もマクロに苦手意識を持たずに、覚えて行きたいと思います。本当に助かりました。有難うございました。

お礼日時:2016/07/07 12:28

ご要望通りの動作はマクロにて可能です。



詳細なコード(マクロ)についてはNo.1の方の回答が
十分に役割を果たしてくれると思います。

以下若干蛇足ではありますが。

使い方については、マクロのショートカット登録をすることが一つ。
もう一つは、毎日の使用においては、シートにボタンを配置することが一つ。
(参考:http://www.ex-it-blog.com/Macro-exe
加えて、ある程度の自動化も可能です。

上記参考はWindows10、かつOfficeのバージョンが2007ではないようですが
主旨は同じことです。

ただ、自動化はマクロをある程度自分で理解していないと出来ません。
シートのマクロコードにて、マクロ実行のタイミングを指定して
その中に実行する条件を書き込む、という手法です。
(参考:http://www9.plala.or.jp/siouxsie/excel/date06.html
大変便利ですので、よろしければ学んでみて下さい。

マクロはプログラムの一種であり大変難解に見えますが
一度分かってしまうと難しい部分はあまりなく、そして作業を短縮してくれます。
質問サイトにも、他にも使い方が多くありますので、
参考にして使いこなしてみて下さい。
    • good
    • 0
この回答へのお礼

早速のご返答、有難うございます。”GooUserラック様”よりご回答頂いた内容からは、まだ理解が出来ませんが、教えて頂きましたサイトにて、これから勉強して行きます。有難うございます。

お礼日時:2016/07/07 11:46

こんなのはいかがでしょうか?


----------------------------------------------------------
Sub 転記()

Dim 元行 As Long
Dim 先行 As Long

Sheets("Sheet1").Select
先行 = Sheets("Sheet3").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Sheet3")
.Cells(先行, 1).Value = Cells(1, 1).Value
.Cells(先行, 2).Value = Cells(2, 2).Value
.Cells(先行, 3).Value = Cells(2, 5).Value
End With
For 元行 = 4 To 9
If Trim(Cells(元行, 1).Value) <> "" Then
先行 = Sheets("Sheet2").Cells(Rows.Count, 1).End(xlUp).Row + 1
With Sheets("Sheet2")
.Cells(先行, 1).Value = Cells(1, 1).Value
.Cells(先行, 2).Value = Trim(Cells(元行, 1).Value)
.Cells(先行, 3).Value = Cells(元行, 3).Value
.Cells(先行, 4).Value = Cells(元行, 4).Value
.Cells(先行, 5).Value = Cells(元行, 5).Value
End With
End If
Range(Cells(元行, 1), Cells(元行, 4)).ClearContents
Next
Cells(1, 1).Value = Cells(1, 1).Value + 1

End Sub
----------------------------------------------------------
転記後、転記したのが判るように日付を1日進めています。
もし不要なら「Cells(1, 1).Value = Cells(1, 1).Value + 1」を削除してください。
この回答への補足あり
    • good
    • 1
この回答へのお礼

完璧に理想通りに出来ました。早急で実直なご対応頂き、本当に有難うございました。自分自身もマクロに苦手意識を持たずに、覚えて行きたいと思います。本当に助かりました。有難うございました。

お礼日時:2016/07/07 12:29

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