Нестандартная сортировка (Microsoft Excel)
В офисной среде нет ничего необычного в работе с файлами Excel, созданными другими людьми. Некоторые из этих файлов могут сильно отличаться от файлов, которые вы могли бы создать. Например, вы можете унаследовать файл, в котором первый столбец содержит имя человека в первой строке, а затем его фамилию во второй строке. (Пользователь нажал Alt + Enter, чтобы отделить первое имя от второго в той же ячейке.) Что делать, если вам нужно отсортировать строки на листе по фамилии человека?
Возможно, лучший способ выполнить такую задачу — это вставить в рабочий лист новый столбец — столбец B. (Этот столбец можно скрыть, чтобы он не отображался при обычной работе с рабочим листом или при его распечатке). Затем в каждую ячейку столбца B следует поместить формулу:
=RIGHT(A2,LEN(A2)-FIND(CHAR(10),A2))
Очевидно, что ссылки на ячейки изменятся при размещении в столбце B. В этой формуле часть НАЙТИ определяет положение символа Alt + Enter (код символа этого символа — 10). Функция ВПРАВО возвращает символы в ячейке, начиная с символа, следующего за символом Alt + Enter. Это решение приводит к столбцу B, содержащему информацию во второй строке первого столбца. Затем вы можете легко выполнить сортировку на основе информации в столбце B.
В этом решении сделано одно предположение — что есть только две строки в каждой ячейке столбца A. Если их больше или меньше, решение становится более трудным. В этом случае лучшим (и самым простым) решением может быть переформатирование рабочего листа так, чтобы ключ сортировки находился в отдельном столбце. Если это невозможно (по какой-либо причине), можно использовать следующую пользовательскую функцию VBA:
Function SecLine(x) As String Dim B1 As Integer Dim B2 As Integer B1 = InStr(x, Chr(10)) B2 = InStr(B1 + 1, x, Chr(10)) If (B1 + B2) > 0 Then If B2 > 0 Then SecLine = Mid(x, B1 + 1, B2 – B1 - 1) Else SecLine = Mid(x, B1 + 1) End If End If End Function
Чтобы использовать эту процедуру, просто включите следующее в ячейки столбца B:
=SecLine(A2)
Независимо от того, сколько строк находится в ячейке A2 (в данном случае), функция возвращает строку, представляющую значение второй строки.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2252) применим к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:
link: / excelribbon-Non-standard_Sorting [Нестандартная сортировка]
.