Страница: 1 |
Страница: 1 |
Вопрос: Сортировка в Excel
Добавлено: 23.06.07 21:37
Автор вопроса: Сергей
Добрый день!
Подскажите, пожалуйста, имеется неотсортированный столбец значений, необходимо используя только формулы Excel (не прибегая к макросам) отсортировать данный столбец по возрастанию. Возможно ли это сделать и существует ли какой-нибудь алгоритм?
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
Marki
Вопросов: 42
Ответов: 94
Профиль | | #1
Добавлено: 24.06.07 20:48
Можно написать собственную функцию.
Входящие данные - список данных и номер строки, из ячейки которой эта функция вызывается.
В теле функции - сортировка данных любым алгоритмом (собственным или известным), и затем отображение данных с индеком, соответствующим номеру строки (т.е. возвращение функцией одного значения, выбранного из отсортированного списка).
Номер ответа: 2
Автор ответа:
Сергей
Вопросов: 2
Ответов: 8
Профиль | | #2
Добавлено: 24.06.07 21:20
На самом деле всё намного проще, можно применить функции НАИБОЛЬШИЙ и НАИМЕНЬШИЙ.
Marki а можно поподробнее, как написать собственную функцию?
Номер ответа: 3
Автор ответа:
Marki
Вопросов: 42
Ответов: 94
Профиль | | #3
Добавлено: 24.06.07 21:47
1. Открывается редактор VB
2. Функция пишется точно так же как она пишется в ЛЮБОМ другом месте (если конечно приходилось хоть раз этим заниматься).
3. Вызов функции осуществляется так же, как и встроенной, начиная в ячейке со знака равенства.
-----
Только что переставил офис на 2007, совсем другой интерфейс, поэтому пока "совсем подробно" (типа как открыть редактор VB) пока не скажу - хотя для этого есть помощь.
Во всяком случае лет 5 назад.. или даже поболее, функции свои таким образом делал, сейчас нужда отпала, давно не практиковался
Номер ответа: 4
Автор ответа:
Сергей
Вопросов: 2
Ответов: 8
Профиль | | #4
Добавлено: 25.06.07 00:15
Ну это уже получается как макрос! Хотя тоже вариант!
Возникла новая проблема, как в отсортированном столбце оставит только уникальные значения?
Номер ответа: 5
Автор ответа:
Marki
Вопросов: 42
Ответов: 94
Профиль | | #5
Добавлено: 25.06.07 01:17
после сортировки проверяешь с первого и далее до последнего...
если элемент i равен элементу i+1, то делаешь ему "сектыр башка"
Номер ответа: 6
Автор ответа:
EUGY
Вопросов: 0
Ответов: 454
Профиль | | #6
Добавлено: 25.06.07 02:15
Сергей, прямо удивлен, а что команда меню : Данные/Сортировка уже не доступна?
Или пропала функция РАНГ?
Номер ответа: 7
Автор ответа:
Сергей
Вопросов: 2
Ответов: 8
Профиль | | #7
Добавлено: 25.06.07 08:59
2 EUGY: Задача поставлена таким образом, чтобы воплатить сортировку на формулах. Функция РАНГ не решает этой задачи!
Номер ответа: 8
Автор ответа:
Сергей
Вопросов: 2
Ответов: 8
Профиль | | #8
Добавлено: 25.06.07 09:01
Marki, при таком решении появятся пустоты в столбце, что также не допустимо!
Номер ответа: 9
Автор ответа:
Marki
Вопросов: 42
Ответов: 94
Профиль | | #9
Добавлено: 25.06.07 17:15
"Пустоты" в столбце могут появиться исключительно в конце списка, т.е. список просто станет короче. Но это является твоим собственным условием - ОСТАВИТЬ УНИКАЛЬНЫЕ ЗНАЧЕНИЯ (т.е. как я понимаю - убрать повторения).
В середине списка при использовании указанного выше алгоритма пустоты не появятся: т.к. я говорю не об ОЧИСТКЕ элемента списка (как видимо понял ты, когда остается элемент с "пустым" значением), а о его УДАЛЕНИИ.
Если не удается удалить элемен сразу, то после сортировки и "очистки" повторяющихся элементов создай новый массив, равный по размеру количеству НЕпустых элементов в предшествующем массиве, и скопируй в новый массив НЕпустые значения.
Номер ответа: 10
Автор ответа:
Сергей
Вопросов: 2
Ответов: 8
Профиль | | #10
Добавлено: 25.06.07 18:54
Marki: Получилось! Ещё раз спасибо!