使用可变但行数相等的格式对消毒列进行格式化,并且列不相邻

我的数据有10列以上,我想select三列, 进一步格式这三列 ,但没有。 行不固定,所以我无法一次select所有这三列。 这是我想要做的

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

但是这也是selectI列。 我也试过这个

 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

你必须循环遍历每个连续的范围,你可以通过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