Другие проблемы ExcelTips предоставляют способы сортировки листов в книге на основе имени листа. Однако что, если вы хотите отсортировать листы на основе значения в данной ячейке каждого листа? Например, у вас может быть серия листов с одним и тем же общим макетом, и вы хотите, чтобы листы упорядочивались на основе значения в ячейке H7 каждого листа.

Единственный способ справиться с этим — использовать макрос. Макрос должен пройти по каждому листу в книге, а затем проверить ключевую ячейку на каждом последующем листе, чтобы увидеть, как она сравнивается с той же ячейкой на других листах. Если значение ячейки меньше текущего рабочего листа, то рабочий лист, содержащий меньшее значение, можно переместить.

Sub SortWksByCell()

Dim i As Integer     Dim j As Integer

For i = 1 To Worksheets.Count         For j = i To Worksheets.Count             If UCase(Worksheets(j).Range("H7")) < _               UCase(Worksheets(i).Range("H7")) Then                 Worksheets(j).Move Before:=Worksheets(i)

End If         Next     Next End Sub

Обратите внимание на использование метода Move, который выполняет фактическое перемещение листов. Имена листов не имеют значения, только их расположение на основе значения в ячейке H7 каждого листа.

_Примечание: _

Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (12448) применим к Microsoft Excel 2007, 2010, 2013 и 2016.

Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Ordering_Worksheets_Based_on_a_Cell_Value [Упорядочивание рабочих листов на основе значения ячейки].