Инвертирование строки (столбца) в Excel макросом

Apr 28, 2014 17:45

Внезапно выяснилось, что эксель не умеет штатными средствами переставлять значения ячеек в столбце в обратном порядке не зависимо от содержимого ячеек. Можно сортировать, но это не всегда подходит. В интернетах на этот случай советуют писать странного вида формулы, но мне показалось это не слишком удобным и понятным. Пришлось написать макрос:

Sub reverseSelection()
Dim resultRange() As String
Dim i As Long
Dim rangeCount As Long
rangeCount = Selection.Count
ReDim resultRange(rangeCount)
For i = 1 To rangeCount
resultRange(rangeCount + 1 - i) = Selection.Cells(i)
Next i
For i = 1 To rangeCount
Selection.Cells(i) = resultRange(i)
Next i
End Sub

Я первый раз написал что-то на VBA, так что вполне возможно макрос написан на грани бреда, бейсик вообще тоже давно забыт. Корректно работает на ограниченно выделенном диапазоне ячеек, если выделить весь столбец, то после работы скрипта содержимое ячеки 1 окажется в районе ячейки 65535. Если выделить несколько столбцов/строк то переставка будет идти зигзагом сверху-вниз, слева-напаво (столбцы просто склеятся в один длинный столбец, столбец инвертируется, а потом обратно разрежется).

укрощение диких пэвмов

Previous post Next post
Up