
Excelで以下のような集計データがあります。1週間毎にカテゴリーでまとめたいのですが、マクロで集計できないでしょうか?
aa bb cc dd
9/27 0 2 0 4
9/28 4 52 41 1
9/29 6 0 1 13
9/30 2 0 1 0
10/1 1 0 1 0
10/2 0 0 3 0
10/3 0 5 1 0
10/4 2 1 0 0
10/5 3 61 1 11
10/6 0 1 31 3
10/7 6 0 1 0
10/8 0 2 1 5
10/9 8 3 31 4
10/10 0 1 1 0
10/11 3 1 1 0
10/12 5 0 5 4
<集計結果1>
※単純に週ごとに集計した結果
aa bb cc dd
1週目 13 59 48 18
2週目 19 69 66 23
3週目 8 1 6 4
<集計結果2>
※1週目からの延べ合計
aa bb cc dd
1週目 13 59 48 18
2週目 32 128 114 41
3週目 40 129 120 45
できれば、1回で集計結果2(1週目からの延べ合計)を出したいと思っていますが、集計結果1を関数で合計し、集計結果2を出したいと思っています。
No.4ベストアンサー
- 回答日時:
VBAである日付が第何週かを取得するには「DatePart("ww",<日付>)」を使います。
http://officetanaka.net/excel/vba/function/DateP …
あとは以前の質問の回答4の方のコードを参考にすれば、いいのでは?
http://questionbox.jp.msn.com/qa5308829.html
たとえば
>ReDim sumAry(30000 To 50000, 0 To 2)
を
ReDim sumAry(1 To 54, 0 To 4)
と変更して、sumAry(1,1)には第1週のbb列の合計、sumAry(1,2)には、第1週のcc列の合計・・・を格納できるようにしておき、
>For i = 1 To UBound(orgAry, 1)
> If sumAry(orgAry(i, 2), 0) = 0 Then
> sumAry(orgAry(i, 2), 0) = 1
> dayCnt = dayCnt + 1
> End If
> Select Case orgAry(i, 1)
> Case "OK": sumAry(orgAry(i, 2), 1) = sumAry(orgAry(i, 2), 1) + 1
> Case "NG": sumAry(orgAry(i, 2), 2) = sumAry(orgAry(i, 2), 2) + 1
> End Select
> Next i
を
Dim weekCnt As Integer, wkNo as Integer, k As Integer
For i = 2 To UBound(orgAry, 1)
wkNo = DatePart("ww,"orgAry(i, 1))
If sumAry(wkNo, 0) = 0 Then
sumAry(wkNo, 0) = 1
weekCnt = weekCnt + 1
End If
For k = 1 To 4
sumAry(wkNo, k) = orgAry(i, k+1)
Next k
Next i
というふうにするとか。
#考え方を示しただけで動作を確認したコードではありません、あしからず。
先の回答を理解されていれば、他の部分も問題なく変更できるはずです。
もしもそれが無理なら、ピボットテーブルを活用することをお奨めします。
No.3
- 回答日時:
第何週目の定義が質問にはっきりさせてないと思うが。
(1)年初来の第何週
(2)月初来の第何週
(3)データの最初から7日単位で
ーー
(1)で考えると、関数では使えるWEEKNUM関数(ただし2003まではアドイン関数)がVBAでは使えないようなので
'--下記関数テスト用(A列に連続日付を入れてテスト確認用)
Sub test01()
For i = 2 To 365
Cells(i, "g") = weeknums(Cells(i, "A"))
Next i
End Sub
’---実際の関数
Function weeknums(b As Date)
d1 = Weekday(DateSerial(Year(b), 1, 1))
d2 = DateSerial(Year(b), 1, 1)
d3 = b
wn = Int((d3 - d2 - (8 - d1)) / 7) + 2
weeknums = wn
End Function
を使う。
------
A列は日付順に並び、日付シリアル値の形式でデータが入っているとする。
直前行の修番号、計数項目だけ中間合計算出用の変数を(質問例では4つ)用意する。
ーー
データ最初行から最終行まで以下を繰り返す
上記私製関数でA列の日付の週番号を算出し、直前行の週番号と(IF文で)変わったか判別する。
変われば中間合計4つの変数の値を、データとは別範囲の行に代入(転記)する。
転記する行ポインターを(次週に備えて)+1する。
そして4変数をクリア(ご破算)
そして今の行の4データを中間合計算出用の変数に加える。
また「直前行の週番号を記録する変数」を、現在行の数に置き変える。
ー
変わらない場合は、その行の4列のデータを、それぞれの中間合計算出用の変数に加える。
次の行を指して、以上を最終行まで繰り返す。
ーー
最封行のあと、中間合計4つの変数の値を、データとは別範囲の行に代入(転記)する。
ーーー
(2)(3)の場合も上記私製関数は使わないが(判別パターンのコードは変わるが)、その後の足しこみは同じパターンでよい。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELピボットテーブル関数について 2 2023/04/10 20:35
- 統計学 不偏分散を計算するときに標準偏差和をn-1で割りますが、なぜ-1なのでしょうか? 「なぜnでなくn- 5 2022/07/04 14:54
- Access(アクセス) Access クエリ 同一テーブル内 複数フィールドの同時集計のやり方について 1 2022/05/18 19:01
- その他(スポーツ) 乗馬レッスンの効果の違い:短期集中vsコツコツ 2 2023/05/15 23:37
- Excel(エクセル) SUMIFのIF分岐について 4 2023/04/15 12:57
- Excel(エクセル) 複数セルデータを別シートの単一セルにコピーしたい。(詳細をご参照ください) 1 2022/12/14 15:08
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Excel(エクセル) 別シートに毎回異なるデータをコピーする 7 2022/06/24 09:02
- Excel(エクセル) 週毎の集計 2 2023/08/04 16:56
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【VB.NET】Excelの最終行までの...
-
C# DataTableに最後に追加した...
-
XMLでデータとして画像を指定す...
-
VBAコンボボックスの内容が反映...
-
エクセルのセル最終行取得
-
COBOL数値転記の仕様
-
Excel VBAでフォルダ内の全テキ...
-
「Nullの使い方が不正です」の...
-
batでレジストリキーから読み取...
-
ExcelVBAで戻り値を返すには
-
wordにexcelデータの流し込み、...
-
VB6.0 テキストボックス マル...
-
VBAでアクセスDBからデータの取...
-
ACCESS VBA フォーム複数条件
-
『列名 '担当者CD' があいま...
-
他のMDBのテーブルに追加したい
-
VBA 変数名に変数を使用したい。
-
VB6.0の「vbFromUnicode」はVB....
-
VB.NETで1→A、2→B、26→Z、27→AA...
-
Access2007でアプリケーション...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C# DataTableに最後に追加した...
-
【C#】textBoxの指定行のデータ...
-
VBAコンボボックスの内容が反映...
-
VBAでアクセスDBからデータの取...
-
【VB.NET】Excelの最終行までの...
-
XMLでデータとして画像を指定す...
-
VB2010で、選択した系列を最前...
-
Excel VBAで1週間毎にカテゴリ...
-
COBOL数値転記の仕様
-
【ExcelVBA】値を変更しながら...
-
非同期のプロセス間通信(パイプ...
-
「Nullの使い方が不正です」の...
-
エクセルのマクロ コンボボッ...
-
ExcelVBAで戻り値を返すには
-
Excel VBAでフォルダ内の全テキ...
-
ListViewで表示されたデータの...
-
クリスタルレポートでレコード...
-
Excel VBA で日付を4ケタの数値...
-
ActiveReportのdetailをデータ...
-
アクセスでウェブ上のデータを...
おすすめ情報