| 
    
     |  | 下記のようなDBがあり、それをマクロを使用し 種類と種でフィルタをかけ下記のような結果を各シートごとに保存しています。
 
 Sub 抽結果別シートへ保存()
 抽出 "coke", 1, "normal", 2
 抽出 "coke", 1, "diet", 2
 抽出 "'grape", 1
 抽出 "soda", 1
 抽出 "orange", 1
 End Sub
 '分類=分類を文字列で指定。項目=列番号を数字で指定
 Private Sub 抽出(ByVal 種類 As String, ByVal 項目 As Integer, _
 Optional ByVal 種 As String, Optional ByVal 項目2 As Integer)
 Dim Org_Sh As Worksheet '元Sheet
 Dim Des_Sh As Worksheet '先Sheet
 Dim ErFg As Boolean  '引数のエラーフラグ
 Dim ShName As String  'Sheetの名前 追加。
 
 '引数のエラー判定
 ErFg = False
 Select Case True
 Case 項目 = 0: ErFg = True
 Case 種 <> "" And 項目2 = 0: ErFg = True
 Case 種 = "" And 項目2 <> 0: ErFg = True
 End Select
 
 If ErFg = True Then
 MsgBox "引数が正しくありません" & vbCr _
 & 種類 & "," & 項目 & "," & 種 & "," & 項目2
 Exit Sub
 End If
 '元SheetをSet
 Set Org_Sh = Worksheets("取込DB")
 
 '先SheetをSet なければ作成。種の引数判定を追加
 If 種 <> "" Then
 ShName = 種類 & "_" & 種
 Else
 ShName = 種類
 End If
 On Error Resume Next
 Set Des_Sh = Worksheets(ShName)
 On Error GoTo 0
 If Des_Sh Is Nothing Then
 Set Des_Sh = Worksheets.Add(After:=Worksheets(Worksheets.Count))
 Des_Sh.Name = ShName
 Else
 Des_Sh.Cells.Clear
 End If
 
 'AutoFilterでコピー 第2種類がある場合の動作を追加
 With Org_Sh.UsedRange
 '第2引数がない場合、項目列が違う場合
 If 項目 <> 項目2 Then
 .AutoFilter Field:=項目, Criteria1:=種類
 If 種 <> "" And 項目2 <> 0 Then
 .AutoFilter Field:=項目2, Criteria1:=種
 End If
 End If
 '第2引数ありで項目列が同じ場合。Or種類で抽出
 If 項目 = 項目2 Then
 .AutoFilter Field:=項目, Criteria1:=種類, Operator:=xlOr, Criteria2:=種
 End If
 .SpecialCells(xlVisible).Copy Des_Sh.Range("A1")
 .AutoFilter
 End With
 
 
 DBイメージ↓
 
 種類    種    storecode        8月    9月
 -----------------------------------------------------
 coke    normal    115        16,000    77,000
 coke    diet    A11        20,000    29,800
 orange    99    114        18,380    6,900
 coke    normal    321        19,000    25,000
 grape    99    211        25,000    6,970
 soda    99    131        25,000    20,100
 coke    normal    B21        39,000    48,900
 coke    diet    B11        58,000    63,000
 orange    99    221        15,200    4,880
 soda    99    B31        35,000    36,000
 grape    99    113        36,400    48,500
 coke    diet    B11        40,000    51,099
 soda    99    133        46,000    19,000
 soda    99    122        68,000    10,000
 coke    normal    115        58,000    45,000
 
 [coke_normal]シート
 種類    種    storecode        8月    9月
 -----------------------------------------------------
 coke    normal    115        16,000    77,000
 coke    normal    321        19,000    25,000
 coke    normal    B21        39,000    48,900
 coke    normal    115        58,000    45,000
 
 [coke_diet]シート
 種類    種    storecode        8月    9月
 -----------------------------------------------------
 coke    diet    A11        20,000    29,800
 coke    diet    B11        58,000    63,000
 coke    diet    B11        40,000    51,099
 
 [grape]シート
 種類    種    storecode        8月    9月
 -----------------------------------------------------
 grape    99    211        25,000    6,970
 grape    99    113        36,400    48,500
 
 
 今回お伺いしたいのは
 さらに各シートの中でstoreコードごとに指定したリストの順通りに並べ集計をしたいのですが、
 毎回レコード数も違い、なかなか上手くいきません。
 よいお知恵があればお力をお借りしたいと思っています。
 よろしくお願いします。
 
 ---------↓↓↓↓↓↓↓---------
 
 [coke_normal]シート
 storecode    store            8月    9月
 -----------------------------------------------------
 115    大阪            74,000    122000
 121    仙台            0    0
 321    八日市            19,000    25,000
 131    福岡            0    0
 132    香港            0    0
 133    上海            0    0
 211    台湾            0    0
 221    関西            0    0
 231    長岡            0    0
 311    松元            0    0
 114    東京            0    0
 A11    大津            0    0
 113    京都            0    0
 B31    札幌            0    0
 122    愛知            0    0
 B11    堅田            0    0
 B21    船橋            39,000    48,900
 
 
 リスト
 code    store
 115    大阪
 121    仙台
 321    八日市
 131    福岡
 132    香港
 133    上海
 211    台湾
 221    関西
 231    長岡
 311    松元
 114    東京
 A11    大津
 113    京都
 B31    札幌
 122    愛知
 B11    堅田
 B21    船橋
 
 |  |