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

Вход

Регистрация

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

 

= Мир MS Excel/Сортировка столбцов в цикле - не получается никак - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка столбцов в цикле - не получается никак (Макросы/Sub)
Сортировка столбцов в цикле - не получается никак
giaber Дата: Воскресенье, 20.12.2015, 21:15 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Здравствуйте!
Новичёк в макросах. Помогите пожалуйста сделать сортировку столбцов в цикле. Пробовал делать по разному, из того что нашёл в сети – ничего не получается, не понимаю эту тему совсем. Делал что-то вокруг примерно такого:
[vba]
Код
    For лист = 1 To 5
        For столбец = 1 To 5
            Sheets(лист).Range(Sheets(лист).Columns(столбец), Sheets(лист).Columns(столбец)).Select
            Selection.Sort key1:=Range(Sheets(лист).Columns(столбец), Sheets(лист).Columns(столбец)), Order1:=xlDescending
        Next столбец
    Next лист
[/vba]

И очень хотелось бы избавится от Select

Заранее благодарен!


giaber
 
Ответить
СообщениеЗдравствуйте!
Новичёк в макросах. Помогите пожалуйста сделать сортировку столбцов в цикле. Пробовал делать по разному, из того что нашёл в сети – ничего не получается, не понимаю эту тему совсем. Делал что-то вокруг примерно такого:
[vba]
Код
    For лист = 1 To 5
        For столбец = 1 To 5
            Sheets(лист).Range(Sheets(лист).Columns(столбец), Sheets(лист).Columns(столбец)).Select
            Selection.Sort key1:=Range(Sheets(лист).Columns(столбец), Sheets(лист).Columns(столбец)), Order1:=xlDescending
        Next столбец
    Next лист
[/vba]

И очень хотелось бы избавится от Select

Заранее благодарен!

Автор - giaber
Дата добавления - 20.12.2015 в 21:15
_Boroda_ Дата: Воскресенье, 20.12.2015, 21:40 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub Макрос5()
    Application.ScreenUpdating = 0
    For sh_ = 1 To 5
        For st_ = 1 To 5
            With Sheets(sh_).Sort.SortFields
                .Clear
                .Add Key:=Sheets(sh_).Cells(1, st_), Order:=xlDescending
            End With
            With Sheets(sh_).Sort
                With Sheets(sh_)
                    Sheets(sh_).Sort.SetRange .Range(.Cells(1, st_), .Cells(Rows.Count, st_))
                End With
                .Apply
            End With
        Next st_
    Next sh_
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub Макрос5()
    Application.ScreenUpdating = 0
    For sh_ = 1 To 5
        For st_ = 1 To 5
            With Sheets(sh_).Sort.SortFields
                .Clear
                .Add Key:=Sheets(sh_).Cells(1, st_), Order:=xlDescending
            End With
            With Sheets(sh_).Sort
                With Sheets(sh_)
                    Sheets(sh_).Sort.SetRange .Range(.Cells(1, st_), .Cells(Rows.Count, st_))
                End With
                .Apply
            End With
        Next st_
    Next sh_
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 20.12.2015 в 21:40
giaber Дата: Воскресенье, 20.12.2015, 21:59 | Сообщение № 3
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Boroda
Отлично работает! Низкий мой вам поклон и спасибо!

Сам не люблю когда на форумах помогающему цепочкой просьбы идут, но позволю себе наглость и попрошу ещё в такой теме помочь - тема в принципе связана с предыдущей. Нужен макрос: выделяю на листе ячейки и по всем столбцам, которые захватыват выделение должна произойти сортировка при нажатии на кнопку, сортировка КАЖДОГО столбца "индивидуально". То есть саму сортировку теперь после вашего кода я смогу сделать, но не знаю как вычленить номера столбцов из того что я выделил, чтоб передать в тело вашего кода


giaber
 
Ответить
СообщениеBoroda
Отлично работает! Низкий мой вам поклон и спасибо!

Сам не люблю когда на форумах помогающему цепочкой просьбы идут, но позволю себе наглость и попрошу ещё в такой теме помочь - тема в принципе связана с предыдущей. Нужен макрос: выделяю на листе ячейки и по всем столбцам, которые захватыват выделение должна произойти сортировка при нажатии на кнопку, сортировка КАЖДОГО столбца "индивидуально". То есть саму сортировку теперь после вашего кода я смогу сделать, но не знаю как вычленить номера столбцов из того что я выделил, чтоб передать в тело вашего кода

