这是一个简单的 Excel 问题,但结果比预想的要复杂得多,因此我将把它发布在这里。
我记录了一些数据,其中输入 A 用于对哪些行有效进行排序。有 +3000 行,因此下图只是简化。
| A | B | C | X |
-----------------
| 0 | 2 | 1 | |
| 0 | 4 | 2 | |
| 2 | 1 | 7 | |
| 4 | 9 | 1 | |
| 3 | 7 | 4 | |
| 0 | 8 | 2 | |
| 0 | 7 | 7 | |
我的问题是如何复制满足需求的所有行(或更准确地说,它们的值)A[i] >= 0
到其他单元格(X、Y、Z 等),即过滤原始数据,而不包含“FALSE”或空白单元格?
注意:数据是按照时间顺序记录的,因此不能直接进行排序。
答案1
该 VBA 代码应该可以工作:
Public Sub custom_filtering()
Dim wks As Worksheet
Set wks = ActiveSheet
firstcolumn = 1 'The first column of the original data. A=1, B=2, C=3, etc.
totalcolumns = 2 'The total of columns to be copied
factor = 1 'The factor to consider a range to be copied
destrow = 1 ' The row where the copied data starts
destcolumn = 5 'The column where the copied data starts
totalrows = wks.Cells(Rows.Count, firstcolumn).End(xlUp).Row
For i = 1 To totalrows
thecell = wks.Cells(i, firstcolumn)
If thecell < factor Then
Range(Cells(i, firstcolumn), Cells(i, totalcolumns)).Copy Destination:=Range(Cells(destrow, destcolumn), Cells(destrow, destcolumn + totalcolumns))
destrow = destrow + 1
End If
Next i
End Sub
使用ALT+打开 VBA/宏F11。
在左侧双击工作表,在右侧粘贴代码。
设置变量,主要是factor
您喜欢的变量,仅此而已。