使用可变但相同行数格式化消毒列,并且列不相邻

时间:2017-04-04 08:36:08

标签: excel vba excel-vba excel-automation

我的数据有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的列执行此操作 Screenshot 1

但如果我使用

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

列G和H格式正确,但是列J不是,它给了我#NA条目。 Screenshot 2

1 个答案:

答案 0 :(得分: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