Автор - giaber
Дата добавления - 20.12.2015 в 21:59
_Boroda_ Дата: Воскресенье, 20.12.2015, 22:10 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16675
Репутация: 6481 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Первые и последние строка и столбец из выделенного
[vba]
Код
    r0_ = Selection(1).Row
    r1_ = Selection(Selection.Cells.Count).Row
    c0_ = Selection(1).Column
    c1_ = Selection(Selection.Cells.Count).Column
[/vba]
Дальше
[vba]
Код
...
st_ = c0_ to c1_
...
Sheets(sh_).Sort.SetRange .Range(.Cells(r0_, st_), .Cells(r1_, st_))
...
[/vba]
И посмотрите, что написано в Правилах форума.


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеПервые и последние строка и столбец из выделенного
[vba]
Код
    r0_ = Selection(1).Row
    r1_ = Selection(Selection.Cells.Count).Row
    c0_ = Selection(1).Column
    c1_ = Selection(Selection.Cells.Count).Column
[/vba]
Дальше
[vba]
Код
...
st_ = c0_ to c1_
...
Sheets(sh_).Sort.SetRange .Range(.Cells(r0_, st_), .Cells(r1_, st_))
...
[/vba]
И посмотрите, что написано в Правилах форума.

Автор - _Boroda_
Дата добавления - 20.12.2015 в 22:10
giaber Дата: Воскресенье, 20.12.2015, 22:13 | Сообщение № 5
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Огромное вам спасибо!!! Очень помогли!!! specool beer


giaber
 
Ответить
СообщениеОгромное вам спасибо!!! Очень помогли!!! specool beer

Автор - giaber
Дата добавления - 20.12.2015 в 22:13
giaber Дата: Воскресенье, 20.12.2015, 23:28 | Сообщение № 6
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Вот вариант от The_Prist

[vba]
Код
For лист = 1 To 5
   For столбец = 1 To 5
         Sheets(лист).Columns(столбец).Sort key1:=Sheets(лист).Columns(столбец).Cells(1,1), Order1:=xlDescending
   Next столбец
Next лист
[/vba]

оказывается совсем лаконичная форма записи есть. Я верил и надеялся что можно в одну строчку записать - у меня бзик на лаконичность :D


giaber

Сообщение отредактировал giaber - Понедельник, 21.12.2015, 11:13
 
Ответить
СообщениеВот вариант от The_Prist

[vba]
Код
For лист = 1 To 5
   For столбец = 1 To 5
         Sheets(лист).Columns(столбец).Sort key1:=Sheets(лист).Columns(столбец).Cells(1,1), Order1:=xlDescending
   Next столбец
Next лист
[/vba]

оказывается совсем лаконичная форма записи есть. Я верил и надеялся что можно в одну строчку записать - у меня бзик на лаконичность :D

Автор - giaber
Дата добавления - 20.12.2015 в 23:28
giaber Дата: Понедельник, 21.12.2015, 11:31 | Сообщение № 7
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Boroda
Цитата
И посмотрите, что написано в Правилах форума

Что именно я нарушил? Честно говоря не замечаю своей ошибки и хотел бы знать на будущее, чтоб не повторилось
Подозреваю или две темы в одном посте или ссылку на другой форум.
[moder]Пока, с некоторой натяжкой, все в порядке. Это я просто предположил, что Вы не прочитали про два вопроса в одной теме. Правда, Ваш вопрос в какой-то мере можно считать уточняющим, поэтому я просто напомнил про Правила. Так, на всякий случай.


giaber

Сообщение отредактировал _Boroda_ - Понедельник, 21.12.2015, 11:36
 
Ответить
СообщениеBoroda
Цитата
И посмотрите, что написано в Правилах форума

Что именно я нарушил? Честно говоря не замечаю своей ошибки и хотел бы знать на будущее, чтоб не повторилось
Подозреваю или две темы в одном посте или ссылку на другой форум.
[moder]Пока, с некоторой натяжкой, все в порядке. Это я просто предположил, что Вы не прочитали про два вопроса в одной теме. Правда, Ваш вопрос в какой-то мере можно считать уточняющим, поэтому я просто напомнил про Правила. Так, на всякий случай.

Автор - giaber
Дата добавления - 21.12.2015 в 11:31
giaber Дата: Понедельник, 21.12.2015, 18:31 | Сообщение № 8
Группа: Пользователи
Ранг: Прохожий
Сообщений: 6
Репутация: 0 ±
Замечаний: 0% ±

Excel 2007
Конечно учту ваше замечание!


giaber
 
Ответить
СообщениеКонечно учту ваше замечание!

Автор - giaber
Дата добавления - 21.12.2015 в 18:31
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Сортировка столбцов в цикле - не получается никак (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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