Excel 中两列之间的数据逻辑过滤

Excel 中两列之间的数据逻辑过滤

这是一个简单的 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您喜欢的变量,仅此而已。

相关内容