Другие проблемы 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.

Этот совет (2890) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

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