VBA初心者です。 条件と繰り返しで悩んでいます。 VBAで①の表を②の表に変換したいと思っています。 ① 店名 種別 商品 A店 野菜 白菜1 A店 野菜 キャベツ3 A店 野菜 シイタケ4 A店 果物 リンゴ1 A店 果物 みかん1 A店 果物 ブドウ1 B店 果物 リンゴ2 B店 果物 みかん1 B店 果物 イチゴ2 C店 野菜 キャベツ3 D店 野菜 白菜1 D店 野菜 キャベツ5 D店 野菜 ナス2 D店 果物 イチゴ6 D店 果物 リンゴ6 D店 果物 みかん8 D店 果物 ブドウ6 ② A店 野菜 白菜1 キャベツ3 シイタケ4 A店 果物 リンゴ1 みかん1 ブドウ1 B店 果物 リンゴ2 みかん1 イチゴ2 C店 野菜 キャベツ3 D店 野菜 白菜1 キャベツ5 ナス2 D店 果物 イチゴ6 リンゴ6 みかん8 ブドウ6 ■マクロ Sub 注文種別並べ替え() Dim i As Long, 最終行 As Long 最終行 = Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To 最終行 '種類2個目 If Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 2) = Cells(i + 1, 2) _ And Not Cells(i, 3) = "" Then Cells(i + 1, 3).Cut Cells(i, 4) '種類3個目 ElseIf _ Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 2) = Cells(i + 1, 2) _ And Not Cells(i - 1, 3) = "" _ And Cells(i - 1, 5) = "" Then Cells(i + 1, 3).Cut Cells(i - 1, 5) '種類4個目 ElseIf _ Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 2) = Cells(i + 1, 2) _ And Not Cells(i - 2, 3) = "" _ And Not Cells(i - 2, 4) = "" _ And Cells(i - 2, 7) = "" Then Cells(i + 1, 3).Cut Cells(i - 2, 6) '種類5個目 ElseIf _ Cells(i, 1) = Cells(i + 1, 1) And Cells(i, 2) = Cells(i + 1, 2) _ And Not Cells(i - 3, 3) = "" _ And Not Cells(i - 3, 4) = "" _ And Not Cells(i - 3, 5) = "" _ And Cells(i - 3, 8) = "" Then Cells(i + 1, 3).Cut Cells(i - 3, 7) Else End If Next i End Sub 一応何とか、店舗セルを下のセルと等しく野菜/果物の分類も等しく且つCセルの下が空白かどうかで移動する場所を変えるみたいな書きかたになってしまったたのですが、この方法だと書いた分の種類(現状5種類)までしか対応できず 取り扱い品種が増えたりほかのデータへの応用ができないので困っています。 上限が出来て上限なく商品種が増やせるようにしたいと思い 2次元配列というのも調べてみたのですが増え方がこんがらがって自分で解決できなくなってしまいました。 どのように変えればいいでしょうか? ご教授の程よろしくお願います。
Visual Basic