返回列表 上一主題 發帖

[發問] 項相分類重整

回復 5# Andy2483
試試進階篩選
  1. Option Explicit
  2. Dim Rng(1 To 5) As Range
  3. Sub 項相分類重整()
  4.     設定
  5.     進階篩選
  6. End Sub
  7. Private Sub 設定()
  8.     Set Rng(1) = Sheets("分類帳").Range("A1").CurrentRegion
  9.     With Sheets("結果")
  10.         .Cells.Clear
  11.         Set Rng(2) = .[Z1]   '存放明細科目_幣別攔 不重復的項目
  12.         Set Rng(5) = .[A1]  '存放每次篩選的位置
  13.     End With
  14.     Rng(1).Range("A1").Copy Rng(2)
  15.     Rng(1).AdvancedFilter xlFilterCopy, Rng(2).Cells.Resize(2), Rng(2), True ' "明細科目_幣別"篩選不重復的項目
  16.     Set Rng(3) = Rng(2).Offset(, 1)                 '篩選的準則範圍
  17.      Rng(1).Range("A1,D1").Copy Rng(3)    '準則的欄位
  18.     Set Rng(4) = Rng(3).Offset(, 3)                 '指定被複製列的目標範圍
  19. End Sub
  20. Private Sub 進階篩選()
  21.     Dim i As Integer, R As Range
  22.     Rng(3).Range("B2") = "=" & """<>" & "    本 日 合 計"""                         '填[摘要]入準則 條件
  23.     i = 2
  24.     Do While Rng(2).Cells(i) <> ""
  25.         Rng(4).CurrentRegion.Clear
  26.         Rng(3).Range("A2") = Rng(2).Cells(i)                                                        '填入[明細科目_幣別]準則條件
  27.         Rng(1).AdvancedFilter xlFilterCopy, Rng(3).Resize(2, 2), Rng(4)      '進階篩選'
  28.         Rng(5) = Rng(2).Cells(i).Value                                                                     '標頭 篩選的[明細科目_幣別]
  29.         Rng(4).CurrentRegion.Offset(, 1).Copy Rng(5).Offset(1)                   '資料的範圍 .Offset(, 1) 向右移動一攔 **不需要 [明細科目_幣別]欄
  30.         Set Rng(5) = Rng(5).End(xlDown).Offset(2)
  31.         i = i + 1
  32.     Loop
  33. End Sub
複製代碼

TOP

回復 9# Andy2483
可搓摩一下
  1. Option Explicit
  2. Sub TEST()
  3. Dim Sh As Worksheet, Rng As Range, i As Integer
  4.     Set Sh = Sheets("分類帳")
  5.     With Sheets("結果")
  6.         .Cells.Clear
  7.         Set Rng = .[a1]
  8.         Sh.Range("A:A").AdvancedFilter xlFilterCopy, , .[Z1], True  '
  9.          Sh.Range("A1,d1").Copy .[aa1]
  10.         .[ab2] = "=" & """<>" & "    本 日 合 計"""                        '填[摘要]入準則 條件
  11.         i = 2
  12.         Do While .[Z1].Cells(i) <> ""
  13.             .Range("aa2," & Rng.Address) = .[Z1].Cells(i)            '
  14.             Sh.Range("B1:H1").Copy Rng.Cells(2)
  15.             Sh.Range("a:H").AdvancedFilter xlFilterCopy, .[aa1:ab2], Rng.Cells(2).Resize(1, 7)    '進階篩選'
  16.             Set Rng = Rng.End(xlDown).Offset(2)         
  17.             i = i + 1
  18.         Loop
  19.     End With
  20. End Sub
複製代碼

TOP

        靜思自在 : 受人點水之恩,須當湧泉以報。
返回列表 上一主題