1

Consider the following (partial) Excel worksheet:

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
.  |  .          |  .    |  .
.  |  .          |  .    |  .

In reality, there are over 5.000 rows. I need to delete all rows which date falls on a saturday or sunday. In the example, March 12 and 13 (2011-03-12/13) and March 19 and 20 are Saturdays and Sundays. I cannot just delete every nth rows, since there might be days missing in the list (as is the case here with 2011-03-17).

Is this possible to do with either a formula or VBScript? I have never written a VBScript macro before (I have never had a use for it) so I would appreciate some help.

4

4 に答える 4

1

秘訣は、これらの行を削除する必要がないことです。C と D の値を 0 に置き換える必要があります。これは、C を参照する 2 つの新しい列 C' と D' 内で IF() と WEEKDAY() を使用して行うのが最も簡単です。と D. 自由に C と D を削除してください。

于 2012-08-04T21:47:12.130 に答える
1

行を削除する場合は、必ず最後の行から最初の行まで 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
于 2012-08-05T17:50:06.347 に答える