У меня есть лист с несколькими таблицами на одном листе «Лист1», разделенный пустой строкой.
Я хочу, чтобы VBA сортировал один за другим.
Соображения
- Каждая таблица имеет разное количество строк
- В дальнейшем количество столбцов также изменится
Что всегда будет одним и тем же:
- Пустая строка между таблицами в столбце B, которая должна быть отправной точкой для Excel, чтобы распознать наличие новой таблицы.
- Каждая таблица всегда будет отсортирована по столбцу C
Чтобы дать вам лучшую картину, я просматриваю перекрестные таблицы данных о потребителях, где:
КОЛОНКА A ТИП ВОПРОСА
КОЛОНКА B – ВАРИАНТЫ ОТВЕТОВ
СТОЛБЦ C. Заголовок ВСЕГО и содержит % для каждого варианта ответа.
Остальные столбцы следуют за %, как C, но с другими заголовками, такими как мужчина, женщина, пользователь, не пользователь, возраст 18–25 лет, возраст 26–34 .... и т. д.
Я хочу создать зацикленный макрос, который будет сортировать каждую таблицу (и все столбцы в таблице) по столбцу C в порядке возрастания, определяя, что он должен искать следующее пустое пространство, а таблица будет под ним.
Я пробовал смотреть Looping, Sorting и находить следующую пустую ячейку. Но я почему-то не могу собрать воедино.
Любая помощь будет оценена!
Предыдущий код попробовал:
Dim oneArea as Range
For Each oneArea in Range("C:C").SpecialCells(xlCellTypeConstants).Area
oneArea.EntireRow.Sort key1:=oneArea.Cells(1,1), order1:=xlAscending
Next oneArea
Для ссылки: это самый близкий пример и макрос, который я нашел для того, к чему я стремлюсь, но он не применим к моему сценарию / не может заставить его работать:
Макрос для сортировки данных до появления пустых строк, затем повторите< /а>
Selection.End(xlDown).Select
, и когда вы найдете первую ячейку новой таблицы и выберите ее, вы можете использовать это для выбора области, которую хотите отсортировать:Selection.resize(Selection.Rows.Count,Selection.Columns.Count - 1).Offset(0,1).Select
- person Egan Wolf   schedule 23.01.2017