1

У меня есть лист с пятью столбцами AE и почти 10000 строк. Мне нужно отсортировать каждые 7 строк до конца рабочего листа, используя данные в столбце C.

Следующий код выполняет работу для диапазона A1:E7. Можно ли изменить этот код, чтобы отсортировать каждые 7 строк, используя соответствующие данные в столбце C в пределах своего диапазона, например C8:C14 для диапазона A8:E14 и C15:C21 для диапазона A15:E21 ... и т.д.?

Sub sort_7_rows()

Range("A1:E7").Select
ActiveWorkbook.Worksheets("sequencing (2)").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("sequencing (2)").Sort.SortFields.Add Key:=Range( _
    "C1:C7"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal
With ActiveWorkbook.Worksheets("sequencing (2)").Sort
    .SetRange Range("A1:E7")
    .Header = xlGuess
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

End Sub


Любая помощь экспертов в этом вопросе высоко ценится. заранее спасибо

1 ответ1

0

Есть довольно простой способ сделать это без VBA. Это требует, чтобы вы создали два новых столбца. В первом столбце просто напечатайте номер вашей строки; так, например, в строке 1 введите 1 и во второй строке введите 2 . Затем выберите обе ячейки и заполните до конца вашего набора данных, то есть 10000 строк.

Во втором столбце, который вы создали, введите уравнение =ROUNDUP(A1/7,0)*7 . Затем заполните уравнение до самого конца набора данных. Это округлит каждое число в первом столбце до ближайшего числа, кратного 7. По сути, это группирует ваши данные по семи строкам.

Наконец, вы отсортируете свой набор данных с помощью окна Sort :

Сначала выполните сортировку по значениям во втором созданном вами столбце, а затем по значениям в том, что вы назвали "строкой C" в своем вопросе.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .