Добрый день всем! Подскажите, пожалуйста. Каким образом можно отсортировать таблицу (по 1 столбику значений, по возрастанию) не по самим значениям, а по их модулям (абсолютному значению)?
Добрый день всем! Подскажите, пожалуйста. Каким образом можно отсортировать таблицу (по 1 столбику значений, по возрастанию) не по самим значениям, а по их модулям (абсолютному значению)?Roman777
' диапазон 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.]
[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
nilem, KSV, Спасибо большое за помощь, думал не ответят. Именно так я уже и поступил))). Просто думал, что в настройках самой сортировки возможно это выполнить))). Я макрорекордером записал действия настраиваемой сортировки... там как-то много оказалось настроек... думал возможно как-то сразу выполнить по абсолютному значению.
nilem, KSV, Спасибо большое за помощь, думал не ответят. Именно так я уже и поступил))). Просто думал, что в настройках самой сортировки возможно это выполнить))). Я макрорекордером записал действия настраиваемой сортировки... там как-то много оказалось настроек... думал возможно как-то сразу выполнить по абсолютному значению.Roman777
макрорекодер начиная с версии 2007 пишет другую сортировку - как метод листа. в коде KSV использован другой метод - одноименный, но для объекта Range в принципе - там тоже немало параметров. но большинство из них имеют значение по умолчанию.
макрорекодер начиная с версии 2007 пишет другую сортировку - как метод листа. в коде KSV использован другой метод - одноименный, но для объекта Range в принципе - там тоже немало параметров. но большинство из них имеют значение по умолчанию.ikki
помощь по Excel и VBA ikki@fxmail.ru, icq 592842413, skype alex.ikki
Сообщение отредактировал ikki - Суббота, 06.06.2015, 16:40
ikki, Спасибо за информацию. Я правильно понимаю, что если шапка находится в первой строке, то область в макросе KSV должна быть не Range("A1:F7"), а Range("B1:F7")?
ikki, Спасибо за информацию. Я правильно понимаю, что если шапка находится в первой строке, то область в макросе KSV должна быть не Range("A1:F7"), а Range("B1:F7")?Roman777
Много чего не знаю!!!!
Сообщение отредактировал Roman777 - Суббота, 06.06.2015, 19:49
Roman777, почему, ведь если шапка в первой строке, то сортировать нужно, начиная со 2-й, т е Range("А2:F7"), F7 тоже нужно заменить на правый нижний угол Вашей таблицы, которую нужно сортировать.
Roman777, почему, ведь если шапка в первой строке, то сортировать нужно, начиная со 2-й, т е Range("А2:F7"), F7 тоже нужно заменить на правый нижний угол Вашей таблицы, которую нужно сортировать.Manyasha