Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


53185 / 76732 ←次へ | 前へ→

【28366】Re:ピボットテーブルを使わずにクロス集計
回答  とまと  - 05/9/3(土) 23:44 -

引用なし
パスワード
   こんばんは
sheet1のものをsheet2に集計します。

Sub 集計()


Dim sh1 As Worksheet
Dim sh2 As Worksheet
Dim dicA As Object
Dim dicB As Object
Dim dicC As Object
Dim vntA, vntB
Dim i As Long, j As Long

Set sh1 = Worksheets("Sheet1")
Set sh2 = Worksheets("Sheet2")


Set dicA = CreateObject("Scripting.Dictionary")
Set dicB = CreateObject("Scripting.Dictionary")
Set dicC = CreateObject("Scripting.Dictionary")


vntA = sh1.Range("A2", sh1.Range("B65536").End(xlUp)).Value
For i = 1 To UBound(vntA)
 dicA(vntA(i, 1) & vntA(i, 2)) = dicA(vntA(i, 1) & vntA(i, 2)) + 1
 dicB(vntA(i, 1)) = Empty
 dicC(vntA(i, 2)) = Empty
Next i

sh2.Range("A2").Resize(dicB.Count).Value = Application.Transpose(dicB.keys())
sh2.Range("B1").Resize(, dicC.Count).Value = dicC.keys()

vntB = sh2.Range("A1").CurrentRegion.Value
For i = 2 To UBound(vntB)
  For j = 2 To dicC.Count + 1
  vntB(i, j) = dicA(vntB(i, 1) & vntB(1, j))
  Next
Next i
sh2.Range("A1").CurrentRegion.Value = vntB


Set sh1 = Nothing
Set sh2 = Nothing
Set dicA = Nothing
Set dicB = Nothing
Set dicC = Nothing
0 hits

【28364】ピボットテーブルを使わずにクロス集計 なおやん 05/9/3(土) 22:03 質問
【28366】Re:ピボットテーブルを使わずにクロス集計 とまと 05/9/3(土) 23:44 回答
【28369】Re:ピボットテーブルを使わずにクロス集計 なおやん 05/9/4(日) 6:54 お礼
【28380】Re:ピボットテーブルを使わずにクロス集計 ichinose 05/9/4(日) 21:31 発言

53185 / 76732 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free