A.局部篩選不清空:
'If i = 1 Then LstSht.UsedRange.Offset(1, 0).EntireRow.Delete '明細先清空
改為
If i = 1 And FilterNum = 2 Then LstSht.UsedRange.Offset(1, 0).EntireRow.Delete '明細先清空
B.第一筆資料漏掉:
For j = 1 To 10
If Arr(i, j + 3) = "-" Then GoTo 101
FClmn = Range(Arr(i, j + 3) & 1).Column
'ErpUsedRng.Columns(FClmn).Offset(2, 0).Copy xEnd(1, j)
改為
ErpUsedRng.Columns(FClmn).Offset(1, 0).Copy xEnd(1, j)
101: Next j
C.公式變成#REF:
With LstSht.UsedRange.Offset(1, 0)
.Sort Key1:=.Item(2), Order1:=xlAscending, Header:=xlNo '明細表以B欄排序
With .Columns(1)
'.Formula = "=IF(B2="""",0/0,1/(1-(B2=B1)))" '排除〔重覆〕公式
改為
.Formula = "=IF(OR(OFFSET(A2,,1)="""",OFFSET(A2,,1)=OFFSET(A2,-1,1)),0/0,1)" '排除〔重覆〕公式
.Calculate '公式重新計算
On Error Resume Next
.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Delete '刪除重覆列資料(到.公式.錯誤值)
On Error GoTo 0
'其實上方公式只是用來刪除重覆,是可以清空的
'.ClearContents →加入這一行清空公式
End With
End With
LstSht.UsedRange.AutoFilter '←增加這一行,表頭成為〔篩選模式〕
LstBook.Save
D.BOM表篩選模式
With BomSht
Intersect(.[D:M], .UsedRange.Offset(1, 0)).ClearContents '清除BOM表D:M欄資料
.[D2:M2].Resize(UBound(Arr)) = Arr
.UsedRange.AutoFilter '←增加這一行,表頭成為〔篩選模式〕
End With