如何在Excel中自动删除行
考虑以下(部分)Excel工作表:如何在Excel中自动删除行,excel,Excel,考虑以下(部分)Excel工作表: A | B | C | D ---+-------------+-------+------- id | date | var_a | var_b 1 | 2011-03-12 | 200 | 34.22 1 | 2011-03-13 | 203 | 35.13 1 | 2011-03-14 | 205 | 34.14 1 | 2011-03-15 | 207 | 54.88 1
A | B | C | D
---+-------------+-------+-------
id | date | var_a | var_b
1 | 2011-03-12 | 200 | 34.22
1 | 2011-03-13 | 203 | 35.13
1 | 2011-03-14 | 205 | 34.14
1 | 2011-03-15 | 207 | 54.88
1 | 2011-03-16 | 208 | 12.01
1 | 2011-03-18 | 203 | 76.10
1 | 2011-03-19 | 210 | 14.86
1 | 2011-03-20 | 200 | 25.45
. | . | . | .
. | . | . | .
2 | 2011-03-12 | 200 | 34.22
2 | 2011-03-13 | 203 | 35.13
2 | 2011-03-14 | 205 | 34.14
2 | 2011-03-15 | 207 | 54.88
2 | 2011-03-16 | 208 | 12.01
2 | 2011-03-18 | 203 | 76.10
2 | 2011-03-19 | 210 | 14.86
2 | 2011-03-20 | 200 | 25.45
. | . | . | .
. | . | . | .
实际上,共有5000多行。我需要删除所有日期在周六或周日的行。在本例中,3月12日和13日(2011-03-12/13)
以及3月19日和20日是周六和周日。我不能每N行就删除一次,因为列表中可能会缺少几天(这里的例子是2011-03-17
)
这是否可以通过公式或VBScript实现?我以前从未编写过VBScript宏(我从未使用过它),因此我希望能得到一些帮助。诀窍是,您不需要删除这些行,您需要将它们的C和D值替换为0。在引用C和D的两个新列C'和D'中使用IF()和WEEKDAY()最容易做到这一点。然后可以随意删除C和D。诀窍是不需要删除这些行,需要将它们的C和D值替换为0。在引用C和D的两个新列C'和D'中使用IF()和WEEKDAY()最容易做到这一点。请随意删除C和D。如果您只需要执行一次,我会这样做。这应该可以维持秩序,但如果你真的担心,请阅读文章的最后部分:
=if(工作日(B2,2)>5,1,0)
。将整个表格的公式向下拖动- 在Excel 2007+上,转到数据->单击“筛选”
- 在Excel 2003上,转到数据->筛选->自动筛选
如果你只需要做一次,这就是我会做的。这应该可以维持秩序,但如果你真的担心,请阅读文章的最后部分:
=if(工作日(B2,2)>5,1,0)
。将整个表格的公式向下拖动- 在Excel 2007+上,转到数据->单击“筛选”
- 在Excel 2003上,转到数据->筛选->自动筛选
您可以使用一个按钮一次性完成此操作。在单元格
E2
中,输入以下公式(在一行上),然后按Ctrl-Shift-enter键确认(与常规enter键相反)
5000表示电子表格中的行数。在此之后,公式周围应该有花括号,以指示它是一个数组公式E2
应具有值1
。然后选择单元格E2
,并将单元格右下角向右拖动,直到覆盖4个单元格。然后将4单元选择的右下角一直向下拖动。在底部,您将看到包含#NUM代码>,每删除一行一个。您可以按常规方式删除这些内容
您可以在新工作表的单元格A2
中开始,而不是在单元格E2
中开始。在这种情况下,您需要在公式中的每个引用前面加上原始图纸名称,如OriginalSheet$A$2
此公式是对中给出的公式的改编。您可以使用。在单元格E2
中,输入以下公式(在一行上),然后按Ctrl-Shift-enter键确认(与常规enter键相反)
5000表示电子表格中的行数。在此之后,公式周围应该有花括号,以指示它是一个数组公式E2
应具有值1
。然后选择单元格E2
,并将单元格右下角向右拖动,直到覆盖4个单元格。然后将4单元选择的右下角一直向下拖动。在底部,您将看到包含#NUM代码>,每删除一行一个。您可以按常规方式删除这些内容
您可以在新工作表的单元格A2
中开始,而不是在单元格E2
中开始。在这种情况下,您需要在公式中的每个引用前面加上原始图纸名称,如OriginalSheet$A$2
此公式是中给出的公式的改编。如果您决定删除行,请确保从最后一行到第一行运行VBA代码。下面是一段刚刚从内存中编写的代码,它向您展示了从下到上运行的思想
For i = Selection.Rows.Count To 1 Step -1
If WEEKDAY(Cells(r, 2),2) > 5 Then
Selection.Rows(i).EntireRow.Delete
End If
Next i
如果您决定删除行,请确保从最后一行到最后一行运行VBA代码
For i = Selection.Rows.Count To 1 Step -1
If WEEKDAY(Cells(r, 2),2) > 5 Then
Selection.Rows(i).EntireRow.Delete
End If
Next i