Я сортирую следующие столбцы независимо и в порядке убывания, то есть наибольшее значение в каждом столбце всегда будет в верхней строке. Тем не менее, у меня есть несколько пустых ячеек в таблице.
На самом деле они не пустые, а формула индекса / соответствия ссылается на другую ячейку формулы IFERROR(H2/I2,"")
, которая дает пустой ответ. sh Чтобы отсортировать пустые ячейки внизу каждого столбца при выполнении сортировки по убыванию.
Как я могу изменить следующий код VBA, чтобы разрешить это? Я бы предпочел, чтобы решение было более общим c, а также позаботился о ситуации, когда я сортирую положительные и отрицательные числа в заполненных ячейках в порядке убывания.
Sub SortIndividualCol()
Dim xRg As Range
Dim yRg As Range
Dim ws As Worksheet
Set ws = ActiveSheet
On Error Resume Next
Set xRg = Application.InputBox(Prompt:="Range Selection:", _
Title:="Input header range", Type:=8)
Application.ScreenUpdating = False
For Each yRg In xRg
With ws.Sort
.SortFields.Clear
.SortFields.Add Key:=yRg, Order:=xlDescending
.SetRange ws.Range(yRg, yRg.End(xlDown))
.Header = xlYes
.MatchCase = False
.Apply
End With
Next yRg
Application.ScreenUpdating = True
Перед сортировкой:
После сортировки по убыванию, но пустые ячейки отсортированы сверху: