Excel vba свернуть сгруппированные строки

Обновлено: 05.07.2024

Макрос Vba для свертывания/развертывания всех сгруппированных строк/столбцов - Excel

Я хотел бы иметь возможность запускать макрос, который бы сворачивал или разворачивал все сгруппированные строки и столбцы для всех выбранных рабочих листов. Когда я говорю «свернуть или развернуть», мне не нужно диалоговое окно выбора или что-то в этом роде. просто код, который это сделает. Спасибо!!

(Распродажа 40% скоро заканчивается)

Курс Excel VBA — от новичка до эксперта

200+ видеоуроков 50+ часов обучения 200+ руководств Excel

С помощью этого онлайн-курса станьте мастером VBA и макросов в Excel и узнайте, как автоматизировать все свои задачи в Excel. (Опыт работы с VBA не требуется.)

(Скидка 40% скоро закончится!)

Похожие темы

Как получить поле плюс/минус группы данных вверху, а не внизу группы - Excel

Конечно, есть. Вот как:

В главном меню Excel:

Снимите флажок: Сводные строки ниже сведений

> Когда вы выделяете строки, переходите к Data, затем Group или Outline, затем Group, это
> создает красивое поле плюс/минус развертывания/свертывания для этой группы, только когда группа
> развернута, кнопка свернуть находится в нижней строке группы
>. Есть ли способ разместить эту кнопку в верхней строке группы?

Неактивные столбцы и строки — Excel

Некоторое время назад я создал электронную таблицу и выделил серым цветом ненужные области. Теперь мне нужно расширить электронную таблицу и использовать больше столбцов. Проблема в том, что я забыл, как отобразить эти столбцы. Я не писал никаких макросов, и использование метода отображения правой кнопкой мыши оказалось бесполезным. Лист не защищен, что вызывает недоумение, поскольку я не могу заставить мышь даже выделить какую-либо из серых областей.

Любые предложения будут фантастическими!
спасибо

Как автоматически объединить несколько рабочих листов в один рабочий лист. - Excel

Я хочу объединить данные из нескольких листов в один лист.

Например, у меня есть данные на Листе 1 (столбцы A, B, C), данные на Листе 2 (столбцы A, B, C), данные на Листе 3 (столбцы A, B, C) с различным количеством строк. (Все строки содержат текстовые данные).

Мне нужно объединить все данные с трех листов в один лист Sheet4 (столбцы A, B, C), удалив пустые строки.

Некоторое время я изучал этот вопрос и не нашел ничего, что действительно помогло бы. Кто-нибудь подскажет, на что обратить внимание?

Любая помощь будет прекрасна.

Удалить только выбранный элемент из списка и источника заполнения списка. - Excel

У меня есть приведенный ниже код, который удаляет все элементы из списка и моего листа Excel, который является источником для заполнения этого списка. Я использую стиль кнопки выбора для своего списка и стиль выбора как одиночный .i.e. вы можете выбрать только один элемент за один раз в lisbox. Я хочу, чтобы мой макрос удалял выбранный элемент с моего рабочего листа, т.е. это вся строка, так что она больше не отражается в моем lisbox. Ниже мой код:

Заранее большое спасибо за помощь.

Автозаполнение выбранной ячейкой в ​​Vba — Excel

До сих пор я мог найти все свои ответы с помощью поиска. Как новичок в VBA, это было очень полезно. Однако я в тупике. Я пытаюсь выполнить автозаполнение из выбранной ячейки в столбце C вниз. Я хотел бы, чтобы он остановился на последней ячейке с данными в столбце B. Это код, который у меня есть до сих пор:

Range("C2").Select
Selection.AutoFill Destination:=Range(Selection, Selection.End(xlDown))

Это выполняет автозаполнение, но не останавливается на последней ячейке с данными в столбце B.

В прошлом я использовал этот код для достижения аналогичных результатов:

Затемнить endRow As Long
endRow = Cells(Rows.Count, "B").End(xlUp).Row
Range("C2").Назначение автозаполнения:=Range("C2: C" и конец строки)

Проблема с этим кодом в том, что я не всегда буду начинать с "C2". Мне нужен код, который использует любую выбранную ячейку.

Любая помощь приветствуется. Спасибо!

Макрос для удаления целых строк, если некоторые ячейки пусты - Excel

Мне нужна помощь в создании макроса, который удаляет целую строку с пустыми ячейками в столбцах B, C и D в той же строке.
Например, если у меня есть пустые ячейки в b3, c3 и d3, я бы хотел, чтобы строка была удалена.

