Новости:

Прикрепить к сообщению можно только файлы xls, gif, jpg, rar, zip,7z, bas, frm, cls, doc размером до 150 Кб.

Главное меню

Как отсортировать ячейки в строках по цифровому содержимому?

Автор Cocos1, 27.12.2015, 16:18

« назад - далее »

Cocos1

Пробовал читать поиск. НО, очень много незнакомых букв. Первое, никогда не работал с макросами, второе, наборы букв типа +ОЕАНЕ или =НВЖЩЛ мне ни о чём не говорят. Такие же операции на латинице были бы более приятны.
Задача:
Есть таблица, фрагмент которой представляю в текстовом виде.
17   45   25   30   43   4
18   14   2   25   35   45
18   20   26   27   36   44
19   8   33   36   38   40
19   24   41   25   35   8
19   29   11   3   27   4
21   23   29   30   37   40
22   10   14   1   27   33
22   20   10   23   31   33
Требуется отсортировать содержимое строк по возрастанию.
ЗЫ Не пинайте сильно дилетанта.
ЗЗЫ Ах, да, прочитал новости вкладываю фрагмент:

zs

Не макрос, но может быть пригодится формула для отсортированной таблицы
=НАИБОЛЬШИЙ($A1:$F1;СТОЛБЕЦ(A1))

Cocos1

Спасибо конечно, только мне эта помощь, что очки мартышке. Вы бы ещё научили, как этим пользоваться.
Экселем пользуюсь уже лет 20, но знаю три с половиной кнопки: "вставить", "сохранить", "печать", и "сортировать по..." наполовину :)
ЗЫ А почему все команды из русских слов? Как-то режет глаза. Можно ли то же самое на латинице?

Serge 007

Цитата: Cocos1 от 27.12.2015, 16:18Требуется отсортировать содержимое строк по возрастанию.
Как отсортировать? Один из вариантов во вложении

Цитата: Cocos1 от 27.12.2015, 16:18...прочитал новости вкладываю фрагмент...
Плохо прочитали.
Цитировать2. К первому сообщению темы должен быть прикреплен файл примера в формате xls*.
Приложив пример, Вы избавите себя и других от вопросов типа "А какой критерий?", "А куда выводить результат?", "А сколько строк?" и все тех же просьб выложить файл. Рисовать за Вас Ваши же таблички с заданиями, а затем и решение к ним, никто желанием не горит. Да и, как показывает практика, в большинстве случаев без файла решения не найти.

Цитата: Cocos1 от 27.12.2015, 22:54Экселем пользуюсь уже лет 20, но знаю три с половиной кнопки...
Это все равно что иметь права и машину, но за 20 лет научится только открывать в машине дверь  ;D
А если её завести? Так она же ещё и поедет!  ;D

Цитата: Cocos1 от 27.12.2015, 22:54...почему все команды из русских слов?..
Потому что сайт и форум у нас - русскоязычные.

Цитата: Cocos1 от 27.12.2015, 22:54... Можно ли то же самое на латинице?
Интернетом Вы тоже не научились пользоваться за 20 лет?
Бесплатная помощь: www.excelworld.ru
Платная помощь: sergeyizotov@excelworld.ru
Ю-money: 41001419691823 | WMR:126292472390

Cocos1

Попробую объяснить задачу другими словами. В таблице 6 колонок В каждой строке сейчас числа находятся в хаотичном порядке. Требуется, чтобы числа в строках находились в порядке возрастания. То есть, надо переставить числа в одной строке, перейти на следующую строку, переставить... и так по всей таблице.

runner

Вариант решения предложенного zs
Результат - красным шрифтом
Подходит?

копируете формулу из ячейки H1 и вставляете её в любой удобный столбец справа. Протягиваете формулу ещё на пять ячеек вправо и вертикально по необходимости.

Cocos1

Друзья мои. Видимо не получится из меня учитель.
Возьмём к примеру первую строку из файла.
17   45   25   30   43   4
Надо, чтобы числа встали так
4   17   25   30   43   45
Задача одноразовая - отсортировать 200 строк имеющейся таблицы.


cheshiki1

Sub Sort_po_strokam()
Dim C%, R%, n%, M As Range, adr$
Application.ScreenUpdating = False
Set M = Worksheets("Лист1").UsedRange
C = M.Column + M.Columns.Count - 1
R = Cells(Rows.Count, 1).End(xlUp).Row
Do
n = n + 1
adr = Range(Cells(M.Row + n - 1, M.Column), Cells(M.Row + n - 1, C)).Address
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Лист1").Sort.SortFields.Add Key:=Range(adr), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Лист1").Sort
        .SetRange Range(adr)
        .Header = xlGuess
        .MatchCase = False
        .Orientation = xlLeftToRight
        .SortMethod = xlPinYin
        .Apply
    End With
Loop While n <= R
Application.ScreenUpdating = True
End Sub
пробуйте

Cocos1

cheshiki1 спасибо. Попробую вечером, уезжаю на работу.
Если расскажете, куда это вставить - мои благодарности не будут иметь границ в пределах моих возможностей.

runner

Цитата: Cocos1 от 28.12.2015, 11:03
Надо, чтобы числа встали так
4   17   25   30   43   45

А вставить результат как значения на место исходных данных - никак? :o

cheshiki1


Cocos1

Цитата: runner от 28.12.2015, 11:46
А вставить результат как значения на место исходных данных - никак? :o
Прошу прощения. Файл из Вашего ответа сохранил, а открыл не его, а из предыдущего ответа. :(
Всем спасибо огромное. Думаю, всё получится. Будут вопросы, загляну на огонёк.
Где отметить, что задача решена?

Cocos1

Цитата: runner от 28.12.2015, 10:46
Вариант решения предложенного zs
Всё получилось. Результат прогнал через блокнот, чтобы избавиться от формул  и скопировал в чистую книгу.
Ваш файлик положил в папку с хэлпами по офису.

Макрос, видео и всю тему тоже сохранил.