{quote}{login=Horn}{date=08.02.2008 12:32}{thema=}{post}А без Plex’а? Наверняка ведь кто-нибудь сталкивался с такой проблемой?{/post}{/quote}
Собственно не сталкивался…
Но идея заинтересовала !
Вот держи :
Function SORT(inpute)
‘ 8.02.2008 автор Drony
ishodnoe = inpute
a = Len(ishodnoe) ‘ длина текста ячейки
b = Len(Replace(ishodnoe, » «, «»)) ‘ длина текста ячейки без ПРОБЕЛОВ
c = a — b ‘ количество ПРОБЕЛОВ
F = c + 1 ‘ количество отдельностоящих слов в ячейке
‘ Создаем массив
Dim D()
ReDim D(F)
n = 0
Start = 1
For x = 1 To F
n = n + 1
‘ ReDim Preserve D(n)
If n = F Then D(n) = Mid(ishodnoe, Start, (a — Start + 1)): GoTo 10
D(n) = Mid(ishodnoe, Start, (InStr(Start, ishodnoe, » «, 1) — Start))
10:
Start = InStr(Start, ishodnoe, » «) + 1
Next x
‘ сортируем массив ПУЗЫРЬКОВЫМ методом
Dim First As Integer, Last As Integer
Dim i As Integer, j As Integer
Dim Temp As String
First = LBound(D)
Last = UBound(D)
For i = First To Last — 1
For j = i + 1 To Last
If D(i) > D(j) Then
Temp = D(j)
D(j) = D(i)
D(i) = Temp
End If
Next j
Next i
‘ выгружаем массив
For i = LBound(D) + 1 To UBound(D)
SORT = SORT & D(i) & » »
Next i
End Function
Только в исходных ячейках я » , » заменил на » » — пробел.
Сильно стого не судите, может можно как то и упростить…
Я шел по простому пути, т.е. то с чем когда-либо сталкивался, с помощью тех кусков и решил задачу…
Сортировка данных – распространенный способ упорядочивания значений от большего к меньшему, по алфавиту или другим параметрам. В Excel это можно сделать несколькими методами – обращаясь к функциям или используя пункты в меню.
Вариант 1: Быстрая сортировка в Excel
Иногда требуется максимально быстро отсортировать данные в столбце по возрастанию чисел, убыванию или по алфавиту. Для этого идеально подойдут кнопки быстрой сортировки, предназначенные как раз для выполнения поставленной задачи.
-
Выделите зажатой левой кнопкой мыши столбец с данными и вызовите меню «Редактирование».
-
Откройте список «Сортировка и фильтр» и выберите подходящий для вас вариант упорядочения. С числами это по возрастанию или убыванию, а для текста – по алфавиту и в обратную сторону.
-
Если вы выделили не все ячейки в столбце, появится окно с предложением расширить диапазон. Сделайте это, если за пределами выделения тоже находятся значения, которые нужно сортировать. Укажите сортировку в пределах данного диапазона, если за ним находятся исключительно заголовки.
-
Изменения вступают в силу сразу же. Нажмите Ctrl + Z для отмены действия, если что-то выполнено неправильно.
Обратите внимание на то, что сортировка сбивается после внесения любых изменений в клетках. Придется снова обращаться к тем же самым кнопкам, упорядочив уже новый массив с данными.
Комьюнити теперь в Телеграм
Подпишитесь и будьте в курсе последних IT-новостей
Подписаться
Вариант 2: Настраиваемая сортировка
Более продвинутый вариант, позволяющий задать сразу несколько условий упорядочения, – это настраиваемая сортировка, выполняющаяся через соответствующее окно. Давайте разберем сортировку по двум разным параметрам:
-
Вы можете не выделять заранее столбец, если для него задано название. Вызовите то же меню редактирования, но на этот раз нажмите по «Настраиваемая сортировка».
-
Выберите вариант с расширением или сохранением диапазона, если предварительно выделили столбец.
-
Вы увидите первый уровень сортировки, который и стоит настроить с самого начала.
-
Выберите столбец для сортировки из первого выпадающего списка.
-
Далее укажите вариант сортировки. Это может быть значение, цвет шрифта или ячейки, знаки условного форматирования.
-
В завершение укажите, в каком порядке необходимо отсортировать данные.
-
Если затем нужно применить еще один вариант сортировки, добавьте уровень и настройте его должным образом.
-
После применения вернитесь к таблице и убедитесь в том, что действия произведены верно. Учитывайте, что в этом случае сортировка тоже собьется, если вы внесете изменения в любой ячейке.
Вариант 3: Функция НАИБОЛЬШИЙ или НАИМЕНЬШИЙ
Последний вариант – единственный динамический, то есть после внесения изменений в клетках сортировка автоматически перестроится и ее последовательность будет правильной. Как вы уже поняли, для этого понадобится использовать функцию НАИБОЛЬШИЙ или НАИМЕНЬШИЙ.
-
В пустом столбце выберите первую ячейку для сортировки (желательно, чтобы она находилась параллельно ячейке с существующего столбца). Вызовите одну из указанных функций, отталкиваясь от необходимого вам типа упорядочения.
-
Далее в скобках укажите (C:C;СТРОКА(C1)), поменяв буквы на номер столбца сортировки.
-
Растяните функцию, зажав левую кнопку мыши в правой нижней точке ячейки и потянув вниз. Вы увидите, что данные указанного столбца перенесены параллельно, но соблюдена сортировка по возрастанию или убыванию. При этом исходные данные остаются в таком же хаотичном порядке, как были и раньше.
Теперь в исходном столбце вы можете вносить любые изменения для значений, а параллельные данные в отсортированном столбце поменяются в зависимости от указанных данных, но порядок все равно будет правильным.
Используйте любой из вариантов сортировки по надобности, но учитывайте, что динамически меняется только способ с применением функции. Конечно, он потребует создания дополнительного столбца, но в некоторых случаях это является оптимальным решением. Только не забудьте дать название столбцу, чтобы все пользователи таблицы понимали, для чего он нужен на листе.
Добрый день!
Я тоже, беря пример с Вас, позволю без примера…
Итак, Интегрировать в Excel просто: Alt+F11 и Вы попадаете в среду разработки макросов VBA. Ну или на ярлычке листа ПКМ (правой кнопкой мышки) и кликнуть по Исходный текст
Далее в редакторе пишем:
Sub SortNeTarKakNado()
‘Между этими «субчиками» и разместим код макроса
End Sub
собственно сам мкрос, что он делает? Пробегает по ячейкам выделенного блока ячеек (ну, тут наверное следует определять что собственно выделено: часть строки — столбца или часть нескольких строк — столбцов?!). Значения каждой ячейки разбивает по параметру <br>, в одномерный массив. Массив сортирует, ну скажем «методом пузырька». Результат сортировки записывает в ячейку (ту же откуда была взята исходная информация, либо правее — левее -выше — ниже исходной ячейки).
Вот пример функции сортирующей массив, причем одномерный массив в данном случае — частный случай. Эта функция может сортировать и двумерные массивы:
Function sortArr(spisok() As String, nomColSort As Integer, glubina As Integer)
Dim rrBl() As String
Dim endArr As Long, i As Long, j As Long, k As Long
i = 0
j = 0
k = 0
endArr = 0
If glubina > 0 Then
endArr = UBound(spisok, glubina)
For i = 1 To endArr
For j = endArr To i Step -1
If spisok(nomColSort, j - 1) > spisok(nomColSort, j) Then
k = 0
For k = LBound(spisok, 1) To UBound(spisok, 1)
ReDim Preserve rrBl(k)
rrBl(k) = spisok(k, j - 1)
Next k
k = 0
For k = LBound(spisok, 1) To UBound(spisok, 1)
spisok(k, j - 1) = spisok(k, j)
spisok(k, j) = rrBl(k)
Next k
End If
Next j
Next i
Else
endArr = UBound(spisok)
For i = 1 To endArr
For j = endArr To i Step -1
If spisok(j - 1) > spisok(j) Then
tmp = spisok(j - 1)
spisok(j - 1) = spisok(j)
spisok(j) = tmp
End If
Next j
Next i
End If
sortArr = spisok
i = 0
j = 0
k = 0
Erase rrBl
Erase spisok
End Function
И так, если будут вопросы при реализации — пишите, постараюсь ответить.
Для нас легко и часто сортировать числа в списке столбцов, но пробовали ли вы когда-нибудь сортировать числа в одной ячейке? Возможно, для вас нет хорошего способа, кроме как расположить их по одному, здесь я расскажу о том, как сортировать числа в ячейках в Excel.
Сортировка чисел в ячейках с помощью формулы
Сортировка чисел в ячейках с помощью функции, определяемой пользователем
Сортировка чисел, разделенных запятыми, в ячейках с кодом VBA
Сортировка чисел в ячейках с помощью формулы
Чтобы отсортировать числа в ячейках на листе, вы можете применить следующую длинную формулу, сделайте следующее:
1. Рядом со своими данными введите следующую формулу, в этом примере я введу ее в ячейку C1, см. Снимок экрана:
=TEXT(SUM(SMALL(—MID(A1,ROW(INDIRECT(«1:»&LEN(A1))),1),ROW(INDIRECT(«1:»&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT(«1:»&LEN(A1))))),REPT(«0»,LEN(A1)))
2. Затем нажмите Shift + Ctrl + Enter вместе, затем перетащите маркер заполнения в диапазон, в котором вы хотите применить эту формулу, и вы увидите, что числа отсортированы от меньшего к большему. Смотрите скриншот:
Ноты:
1. Если цифра числа в ячейке больше 15, эта формула не даст правильного результата.
2. Если вы хотите отсортировать числа в порядке убывания, вы можете использовать эту формулу: =TEXT(SUM(LARGE(—MID(A1,ROW(INDIRECT(«1:»&LEN(A1))),1),ROW(INDIRECT(«1:»&LEN(A1))))*10^(LEN(A1)-ROW(INDIRECT(«1:»&LEN(A1))))),REPT(«0»,LEN(A1))).
3. В приведенных выше формулах A1 указывает ячейку, содержащую числа, которые вы хотите отсортировать, вы можете изменить ее по своему усмотрению.
Сортировка чисел в ячейках с помощью функции, определяемой пользователем
Поскольку у формулы есть некоторые ограничения, вы можете использовать следующие Функция, определяемая пользователем для сортировки чисел в ячейках длиной более 15 цифр.
1. Удерживайте ALT + F11 ключи, и он открывает Окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.
Код VBA: сортировка чисел в ячейках
Function SortNumsInCell(pNum As String, Optional pOrder As Boolean) As String
'Update 20140717
Dim xOutput As String
For i = 0 To 9
For j = 1 To UBound(VBA.Split(pNum, i))
xOutput = IIf(pOrder, i & xOutput, xOutput & i)
Next
Next
SortNumsInCell = xOutput
End Function
3. Затем сохраните и закройте этот код, вернитесь на свой рабочий лист и введите эту формулу = sortnumsincell (A1) в пустую ячейку рядом с вашими данными, см. снимок экрана:
4. Затем перетащите маркер заполнения в ячейки, которые вы хотите содержать эту формулу, и все числа в ячейках были отсортированы в порядке возрастания, как показано на следующем снимке экрана:
Внимание: Если вы хотите отсортировать числа в порядке убывания, введите эту формулу = sortnumsincell (A1,1).
Сортировка чисел, разделенных запятыми, в ячейках с кодом VBA
Если ваши числа разделены определенными символами, такими как запятая, точка с запятой, точка и т. Д., Как показано на следующем снимке экрана, как вы можете отсортировать их по ячейкам? Теперь я представляю вам код VBA, чтобы вы могли их отсортировать.
1. Удерживайте ALT + F11 , чтобы открыть Окно Microsoft Visual Basic для приложений.
2. Нажмите Вставить > Модулии вставьте следующий код в Окно модуля.
Код VBA: номера сортировки разделяются запятыми внутри ячеек
Sub SortNumsInRange()
'Update 20140717
Dim Rng As Range
Dim WorkRng As Range
Dim Arr As Variant
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
Set objArrayList = CreateObject("System.Collections.ArrayList")
For Each Rng In WorkRng
Arr = VBA.Split(Rng.Value, ",")
For i = 0 To UBound(Arr)
xMin = i
For j = i + 1 To UBound(Arr)
If Arr(xMin) > Arr(j) Then
xMin = j
End If
Next j
If xMin <> i Then
temp = Arr(i)
Arr(i) = Arr(xMin)
Arr(xMin) = temp
End If
Next i
Rng.Value = VBA.Join(Arr, ",")
Next
End Sub
3, Затем нажмите F5 ключ для запуска этого кода, а затем выберите ячейки, которые содержат числа в всплывающем окне подсказки, см. снимок экрана:
4, Затем нажмите OK, все числа в ячейках отсортированы по возрастанию в исходном диапазоне.
Внимание: Вы можете заменить запятую «,» на любые другие символы в приведенном выше коде. И этот код может только сортировать данные по возрастанию.
Статьи по теме:
Как в Excel сортировать числа через дефис?
Как отсортировать данные в Excel по наиболее частому значению?
Как отсортировать адрес электронной почты по домену в Excel?
Как отсортировать строки, чтобы в Excel сверху были пустые ячейки?
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Сортировка в Excel — инструмент, с помощью которого информацию из таблицы организовывают в необходимом порядке. Данные можно сортировать по алфавиту, по возрастанию и убыванию чисел или по любым пользовательским критериям — например, по должностям сотрудников.
- Как сделать сортировку данных по одному критерию
- Как сделать сортировку по нескольким критериям
- Как сделать пользовательскую сортировку
Сортировка необходима, когда информация в таблице располагается хаотично. Пользователь выбирает столбец и тип сортировки — Excel упорядочивает информацию таблицы по этим критериям.
Разберём на примере.
Воспользуемся отчётом небольшого автосалона. В таблице собрана информация о продажах: характеристики авто, их цена, дата продажи и ответственные менеджеры. Данные расположены беспорядочно.
Скриншот: Excel / Skillbox Media
Для примера отсортируем данные по возрастанию цены автомобилей, по дате их продажи и по фамилиям менеджеров.
Сортируем данные по возрастанию цены авто. Выделяем любую ячейку в столбце, данные которого нужно отсортировать. В нашем случае — любую ячейку столбца «Цена, руб.».
Скриншот: Excel / Skillbox Media
На вкладке «Главная» нажимаем кнопку «Сортировка и фильтр».
Скриншот: Excel / Skillbox Media
Выбираем нужный тип сортировки — в нашем случае пункт «Сортировка по возрастанию».
Скриншот: Excel / Skillbox Media
Готово — данные таблицы отсортированы по возрастанию цен на автомобили.
Скриншот: Excel / Skillbox Media
Сортируем данные по дате продажи авто. Выделяем любую ячейку столбца «Дата продажи», нажимаем кнопку «Сортировка и фильтр» и выбираем нужный тип сортировки. В нашем случае — пункт «Сортировка от старых к новым».
Скриншот: Excel / Skillbox Media
Готово — данные отсортированы по дате продаж: от более давних к новым.
Скриншот: Excel / Skillbox Media
Сортируем данные по фамилиям менеджеров. Выделяем любую ячейку в столбце «Менеджер», нажимаем кнопку «Сортировка и фильтр» и выбираем нужный тип сортировки. В нашем примере отсортируем по алфавиту — выберем пункт «Сортировка от А до Я».
Скриншот: Excel / Skillbox Media
Готово — данные отсортированы по фамилиям менеджеров.
Скриншот: Excel / Skillbox Media
Выше мы привели три примера сортировки по одному столбцу. Но иногда требуется отсортировать таблицу одновременно по нескольким критериям.
Разберём, как это сделать, на примере.
Допустим, нужно отсортировать первоначальную таблицу отчётности по двум критериям: по возрастанию цены авто и по фамилиям менеджеров.
Выбираем любую ячейку таблицы и нажимаем кнопку «Сортировка» на вкладке «Данные».
Скриншот: Excel / Skillbox Media
В появившемся окне с помощью кнопки «+» добавляем критерии сортировки.
Скриншот: Excel / Skillbox Media
Добавляем критерии в необходимой последовательности: сначала — сортировка по фамилии менеджеров, затем — по возрастанию цен на автомобили, которые они продали.
Для этого нажимаем на стрелки под блоком «Столбец» и выбираем параметр «Менеджер». В пункте «Порядок» оставляем параметр «От А до Я».
Скриншот: Excel / Skillbox Media
Затем снова нажимаем на кнопку «+» и добавляем второй критерий сортировки — «Цена, руб.» → «По возрастанию». Жмём «ОК».
Скриншот: Excel / Skillbox Media
Готово — таблица отсортирована по двум столбцам одновременно.
Скриншот: Excel / Skillbox Media
Выше мы рассмотрели стандартную сортировку: по возрастанию и убыванию, по алфавиту, по дате. Кроме неё, в Excel можно настроить сортировку по критериям, выбранным пользователем.
Функция пригодится, когда нужные критерии не предусмотрены стандартными настройками. Например, если требуется сортировать данные по должностям сотрудников или по названиям отделов. Это называется пользовательской сортировкой.
Схема работы такова:
- Пользователь создаёт новый список для сортировки и вводит значения столбца, который нужно отсортировать, в необходимом порядке.
- Потом сортирует таблицу по стандартному пути с помощью меню сортировки.
Для примера отсортируем нашу таблицу по названиям моделей авто. Создадим новый список для пользовательской сортировки.
В операционной системе macOS это делается так: в верхнем меню нажимаем на вкладку «Excel» и выбираем пункт «Параметры…».
Скриншот: Excel / Skillbox Media
В появившемся окне нажимаем кнопку «Списки».
Скриншот: Excel / Skillbox Media
Затем в правой панели «Пользовательские списки» выбираем пункт «НОВЫЙ СПИСОК», а в левой панели «Элементы списка» вводим элементы списка в нужном порядке.
Скриншот: Excel / Skillbox Media
Элементы списка можно ввести двумя способами:
- Напечатать вручную.
- Импортировать из исходной таблицы и отредактировать.
Пойдём по второму пути. Поставим курсор в строку «Импортировать список из ячеек» и выберем диапазон столбца, значения которого нужно отсортировать. В нашем случае — значения столбца «Марка, модель».
Нажмём кнопку «Импорт».
Скриншот: Excel / Skillbox Media
Excel импортирует все значения столбца, даже дублирующиеся.
Скриншот: Excel / Skillbox Media
Теперь удалим повторяющиеся значения и расположим их в нужном порядке. Для примера сделаем так:
Скриншот: Excel / Skillbox Media
Нажимаем кнопку «Добавить», и список появляется в панели «Пользовательский списки». Закрываем окно.
Скриншот: Excel / Skillbox Media
В операционной системе Windows путь вызова меню «Списки» отличается. Нужно перейти во вкладку «Файл» и выбрать пункты «Параметры» → «Дополнительно» → «Общие» → «Изменить списки». Дальнейшие действия совпадают со схемой, описанной выше.
Теперь отсортируем таблицу по созданному списку. Снова выбираем любую ячейку таблицы и нажимаем кнопку «Сортировка» на вкладке «Данные».
В появившемся окне в блоке «Столбец» выбираем столбец, значения которого нужно отсортировать. В нашем случае — пункт «Марка, модель».
В блоке «Порядок» выбираем созданный список сортировки.
Скриншот: Excel / Skillbox Media
Нажимаем «ОК».
Скриншот: Excel / Skillbox Media
Готово — таблица отсортирована по условиям пользователя. Значения столбца «Марка, модель» расположены в порядке, который мы установили для нового списка.
Скриншот: Excel / Skillbox Media