iT邦幫忙

0

VBA 篩選 為何修改範圍後跑出來的結果會變少?

遇到一個奇怪的情況,
VBA程式碼如下,把所有650000的範圍改成1000000後,資料跑出來的筆數會變少
我有比對過程式其他地方,只要更動這個範圍跑出來結果就不齊全,請問問題在哪?
系統是Win10、Office2010

Sub sa()
    Do While Range("B1") <> ""

        Sheets("工作表1").Activate
        Range("A1").Select
        Selection.AutoFilter
        ActiveSheet.Range("$B$1:$B$650000").AutoFilter Field:=2, Criteria1:=Range("B1")
        Range(Selection, Selection.End(xlDown)).Select
        Range(Selection, Selection.End(xlToRight)).Select
        Selection.Cut
       
        Sheets("工作表2").Activate
        Columns("B:B").Select
        Selection.End(xlDown).Select
        ActiveCell.Offset(1, -1).Range("A1").Select
        ActiveSheet.Paste
        
        Sheets("工作表1").Activate
        Selection.AutoFilter
            Cells.Select
        ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Clear
        ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Add Key:=Range( _
            "B1:B650000"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortNormal
        ActiveWorkbook.Worksheets("工作表1").Sort.SortFields.Add Key:=Range( _
            "A1:A650000"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:= _
            xlSortNormal
        With ActiveWorkbook.Worksheets("工作表1").Sort
            .SetRange Range("A1:H650000")
            .Header = xlGuess
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
      Loop
End Sub

1 個回答

0
RoT
iT邦新手 5 級 ‧ 2020-11-16 10:52:30

你好,

請問是 第 6 行 =>

ActiveSheet.Range("$B$1:$B$650000").AutoFilter Field:=2, Criteria1:=Range("B1")

更改為 =>

ActiveSheet.Range("$B$1:$B$1000000").AutoFilter Field:=2, Criteria1:=Range("B1") 

嗎?

我不知道你所說的 "結果不齊全" 是在 工作表1 篩選後剪下貼到 工作表2 的資料不齊全嗎?

還是貼上 工作表2 回到 工作表1 做排序後發現 工作表1 的資料有缺少。

若是在 工作表1 篩選資料不齊全目前是沒有這個問題,

但在回到 工作表1 做排序資料有缺少問題出在 第 9 行 =>

Selection.Cut

你 工作表1 篩選的資料剪下, 貼上 工作表2, 導致回去 工作表1 做排序時資料缺少

你再看看有沒有解決你的問題, 謝謝

akissiva iT邦新手 5 級 ‧ 2020-11-16 11:21:53 檢舉

您好
有改動的是第6行、及倒數9.12.15行,有650000的都改成1000000就出問題了
工作表1資料減少是沒錯的
工作表2跑完以後出來的資料就短少了
情況很玄阿~~~

RoT iT邦新手 5 級 ‧ 2020-11-16 14:27:46 檢舉

akissiva, 你好

問題在 工作表1 篩選資料, 貼上 工作表2, 發現資料缺少,

以下 10 ~ 14 行, 是貼上 工作表2 的敘述

    Sheets("工作表2").Activate
    Columns("B:B").Select
    Selection.End(xlDown).Select
    ActiveCell.Offset(1, -1).Range("A1").Select
    ActiveSheet.Paste

篩選過後, 我自行貼上沒有缺少資料,

這 10 ~ 14 行, 可能是問題所在,

沒看過你的資料 (檔案) 不知道你所要的操作及結果

歡迎討論

我要發表回答

立即登入回答