Excel VBA質問箱 IV

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

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


39910 / 76738 ←次へ | 前へ→

【41932】Re:データの集計方法について教えて下さい
お礼  jun  - 06/8/26(土) 11:15 -

引用なし
パスワード
   ▼Ned さん:
>▼jun さん:
>>はぁ・・??
>という表現はレス気なくす人もいますから気をつけたほうがいいですよ。
はい気をつけます。
>あとヨビステもね。や、冗談やけど^ ^
どっかしてましたか?失礼しました。
>
>ほんとはScripting.Dictionaryの前に、配列について理解したほうが良いです。
はいそう思いますがむずかしぃー(=_=)
>Sub vntsample()
>'yのmatchキーは手抜きでA列のみ
>  Dim sh As Worksheet
>  Dim i As Long
>  Dim n As Long
>  Dim v, w, x, y
>  Set sh = Sheets("sheet2")
>  sh.UsedRange.Clear
>  With Sheets("sheet1").Range("A2").CurrentRegion
>    .Resize(, 2).AdvancedFilter _
>      Action:=xlFilterCopy, CopyToRange:=sh.Range("A1"), Unique:=True
>    .Columns(3).AdvancedFilter _
>      Action:=xlFilterInPlace, Unique:=True
>    .Columns(3).Offset(1).SpecialCells(xlCellTypeVisible).Copy
>      sh.Range("C1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
>    Application.CutCopyMode = False
>    .Worksheet.ShowAllData
>    v = .Resize(.Rows.Count - 1).Offset(1).Value
>  End With
>  With sh.Range("A1").CurrentRegion
>    n = .Columns.Count + 1
>    w = .Resize(, n).Value
>    w(1, n) = "不良合計"
>    For i = 1 To UBound(v)
>      With Application
>        y = .Match(v(i, 1), .Index(w, 0, 1), 0)
>        x = .Match(v(i, 3), .Index(w, 1, 0), 0)
>      End With
>      If Not IsError(y) And Not IsError(x) Then
>        w(y, x) = w(y, x) + v(i, 4)
>        w(y, n) = w(y, n) + v(i, 4)
>      End If
>    Next i
>    .Resize(, n).Value = w
>  End With
>  Set sh = Nothing
>End Sub
>
>↓これはピボットサンプル。
>Sub pvtsample()
>  Dim r As Range
>  Application.ScreenUpdating = False
>  Set r = Sheets("sheet1").Range("A2").CurrentRegion
>  With ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
>       SourceData:=r.Address(external:=True)). _
>       CreatePivotTable(TableDestination:="")
>    .Format xlPTNone
>    .AddFields RowFields:=Array(r.Cells(1).Value, r.Cells(2).Value), _
>       ColumnFields:=r.Cells(3).Value
>    With .PivotFields(r.Cells(4).Value)
>      .Orientation = xlDataField
>      .Function = xlSum
>    End With
>    .PivotFields(r.Cells(1).Value).Subtotals(1) = False
>    With .TableRange1
>      .Copy
>      .PasteSpecial Paste:=xlPasteValues
>      .Interior.ColorIndex = xlNone
>      .Rows(1).Delete
>      .BorderAround Weight:=xlThin
>      .Borders(xlInsideVertical).Weight = xlThin
>      .Borders(xlInsideHorizontal).Weight = xlThin
>    End With
>  End With
>  Set r = Nothing
>  Application.ScreenUpdating = True
>End Sub
>
>↓これは蛇足。
>Sub fncsample()
>  Dim sh As Worksheet
>  Dim s As String
>  Set sh = Sheets("sheet2")
>  sh.UsedRange.Clear
>  With Sheets("sheet1").Range("A2").CurrentRegion
>    .Resize(, 2).AdvancedFilter _
>      Action:=xlFilterCopy, CopyToRange:=sh.Range("A1"), Unique:=True
>    .Columns(3).AdvancedFilter _
>      Action:=xlFilterInPlace, Unique:=True
>    .Columns(3).Offset(1).SpecialCells(xlCellTypeVisible).Copy
>      sh.Range("C1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
>    Application.CutCopyMode = False
>    .Worksheet.ShowAllData
>    With .Resize(.Rows.Count - 1).Offset(1)
>      s = "=SUMPRODUCT((Sheet1!" & .Columns(1).Address & "&Sheet1!" _
>        & .Columns(3).Address & "=" & "$A2&C$1)*Sheet1!" & .Columns(4).Address & ")"
>    End With
>    With sh.Range("A1").CurrentRegion
>      With .Resize(.Rows.Count - 1, .Columns.Count - 2).Offset(1, 2)
>        .Formula = s
>        .Value = .Value
>        s = .Rows(1).Address(0, 1)
>        With .Resize(, 1).Offset(, .Columns.Count)
>          .Formula = "=SUM(" & s & ")"
>          .Value = .Value
>          .Offset(-1).Resize(1).Value = "不良合計"
>        End With
>      End With
>    End With
>  End With
>  Set sh = Nothing
>End Sub
>
>[#41860]のシートレイアウトでテスト。ただしSheet2はA1起点。
>解説は苦手なのでまずは[ローカルウィンドウ]+[ステップ実行]が理解への近道かと。
>#ADO+SQLはテストしてないのでレスできません。
Nedさんはこういうコードをわずかな時間で書けるのでしょうか。
うらやしい どんな勉強法ですか???
★いい勉強方法があれば教えて下さい。

とにかく思っていたことは全て解決しました。
ありがとうございました。_(._.)_(^o^)

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 お礼

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