2

我的数据有 10 多列,我想从中选择三列并进一步格式化这三列,但没有。行数不固定,因此我无法一次选择所有这三列。这是我想要做的

Dim lastrow As Long
lastrow = Range("A" & Rows.Count).End(xlUp).Row
Range("G2:H" & lastrow, "J2:J" & lastrow).Select

但这也选择了 I 列。我也试过这个

Range("G2:H & lastrow, J2:J" &lastrow).select

但这给了我预期的错误。

使用时

Range("J2:J" & lastrow).Select 
With Selection
    .NumberFormat = "0"
    .Value = .Value
End With

数据格式正确,但我想对所有三个不是 adjacnet 的列执行此操作 截图 1

但是如果我使用

 Intersect(Range("G:H, J:J"), Rows("2:" & lastrow)).Select
 With Selection
     .NumberFormat = "0"
     .Value = .Value
 End With

G 列和 H 列的格式正确,但 J 列没有,它给了我#NA 条目。 截图 2

4

1 回答 1

3

您必须遍历每个连续范围,您可以通过Areas()属性获得,如下所示:

Dim lastrow As Long
lastrow = Range("A" & Rows.Count).End(xlUp).Row
Dim area As Range

With Intersect(Range("G:H, J:J"), Rows("2:" & lastrow))
    .NumberFormat = "0"
    For Each area In .Areas
        area.Value = area.Value
    Next
End With
于 2017-04-04T08:38:51.843 回答