Сортировка по цветам (Microsoft Excel)
Excel позволяет сортировать данные на листах по любому количеству атрибутов. Однако одна из вещей, по которой вы не можете выполнять сортировку по существу, — это цвет ячеек, по крайней мере, без обновления до Excel 2007 или более поздней версии. Для некоторых приложений это может быть очень удобной функцией.
Следующий макрос, SortByColor, сортирует таблицу по цвету, которым отформатирована ячейка.
Sub SortByColor() On Error GoTo SortByColor_Err Dim sRangeAddress As String Dim sStartCell As String Dim sEndCell As String Dim rngSort As Range Dim rng As Range Application.ScreenUpdating = False sStartCell = InputBox("Enter the cell address of the " & _ "top cell in the range to be sorted by color" & _ Chr(13) & "i.e. 'A1'", "Enter Cell Address") If sStartCell > "" Then sEndCell = Range(sStartCell).End(xlDown).Address Range(sStartCell).EntireColumn.Insert Set rngSort = Range(sStartCell, sEndCell) For Each rng In rngSort rng.Value = rng.Offset(0, 1).Interior.ColorIndex Next Range(sStartCell).Sort Key1:=Range(sStartCell), _ Order1:=xlAscending, Header:=xlNo, _ Orientation:=xlTopToBottom Range(sStartCell).EntireColumn.Delete End If SortByColor_Exit: Application.ScreenUpdating = True Set rngSort = Nothing Exit Sub SortByColor_Err: MsgBox Err.Number & ": " & Err.Description, _ vbOKOnly, "SortByColor" Resume SortByColor_Exit End Sub
Макрос работает, сначала запрашивая у вас начальную ячейку диапазона, который вы хотите отсортировать. Это должна быть самая верхняя ячейка в диапазоне. Затем макрос вставляет столбец (только временно), в котором могут храниться значения цвета. Затем он проходит по каждой ячейке в диапазоне, заданном вами для начальной ячейки.
SortByColor предполагает, что в вашей таблице данных нет строки заголовка. Если это так, вам следует изменить фактическую команду сортировки. Просто измените Header: = xlNo на Header: = xlYes.
Следует отметить, что макрос SortByColor будет сортировать ячейки только на основе явного цвета, примененного к ячейке, он не будет сортировать, если цвет ячейки является результатом условного форматирования.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (3122) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Sorting_by_Colors [Сортировка по цветам]
.