Я использовал приведенный ниже код только для столбца B, но мне также нужно включить столбцы C и D. Я пытался поставить Columns("B:D"), но он удаляет все.

Я уверен, что это что-то простое. как я!

Любая помощь приветствуется

Как показать скрытый макрос? - Excel

У меня есть книга Excel, созданная моим бывшим коллегой. Он включает в себя макрос, который, помимо прочего, отображает окно сообщения о файле 2008 года. Макрос запускается сразу после открытия файла. Я хотел бы получить доступ к этому макросу, чтобы исправить дату на 2011 год и посмотреть, что еще, если что-нибудь, он делает для меня (похоже, он мало что делает).Я могу найти ссылки на создание макросов для скрытия и отображения строк/столбцов, и я нашел способы удалить все макросы в книге, но я не могу ничего найти о том, чтобы показать макрос, не зная его имени.

Кто-нибудь знает, как отобразить этот макрос?

Автоматическое заполнение данных на основном листе из других листов общей книги — Excel

Я никогда не использовал VBA, поэтому полностью застрял в этой проблеме. Мне нужно создать макрос, который автоматически заполняет главный лист из отдельных пользовательских листов в общей книге.

Лист 1 – это основной лист "Статистика команды". Количество отдельных рабочих листов для новых сотрудников не определено.

Каждый рабочий лист будет идентичным, используя столбцы A–I, а строка 1 имеет заголовки:

Дата, имя, ссылка, стоимость, цена, возраст, покупка?, пункт назначения, доп. Товары (последние 3 столбца будут иметь раскрывающийся список, который будет использоваться для ввода данных в ячейку).

В каждом отдельном листе будет разное количество строк.

Если возможно, я бы хотел, чтобы макрос запускался каждый раз, когда данные вводятся в один из отдельных рабочих листов. Если это не так, было бы неправильно обновлять книгу каждый раз, когда она открывается.

Если кто-то может помочь, это действительно сократит время, которое я трачу каждый день на сопоставление этой статистики!

Разделить каждые N строк из листа на новые листы — Excel

У меня есть большой рабочий лист. Более 20 000 строк. Я хочу разбить каждые 900 строк на новые листы. Мне нужно, чтобы на каждом листе было 900 строк или меньше, когда это было сделано. Любой макрос будет полезен.

Как ограничить количество строк и столбцов в электронной таблице — Excel

Как ограничить то, что я вижу на своем экране (и, в частности, ограничить функцию
прокрутки) строками и столбцами, которые я фактически использую в
таблице Excel 2003 Pro?

Импорт одного текстового файла в несколько листов? - Excel

Можно ли импортировать один текстовый файл в Excel, разделив входящие данные на несколько листов, а не на один лист? Каждая строка в текстовом файле будет оцениваться по значению в одном из его «столбцов» и записываться на соответствующий рабочий лист. Файл "!" с разделителями и имеет 11 столбцов для каждой строки.

В настоящее время я импортирую файл на один лист и вручную вырезаю/вставляю строки в новые листы/вкладки. Файлы очень большие, иногда превышая ограничение в 65 536 строк, чего можно было бы избежать, если бы входные данные были разделены.

Любая помощь, которую кто-либо может оказать, будет ЗАМЕЧАТЕЛЬНОЙ. Спасибо!

Сравнить два листа и выделить/отметить различия – Excel

У меня есть два огромных файла Excel с множеством строк и столбцов, они "должны" выглядеть одинаково.

Но мне нужно выяснить, было ли что-то добавлено или удалено во втором по сравнению с первым.

Как это проще всего сделать?

Искал на этом форуме и в Google, но не смог найти то, что искал.

Заранее спасибо!

Выбрать отфильтрованные данные с помощью кода Vba — Excel

Я ищу код для выбора видимых данных после применения фильтра данных. На самом деле я знаю, как выбрать данные после применения фильтра данных, но проблема в том, что я не могу исключить строку заголовка и указать целевой диапазон только как используемые (непустые) строки!!

Я использую приведенный ниже код для выбора видимых строк в целевом диапазоне:

Проблемы в этом коде

1) после применения фильтра при выборе данных выбираются все строки в заданном диапазоне до последней строки в рабочей книге. Мне нужно это, чтобы выбрать данные только до последней использованной строки в заданном диапазоне.

2) Невозможно указать адрес первой строки после применения фильтра, поскольку адрес первой строки может измениться в зависимости от значений в таблице.

