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

売上台帳から下記条件で請求書を作成したいのですが、(1)の条件の記述がどうしても出来ません。

● 御指導いただきたき事
 
1.(1)の記述方法を御教示お願い致します。

2.(2)の記述の誤謬のチェックをお願いいたします。

売上台帳はC列に月 ・D列に日・・・・L列に金額が入力されています。A1に 6 と入力(6月分を作成する)
A2に 25 と入力(締切日が25日です)

(1)A1が 6 でA2が 25 ならば売上台帳の5月26日から6月25日分までのデータをコピーする
  (A1が 7 でA2が 月末 ならば売上台帳の7月1日から7月31日分までのデータをコピーする)

(2) コピーしたデータを AA11を基点に値を貼り付ける
Sub コピー貼付()
Range("C1:L9").Copy
ActiveSheet.Paste Destination:=Range("AA11")
Range("Z1").Select
Application.CutCopyMode = False
End Sub

A 回答 (1件)

>売上台帳は


縦(列)に1日1行か
1日複数行か
1日分は行的に固まっているのか。
そういうデータの状況のことを書かないと、それらによって大幅に処理ロジックが変わる。模擬実例を挙げよ。
読者には売上台帳が見えないことを忘れるな。
ーー
A1に6、A2に25と入っているシートと売上台帳は同じシートか
(ブック)シート、(行、列)、データの並び順を明確にして質問のこと。
ーー
年指定の問題は、面倒でも1セル指定するようにすべきだ。
またVBA初心者なら、月末というのをやめて31日、30日、28日、29日を具体的に入れる設計の法が良いと思う。コードが増えるだけ。
ーーー
初心者のうちはCopyメソッドより、他セルに値代入をお勧めする。
経験から、コピー法は初心者にはなれるまで難しいと思う。
ーー
日付はエクセルでは日付シリアル値という整数値であることをご存知か。大切なことです。これが判れば、日付の前後は整数の大小に帰する。
ーー
参考コード
範囲日付の抜き出し
日付条件は同一シート(A1,A2とする)。2008年仮定。
Sub test01()
e = DateSerial(2008, Range("a1"), Range("a2"))
'MsgBox e
s = DateSerial(2008, Range("a1") - 1, Range("a2")) + 1
'MsgBox s
d = Range("a65536").End(xlUp).Row
For i = 3 To d
hi = DateSerial(2008, Cells(i, "C"), Cells(i, "D"))
'MsgBox hi
If (hi >= s) And (hi <= e) Then
MsgBox hi
'日付条件を満たす。他シートナリに値を代入。
End If
Next i
End Sub
MsgBoxのシングルコーテーションを順次はずして実行し、正しい結果になるかチェック・納得してみて。
ーー
他シートに代入する場合の書き方は少し経験が要る。
まずそういうことを勉強して、判らない場合は質問して、課題解決に進めるべきだ。
どういう要素技術(=コード記述)がいるかが整理できないなら、こんな仕事に関連したことに、今は着手すべきでない。

この回答への補足

imogasi様
長文の御指導ありがとうございます。

長文になりますが、御判読いただき御指導いただければ幸甚で御座います。
>売上台帳は
縦(列)に1日1行か

月/日/注文番号/商品コード/品名/数量/単価/納品金額/入金額/備 考
0/0繰越金額1,547
5/25 123 525AAA5.25 3.00 16
5/26 5-26 526BBB526.00 26.00 13,676
6/ 1 6-161CCC61.00 16.00 976
6/ 1 6-1-11231DDD3.00 123.13 369
6/20入  金 15
6/25 6-25625EEE625.00 65.00 40,625
6/26 6-26626FFF626.00 26.00 16,276
合   計73,485 15

>1日複数行か
● 固定していません。
1日分は行的に固まっているのか。
そういうデータの状況のことを書かないと、それらによって大幅に処理ロジックが変わる。模擬実例を挙げよ。
>読者には売上台帳が見えないことを忘れるな。
● 解りました
>A1に6、A2に25と入っているシートと売上台帳は同じシートか
● 同じシートです
(ブック)シート、(行、列)、データの並び順を明確にして質問のこと。
ーー
>年指定の問題は、面倒でも1セル指定するようにすべきだ。
● 上記御指示の意味は
1.例えば A3に指定する
2.表に 年 の列を設ける
3・表に 年 の列を設け A3 で指定する

>またVBA初心者なら、月末というのをやめて31日、30日、28日、29日を具体的に入れる設計の法が良いと思う。コードが増えるだけ。
● 解りました
>初心者のうちはCopyメソッドより、他セルに値代入をお勧めする。
● 値代入の記述方法を教えてください。
日付はエクセルでは日付シリアル値という整数値であることをご存知か。大切なことです。これが判れば、日付の前後は整数の大小に帰する。
● 忘れていました。
>参考コード
Sub test01()
'参考コード
'範囲日付の抜き出し
'日付条件は同一シート(A1,A2とする)。2008年仮定。
 ●エラーメッセージ(変数が定義されていません)が出ましたので下記5行追加してみました。
'
Dim e As Integer
Dim s As Integer
Dim d As Integer
Dim i As Integer
Dim hi As Integer

 ●ヘルプを見ましたが理解出来ず試行したのはここまでです。
e = DateSerial(2008, Range("a1"), Range("a2")) '← エラーメッセージ(オーバーフローしました。)
'MsgBox e

s = DateSerial(2008, Range("a1") - 1, Range("a2")) + 1
'MsgBox s
d = Range("a65536").End(xlUp).Row
For i = 3 To d
hi = DateSerial(2008, Cells(i, "C"), Cells(i, "D"))
'MsgBox hi
If (hi >= s) And (hi <= e) Then
MsgBox hi
'日付条件を満たす。他シートナリに値を代入。
End If
Next i
End Sub
'MsgBoxのシングルコーテーションを順次はずして実行し、
'正しい結果になるかチェック・納得してみて。

End Sub
MsgBoxのシングルコーテーションを順次はずして実行し、正しい結果になるかチェック・納得してみて。
ーー
>他シートに代入する場合の書き方は少し経験が要る。
●出来ればSheet2に作成したいと思っています(売上台帳がSheet1)
>まずそういうことを勉強して、判らない場合は質問して、課題解決に進めるべきだ。
●解りました。
>どういう要素技術(=コード記述)がいるかが整理できないなら、こんな仕事に関連したことに、今は着手すべきでない。
●リタイアした68歳の勉強中の初心者です。

補足日時:2008/03/10 22:43
    • good
    • 0
この回答へのお礼

遅くなり大変失礼いたしました。

ありがとうございました。

お礼日時:2008/04/12 11:33

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