Excel VBA質問箱 IV

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

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


39930 / 76738 ←次へ | 前へ→

【41912】Re:データの集計方法について教えて下さい
質問  jun  - 06/8/26(土) 2:25 -

引用なし
パスワード
   みなさんこんばんわ VBAを初めて数日の超素人です
クロス集計に興味を持ちkobasanさんご紹介の下記で
勉強と思い見よう見まねでコードを修正しいろいろテスト
してみたのですがうまくいきませんでした。
どなたかご教授お願いします。
>この類は、Dictionaryを利用するのが楽でいいと思います。
>過去ログの【28364】を参考にすると出来ます。

http://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=28366;id=excel
こんなふうに↓修正し動作させたところ

[#41860]の表に対し修正

Sub test()
  Dim rs As Object
  Dim mysql As String
  
  If open_ado_excel(ThisWorkbook.FullName) = 0 Then
    mysql = "Transform iif(isnull(Count(不良本数)),0,Count(不良内容)) " & _
        "Select ロット,品名 From [Sheet1$] Group By ロット,品名 " & _
        "Pivot 不良内容;"
    If get_exec_sql(mysql, rs) = 0 Then

     With Worksheets("Sheet2")
      .Cells.ClearContents
      .Range("a2").CopyFromRecordset rs
      For idx = 0 To rs.fields.Count - 1
       .Cells(1, idx + 1).Value = rs.fields(idx).Name
       Next
      
      End With
     Call rs_close(rs)
    Else
     MsgBox "rs error"
     End If
     
    Call close_ado
  Else
    MsgBox "cn error"
    End If
   
End Sub
下記のような変なデータしか出ませんでした。
  A   B    C    D    E    F    G    H
ロット    品名    <>    XX    XY    YY    YZ    ZZ
        0    0    0    0    0    0
0001    A    0    1    1    0    0    0
0002    A    0    0    0    0    1    0
0003    B    0    1    0    1    1    0
0004    C    0    0    0    0    0    1
どこをどう修正したらいいのか解らなくなりました。
上記データで2行目とC列は不要だと思います。
それと不良合計をどう出したらいいかわかりません。
また上記一行目はKKさんの質問ではあらかじめ入力済みとありますがどうせなら
VBAで一気に書き込んだ方がいいと思うのですが。

次に、とまとさんのコードですが得る答えは一緒だと思いますが
このコードはほとんどどこをなおしていいやら上記より難解です。
お分かりになる方お願いします。
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

追伸;おおよその解説を付けていただけると今後の勉強に役立ちますので
   助かるのですが・・・
乱文ですがよろしくお願いします。
ちなみに、かみちゃんさんのコードではどなたかのresにあるように
わたしのPCもメモリ不足とでてしまいました。winxp/excel2002です。
0 hits

【41860】データの集計方法について教えて下さい K.K 06/8/24(木) 15:42 質問
【41862】Re:データの集計方法について教えて下さい かみちゃん 06/8/24(木) 15:52 発言
【41863】Re:データの集計方法について教えて下さい K.K 06/8/24(木) 16:19 発言
【41864】Re:データの集計方法について教えて下さい K.K 06/8/24(木) 16:30 発言
【41865】Re:データの集計方法について教えて下さい かみちゃん 06/8/24(木) 16:34 回答
【41866】Re:データの集計方法について教えて下さい K.K 06/8/24(木) 17:07 お礼
【41868】Re:データの集計方法について教えて下さい かみちゃん 06/8/24(木) 17:42 発言
【41869】Re:データの集計方法について教えて下さい kazuo 06/8/24(木) 18:18 発言
【41873】Re:データの集計方法について教えて下さい かみちゃん 06/8/24(木) 19:53 回答
【41874】Re:データの集計方法について教えて下さい かみちゃん 06/8/24(木) 19:57 発言
【41871】Re:データの集計方法について教えて下さい Ned 06/8/24(木) 18:58 発言
【41875】Re:データの集計方法について教えて下さい かみちゃん 06/8/24(木) 19:59 発言
【41876】Re:データの集計方法について教えて下さい Ned 06/8/24(木) 20:32 発言
【41889】Re:データの集計方法について教えて下さい kobasan 06/8/24(木) 23:11 発言
【41892】Re:データの集計方法について教えて下さい k.k 06/8/25(金) 10:54 お礼
【41912】Re:データの集計方法について教えて下さい jun 06/8/26(土) 2:25 質問
【41913】Re:データの集計方法について教えて下さい Ned 06/8/26(土) 2:32 発言
【41914】Re:データの集計方法について教えて下さい jun 06/8/26(土) 2:41 発言
【41915】Re:データの集計方法について教えて下さい Ned 06/8/26(土) 4:06 発言
【41923】Re:データの集計方法について教えて下さい jun 06/8/26(土) 9:09 発言
【41924】Re:データの集計方法について教えて下さい かみちゃん 06/8/26(土) 9:22 発言
【41926】Re:データの集計方法について教えて下さい jun 06/8/26(土) 9:45 発言
【41931】Re:データの集計方法について教えて下さい Ned 06/8/26(土) 10:56 発言
【41932】Re:データの集計方法について教えて下さい jun 06/8/26(土) 11:15 お礼
【41952】Re:データの集計方法について教えて下さい Ned 06/8/26(土) 22:32 発言
【41955】Re:データの集計方法について教えて下さい Ned 06/8/26(土) 23:24 発言
【41969】Re:データの集計方法について教えて下さい ichinose 06/8/27(日) 11:53 発言
【41970】Re:データの集計方法について教えて下さい jun 06/8/27(日) 12:01 お礼

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