|
素人じゅうすけ さん おはようございます。
昨日は親戚の法要で出かけていまして回答が遅くなりました。
これから農作業をしなければなりませんので取り敢えず1項目だけ。
>一項目につきましては、A列は「毎日の日付」が立てに順に記入されています。今回使う「重量」と「金額」は「毎日(其の他の列に毎日の重量・金額が記入された時点で)加算されています」。
>例:
>A列 B列 C列
>日付 重量 金額
>8月1日 300 450
>8月2日 450 600
>・
>8月31日 990 1000
>9月1日 1000 1200
>9月2日 1150 1300
>・
>・
>9月30日 2000 2200
>10月1日 2100 2400
>と、このような感じです。SHEET2に記入したいのは
>例:
>A列 B列 C列
>日付 重量 金額
>9月1日〜9月30日 1010 1200
>です。(分かりますか?)また、A列に「項目」を入れて、
>A列 B列 C列
>日付 9月1日〜9月30日 10月1日〜10月31日
>重量 1010 ・
>金額 1200 ・
>というふうにする方法もありましたら、教えてください。
1項目
重量 金額は日毎で累計されているのですね。それでしたら2つの行番号を取り出して利用すればよいです。
●一つ目の回答
Sheet2に 9/1〜9/30 1010 1200 と表示するのは→以下で出来ます。
Sheet2にはA1,B1,C1にそれぞれフィールド名を入力して置いてください。
Sub Test1()
Dim R As Long 'データ範囲の行数
Dim md1 As String, md2 As String '2つの入力された日付
Dim r1 As Long, r2 As Long '取り出された行番号
Dim 期間 As String
R = UsedRange.Rows.Count
md1 = InputBox("前月末日")
md2 = InputBox("今月末日")
'指定された日付に対するセルの行番号を取得する
For Each Rng In Range(Range("A2"), Cells(R, 1))
Select Case Rng.Value
Case DateValue(md1)
r1 = Rng.Row
Case DateValue(md2)
r2 = Rng.Row
End Select
Next
'もっと良い方法があるかもしれませんが 「月/日」形式で表示
'InputBox入力が「○月○日」でも可
期間 = Month(DateValue(md2)) & "/1" & "〜" & Format(md2, "m/d")
'引き算をして別シートへ表示
With Sheets("Sheet2")
'使われている最終行番号
EndRow = .Range("A65536").End(xlUp).Row
.Cells(EndRow + 1, 1) = 期間
.Cells(EndRow + 1, 2) = Cells(r2, 2) - Cells(r1, 2)
.Cells(EndRow + 1, 3) = Cells(r2, 3) - Cells(r1, 3)
End With
End Sub
●2つ目の回答
日付 9/1〜9/30
重量 1010
金額 1200 と表示するには
フィールド名をA1,A2,A3へ入力しておいて下さい
'引き算をして別シートへ表示 から下を
With Sheets("Sheet2")
'1行目で使用されている列の一番右側の列番号を取得
EndColumn = .Cells(1, 256).End(xlToLeft).Column
.Cells(1, EndColumn + 1) = 期間
.Cells(2, EndColumn + 1) = Cells(r2, 2) - Cells(r1, 2)
.Cells(3, EndColumn + 1) = Cells(r2, 3) - Cells(r1, 3)
End With
に変更してください
|
|