Например. В первый раз, когда я запускаю макрос, первая строка в видимых отфильтрованных данных начинается с адреса ячейки A4, а в следующий раз, когда я запускаю макрос, это может быть A6

3) Код также выбирает 1-ю строку, которая является строкой заголовка. Как мы можем исключить его из выбора.

Кто-нибудь, пожалуйста, вернитесь с решением.
Заранее спасибо.

Макрос для масштабирования по размеру окна, а затем применения этого коэффициента масштабирования к другим листам - Excel

Я настроил рабочую книгу, которая рассылается множеству разных пользователей. Каждый из них хранит и использует свою собственную копию.

Я настроил его так, чтобы все выглядело ОК и было видно на МОЕМ экране, но я осознаю, что у некоторых пользователей могут быть разные размеры экрана, разные панели инструментов и т. д., из-за чего некоторые части могут не отображаться сразу. видны им.

Я настроил автоматически выполняемый макрос, который автоматически устанавливает наиболее подходящий коэффициент масштабирования для нескольких рабочих листов, и это работает нормально.
Вот код, который это делает.
Код:

Повторяя этот код для каждого рабочего листа, я могу добиться нужного масштабирования каждого из них.

Однако файл содержит 8 листов, расположенных одинаково, за исключением того, что количество строк разное.
Что я хочу сделать, так это перейти к рабочему листу с наибольшим количеством строк (это всегда один и тот же рабочий лист, поэтому я знаю, какой именно), установить коэффициент масштабирования для ЭТОГО рабочего листа (что я могу сделать, и у него всегда одинаковое количество строк), а затем возьмите ЭТОТ коэффициент масштабирования, каким бы он ни был — и он будет варьироваться в зависимости от пользователя — и примените его к другим рабочим листам с аналогичным макетом.

Я мог бы просто просматривать каждый рабочий лист и автоматически масштабировать его, но это означало бы, что некоторые листы будут выглядеть очень большими, а другие — очень маленькими, и мне бы хотелось, чтобы они выглядели одинаково.
Я также мог бы указать диапазон на каждом листе, который был бы подобен соответствующему диапазону на самом длинном листе, и автоматически увеличить его, но это тоже не идеально, потому что высота некоторых строк варьируется от листа к листу, и снова Я закончу с разными размерами шрифта.

Кто-нибудь знает, как развернуть/свернуть сгруппированные строки со следующими двумя условиями?

1) Каждая группа строк является взаимоисключающей, поэтому " ActiveSheet.Outline.ShowLevels RowLevels:=1 " не будет работать, так как будет разворачиваться/сворачиваться весь лист
2) Сгруппированный набор строк содержит скрытые ячейки, которые должны всегда оставаться скрытыми. Если я использую следующий код, он делает скрытые строки в группе видимыми. нет буэно.
If Range("A32") <> "0" Then
Rows("33:49").EntireRow.Hidden = True
ElseIf Range("A32") = "0" Затем
Rows("33:49").EntireRow.Hidden = False

По сути, я пытаюсь воспроизвести маленькую кнопку со знаком "+" для каждого сгруппированного набора строк. Единственная причина, по которой я не могу использовать кнопку со знаком "+" для развертывания/свертывания, заключается в том, что она не видна под скрытыми/свернутыми строками (которые должны оставаться постоянно скрытыми/свернутыми).

Я выбрал случайную строку ns для скрытия. Каждый раз, когда группа расширялась или сужалась, строка 6 (или любая другая строка) оставалась скрытой. Даже если я перетащу высоту строки 6 вниз, она снова станет скрытой, когда я отпущу ее.

  • Похоже, это не работает для строки рядом с кнопкой структуры. Например, если кнопки контура + находятся в верхней части группы, и вы попытались скрыть строку 2, например, строка 2 скрывается при нажатии кнопки +, но кнопка не меняется на -, чтобы вы могли заключить его снова. Однако это работает для всех других сгруппированных строк (3-7). Если кнопка + находится внизу группы, она не будет работать со строкой 7.
  • Лист должен автоматически вычислять код события при каждом изменении структуры. Можно попытаться охватить другие базы, добавив тот же код в захваты событий для событий _Change, _SelectionChange и т. д.
  • Скрытие строки 2 не препятствует отображению значения формулы "=A2" в ячейке B3.

Вновь созданные сообщения останутся недоступными для других, пока не будут одобрены модератором.

Последний ответ был более 180 дней назад, эта ветка, скорее всего, устарела. Вместо этого рекомендуется создать новую цепочку.

Участвуйте сейчас!

