Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Сортировка по модулям значений - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка по модулям значений (Макросы/Sub)
Сортировка по модулям значений
Roman777 Дата: Суббота, 06.06.2015, 14:20 | Сообщение № 1
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Добрый день всем!
Подскажите, пожалуйста. Каким образом можно отсортировать таблицу (по 1 столбику значений, по возрастанию) не по самим значениям, а по их модулям (абсолютному значению)?


Много чего не знаю!!!!
 
Ответить
СообщениеДобрый день всем!
Подскажите, пожалуйста. Каким образом можно отсортировать таблицу (по 1 столбику значений, по возрастанию) не по самим значениям, а по их модулям (абсолютному значению)?

Автор - Roman777
Дата добавления - 06.06.2015 в 14:20
nilem Дата: Суббота, 06.06.2015, 15:04 | Сообщение № 2
Группа: Авторы
Ранг: Старожил
Сообщений: 1613
Репутация: 563 ±
Замечаний: 0% ±

Excel 2013, 2016
Roman777, привет
в вспомогательном столбце пишем формулу типа =ABS(A1) и сортируем таблицу по вспом. столбцу.
Пойдет?


Яндекс.Деньги 4100159601573
 
Ответить
СообщениеRoman777, привет
в вспомогательном столбце пишем формулу типа =ABS(A1) и сортируем таблицу по вспом. столбцу.
Пойдет?

Автор - nilem
Дата добавления - 06.06.2015 в 15:04
KSV Дата: Суббота, 06.06.2015, 15:53 | Сообщение № 3
Группа: Друзья
Ранг: Ветеран
Сообщений: 770
Репутация: 255 ±
Замечаний: 0% ±

Excel 2013
[vba]
Код
    ' диапазон A1:F7 - это таблица, которую хотите сортировать по 1-му столбцу
       With Range("A1:F7")
           .Columns(1).EntireColumn.Insert
           .Columns(0).FormulaR1C1 = "=ABS(RC[1])"
           .Columns(0).Resize(, .Columns.Count + 1).Sort .Columns(0)
           .Columns(0).EntireColumn.Delete
       End With
[/vba]
а если доп.столбец вставлять не за таблицей, а внутри, то код еще проще:
[vba]
Код
    With Range("A1:F7")
         .Columns(2).EntireColumn.Insert
         .Columns(2).FormulaR1C1 = "=ABS(RC[-1])"
         .Sort .Columns(2)
         .Columns(2).EntireColumn.Delete
     End With
[/vba]
[p.s.]nilem, мне тоже это показалось самым простым вариантом. :) [/p.s.]


KSV.VBA@gmail.com
Яндекс.Деньги: 410011921213333


Сообщение отредактировал KSV - Суббота, 06.06.2015, 16:14
 
Ответить
Сообщение[vba]
Код
    ' диапазон A1:F7 - это таблица, которую хотите сортировать по 1-му столбцу
       With Range("A1:F7")
           .Columns(1).EntireColumn.Insert
           .Columns(0).FormulaR1C1 = "=ABS(RC[1])"
           .Columns(0).Resize(, .Columns.Count + 1).Sort .Columns(0)
           .Columns(0).EntireColumn.Delete
       End With
[/vba]
а если доп.столбец вставлять не за таблицей, а внутри, то код еще проще:
[vba]
Код
    With Range("A1:F7")
         .Columns(2).EntireColumn.Insert
         .Columns(2).FormulaR1C1 = "=ABS(RC[-1])"
         .Sort .Columns(2)
         .Columns(2).EntireColumn.Delete
     End With
[/vba]
[p.s.]nilem, мне тоже это показалось самым простым вариантом. :) [/p.s.]

Автор - KSV
Дата добавления - 06.06.2015 в 15:53
Roman777 Дата: Суббота, 06.06.2015, 16:16 | Сообщение № 4
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
nilem, KSV, Спасибо большое за помощь, думал не ответят. Именно так я уже и поступил))). Просто думал, что в настройках самой сортировки возможно это выполнить))). Я макрорекордером записал действия настраиваемой сортировки... там как-то много оказалось настроек... думал возможно как-то сразу выполнить по абсолютному значению.


Много чего не знаю!!!!
 
Ответить
Сообщениеnilem, KSV, Спасибо большое за помощь, думал не ответят. Именно так я уже и поступил))). Просто думал, что в настройках самой сортировки возможно это выполнить))). Я макрорекордером записал действия настраиваемой сортировки... там как-то много оказалось настроек... думал возможно как-то сразу выполнить по абсолютному значению.

Автор - Roman777
Дата добавления - 06.06.2015 в 16:16
ikki Дата: Суббота, 06.06.2015, 16:39 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1906
Репутация: 504 ±
Замечаний: 0% ±

Excel 2003, 2010
макрорекодер начиная с версии 2007 пишет другую сортировку - как метод листа.
в коде KSV использован другой метод - одноименный, но для объекта Range
в принципе - там тоже немало параметров.
но большинство из них имеют значение по умолчанию.


помощь по Excel и VBA
ikki@fxmail.ru, icq 592842413, skype alex.ikki


Сообщение отредактировал ikki - Суббота, 06.06.2015, 16:40
 
Ответить
Сообщениемакрорекодер начиная с версии 2007 пишет другую сортировку - как метод листа.
в коде KSV использован другой метод - одноименный, но для объекта Range
в принципе - там тоже немало параметров.
но большинство из них имеют значение по умолчанию.

Автор - ikki
Дата добавления - 06.06.2015 в 16:39
Roman777 Дата: Суббота, 06.06.2015, 19:48 | Сообщение № 6
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
ikki, Спасибо за информацию. Я правильно понимаю, что если шапка находится в первой строке, то область в макросе KSV должна быть не Range("A1:F7"), а Range("B1:F7")?


Много чего не знаю!!!!

Сообщение отредактировал Roman777 - Суббота, 06.06.2015, 19:49
 
Ответить
Сообщениеikki, Спасибо за информацию. Я правильно понимаю, что если шапка находится в первой строке, то область в макросе KSV должна быть не Range("A1:F7"), а Range("B1:F7")?

Автор - Roman777
Дата добавления - 06.06.2015 в 19:48
Manyasha Дата: Суббота, 06.06.2015, 20:29 | Сообщение № 7
Группа: Модераторы
Ранг: Старожил
Сообщений: 2198
Репутация: 898 ±
Замечаний: 0% ±

Excel 2010, 2016
Roman777, почему, ведь если шапка в первой строке, то сортировать нужно, начиная со 2-й, т е Range("А2:F7"), F7 тоже нужно заменить на правый нижний угол Вашей таблицы, которую нужно сортировать.


ЯД: 410013299366744 WM: R193491431804
 
Ответить
СообщениеRoman777, почему, ведь если шапка в первой строке, то сортировать нужно, начиная со 2-й, т е Range("А2:F7"), F7 тоже нужно заменить на правый нижний угол Вашей таблицы, которую нужно сортировать.

Автор - Manyasha
Дата добавления - 06.06.2015 в 20:29
Roman777 Дата: Суббота, 06.06.2015, 22:44 | Сообщение № 8
Группа: Проверенные
Ранг: Ветеран
Сообщений: 980
Репутация: 127 ±
Замечаний: 0% ±

Excel 2007, Excel 2013
Manyasha, ой, да, спутал строки со столбцами, спасибо!


Много чего не знаю!!!!
 
Ответить
СообщениеManyasha, ой, да, спутал строки со столбцами, спасибо!

Автор - Roman777
Дата добавления - 06.06.2015 в 22:44
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка по модулям значений (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!