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

Function GetFillColor(rng As Range) As Long     GetFillColor = rng.Interior.ColorIndex End Function

Предполагая, что цвета заливки находятся в ячейках столбца A, все, что вам нужно сделать, это убедиться, что есть пустой столбец B. Затем поместите следующую формулу в ячейку B2 и скопируйте ее для каждой записи:

=GetFillColor(A2)

Когда вы закончите, столбец B будет содержать значения индекса для каждого цвета заливки, используемого в столбце A. Затем вы можете выполнить сортировку по столбцу B, в результате чего все похожие цвета заливки будут сгруппированы вместе.

Если вам нужно более детально, например, если вам нужно отсортировать в определенном порядке (сначала желтый, второй красный, третий зеленый и т. Д.), То вы не можете полагаться только на значение индекса цвета заливки. В таком случае вы должны полагаться на другой метод возврата цвета.

Рассмотрим следующий макрос:

Function GetColor(rngIndex As Range, rngSource As Range) As Long     Dim lngColor As Long     Dim J As Integer

Application.Volatile     lngColor = rngSource.Interior.ColorIndex

GetColor = 99       'Set to default color     For J = 1 To rngIndex.Count         If rngIndex(J).Interior.ColorIndex = lngColor Then             GetColor = J         End If     Next J End Function

Этот макрос работает иначе, чем предыдущий. Для правильной работы требуется два диапазона. Первый диапазон — это таблица цветов, в которой указывается порядок сортировки цветов. Например, ячейки с E1 по E9 могут содержать девять цветов, которые вы хотите использовать для сортировки, в том порядке, в котором вы хотите их отсортировать. Затем поместите следующую формулу в ячейку B2 и скопируйте ее для каждой записи:

=GetColor($E$1:$E$9,A2)

В результате столбец B будет содержать значения от 1 до 9, представляющие цвета в вашей таблице цветов. Если цвет в ячейке не имеет соответствующего цвета в таблице цветов, функция возвращает значение 99. Когда вы сортируете записи в своей таблице, вы в конечном итоге сортируете их так, как хотите.

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

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

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

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

Этот совет (2009 г.) применим к Microsoft Excel 97, 2000, 2002 и 2003.