У вас еще нет учетной записи? Зарегистрируйтесь прямо сейчас и станьте частью нашего сообщества!

Кто-нибудь знает, можно ли расширять/сворачивать группы с помощью
VBA. Я пытался использовать средство записи макросов, но при
разворачивании/сворачивании группы код не генерируется.

JLGWhiz

Тим879

Я группирую много своих данных (вместо того, чтобы скрывать строки). Чтобы сгруппировать
данные, я выбираю "Данные" -> "Группировать", после чего слева /
над строкой/столбцом, который вы сгруппировали, вы видите маленький знак "+".

У меня есть несколько макросов, которые группируют за меня, но я хочу, чтобы они
автоматически сворачивали группировку после группировки
выбранных строк/столбцов.

12 марта, 11:04, JLGWhiz
написал:

Тим879

Я проверил изменение размера, но это не работает. Я не пытаюсь изменить размер
выделенного диапазона, я просто пытаюсь свернуть/развернуть
группировку.

Спасибо за предложение. Есть другие идеи?

12 марта, 11:04, JLGWhiz
написал:

Тим879

Если после группировки установить для высоты строки/столбца значение 0 или Скрыть,
группа будет свернута. Я не уверен, что это просто обходной путь.
Кто-нибудь знает лучший способ сделать это?

Dim myCol As Range
Dim myRow As Range
Dim R_or_C As String

При ошибке возобновить дальше

Если Selection.Rows.Count = 65536, то
R_or_C = "C"

ElseIf Selection.Columns.Count = 256 Then
R_or_C = "R"

Еще
Пока R_or_C <> "R" И R_or_C <> "C"
R_or_C = UCase(InputBox("Вы хотите разгруппировать выбранные
стрки или столбцы. Для строк введите 'R' для столбцов введите 'C'."))

If R_or_C = "" Then Exit Sub
Wend
End If

Выберите вариант R_or_C

Case "C"
Для каждого myCol в Selection.Columns
myCol.Группа
myCol.Hidden = True
Далее

Случай "R"
Для каждой строки myRow в Selection.Rows
myRow.Group
myRow.Hidden = True
Далее

JLGWhiz

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

Тревор Уильямс

Не знаю, нужна ли вам эта информация, но более быстрый способ сделать это
(без всего вашего кода):

ActiveSheet.Outline.ShowLevels RowLevels:=1 ', чтобы свернуть строки
ActiveSheet.Outline.ShowLevels RowLevels:=2 ', чтобы развернуть строки

мариодона


В Microsoft Excel можно группировать строки и столбцы. Чтобы развернуть или свернуть группу, вы можете использовать метод VBA под названием ShowLevels. В приведенном ниже примере мы расширяем группу строк. Мы также отключили автоматический пересчет для повышения производительности.

Обратите внимание, что развертывание и свертывание работают одинаково. Свертывание группы аналогично отображению только первого уровня. Развернуть — это то же самое, что показать уровень 2 или выше.

Связанные

Поделиться:

Ульф Эмсой

Ульф Эмсой имеет большой опыт работы в области управления проектами, разработки программного обеспечения и управления цепочками поставок.

Оставить ответ Отменить ответ

Похожие записи


Шаблон отслеживания посещаемости для Microsoft Excel

Сотрудникам и их руководителям часто необходимо знать, сколько дней отпуска у них осталось, сколько дней по болезни они использовали и есть ли у них оставшиеся дни отпуска. Удобный шаблон отслеживания посещаемости от Coragi позволяет вам записывать посещаемость, а также сводку ключевых данных для […]

Поделиться:


Шаблон отслеживания отсутствия сотрудников для Microsoft Excel

Время от времени каждый сотрудник будет отсутствовать на работе. Компании должны иметь дело с отпусками по болезни в той или иной форме по целому ряду причин. Отсутствие может варьироваться от легкой простуды, которая проходит через несколько дней, до длительного отпуска по болезни, который оказывает значительное влияние на производительность команды […]

Поделиться:


Excel VBA: получение информации о сотрудниках из Active Directory

Если вы управляете людьми в своей организации в качестве лидера или менеджера проекта, Microsoft Active Directory (AD) — это кладезь ценной информации, доступный любому внутри корпоративной сети. Active Directory (AD) — это служба каталогов для доменных сетей Windows. Первоначально он был разработан для отслеживания компьютеров и […]

Поделиться:

Подпишитесь на нашу рассылку

Загрузить сейчас

Популярные сообщения

Последние публикации

Категории

Подпишитесь на нашу рассылку

Обзор конфиденциальности

Читайте также: