Форматирование разделенных столбцов с переменной, но равным количеством строк, причем столбцы не являются смежными

Мои данные имеют более 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

Данные форматируются должным образом, но я хочу сделать это для всех трех столбцов, которые не являются соседними Снимок экрана 1

Но если я использую

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

Столбцы G и H форматируются должным образом, а столбцы J - нет, это дает мне записи #NA. Снимок экрана 2

1 ответ

Решение

Вы должны пройти через все смежные диапазоны, которые вы можете получить с помощью 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
Другие вопросы по тегам