2017-04-04 58 views
2

我的数据有10列以上,我想选择三列,并且进一步格式化这三列,但是没有。行不固定,所以我无法一次选择所有这三列。 这里是我想要做的格式化可变但行数相等的消毒列,并且列不相邻

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

但是,这是我选择的列也是如此。 我想这也

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

回答

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 
+0

感谢!它完美:) – Digvijay

+1

...你可能想将答案标记为已接受:-) – user3598756

+0

是的,我已经做到了。 – Digvijay

相关问题