遇到一個奇怪的情況,
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
你好,
請問是 第 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 做排序時資料缺少
你再看看有沒有解決你的問題, 謝謝
您好
有改動的是第6行、及倒數9.12.15行,有650000的都改成1000000就出問題了
工作表1資料減少是沒錯的
工作表2跑完以後出來的資料就短少了
情況很玄阿~~~
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 行, 可能是問題所在,
沒看過你的資料 (檔案) 不知道你所要的操作及結果
歡迎討論