Преобразовать таблицу в диапазон excel vba

-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

1

30.09.2017, 07:53. Показов 14233. Ответов 12


Студворк — интернет-сервис помощи студентам

Всем доброго времени суток.
Как преобразовать таблицу на листе в диапазон с помощью макроса.
Пробовал записать через макрокодер, но он окромя выделения ячейки не чего не пишет.
Что в итоге: я перешел на страницу запустил макрос, он выделил таблицу (одна на странице) и преобразовал её в диапазон.
пример.xlsx



0



pashulka

4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

30.09.2017, 09:25

2

Пример преобразования всех умных таблиц :

Visual Basic
1
2
3
4
5
6
Private Sub Test()
    Dim t As ListObject
    For Each t In ActiveSheet.ListObjects
        t.Unlist
    Next
End Sub



1



NikolayHAOS

-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

30.09.2017, 13:12

 [ТС]

3

pashulka, не работает.
Вот так работает.

Visual Basic
1
2
3
4
5
6
7
8
9
Sub UnListObj()
Dim Sh As Worksheet
Dim iObj As ListObject
For Each Sh In Worksheets
    For Each iObj In Sh.ListObjects
        iObj.Unlist
    Next
Next
End Sub



0



6875 / 2807 / 533

Регистрация: 19.10.2012

Сообщений: 8,562

30.09.2017, 15:00

4

Николай, у Вас хаос!
Как может не работать первый код, если работает точно такой же второй?
Притом что если внимательно читать вопрос — то именно второй работает не так, как требовалось по задаче.



0



-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

30.09.2017, 15:03

 [ТС]

5

Цитата
Сообщение от Hugo121
Посмотреть сообщение

Как может не работать первый код

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



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

30.09.2017, 15:11

6

И правда хаос, ещё и с фильтром



0



-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

30.09.2017, 15:14

 [ТС]

7

Цитата
Сообщение от NikolayHAOS
Посмотреть сообщение

Назначил на нее фильтр.

Естественно назначил макрос. Ошибся.



0



4131 / 2235 / 940

Регистрация: 01.12.2010

Сообщений: 4,624

30.09.2017, 15:25

8

Это не единственная ошибка. Например, Вы могли бы прочитать офисную справку, касаемо метода Unlist и понять, что именно он и преобразует «умную» таблицу в диапазон, но …



0



NikolayHAOS

-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

30.09.2017, 15:30

 [ТС]

9

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

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
Sub Test()
' тест 
 
    Sheets("Микроучасток").Select
    Call Макрос1
    Sheets("Микроучасток (2)").Select
    Call Макрос1
    Sheets("Микроучасток (3)").Select
    Call Макрос1
    Sheets("Микроучасток (4)").Select
    Call Макрос1
    Sheets("Микроучасток (5)").Select
    Call Макрос1
    Sheets("Микроучасток (6)").Select
    Call Макрос1
    Sheets("Микроучасток (7)").Select
    Call Макрос1
    Sheets("Микроучасток (8)").Select
    Call Макрос1
    Sheets("Микроучасток (9)").Select
    Call Макрос1
    Sheets("Микроучасток (10)").Select
    Call Макрос1
    Sheets("Микроучасток (11)").Select
    Call Макрос1
    Sheets("Микроучасток (12)").Select
    Call Макрос1
    Sheets("Микроучасток (13)").Select
    Call Макрос1
    Sheets("Микроучасток (14)").Select
    Call Макрос1
    Sheets("Микроучасток (15)").Select
    Call Макрос1
    Sheets("Микроучасток (16)").Select
    Call Макрос1
    Sheets("Микроучасток (17)").Select
    Call Макрос1
    Sheets("Микроучасток (18)").Select
    Call Макрос1
 End Sub

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



0



OLEGOFF

1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

30.09.2017, 16:13

10

Visual Basic
1
2
3
4
5
6
7
Sub Test()
 
  For i = 1 To 16
    Sheets(i).Select
    Call Макрос1
  Next i
End Sub

Попробуйте так



0



-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

30.09.2017, 16:24

 [ТС]

11

OLEGOFF, Работает, но если листов меньше то выскакивает ошибка.
Мне бы универсальный способ в не зависимости от количества листов в книге.



0



OLEGOFF

1062 / 506 / 137

Регистрация: 27.02.2013

Сообщений: 1,451

30.09.2017, 16:32

12

Лучший ответ Сообщение было отмечено NikolayHAOS как решение

Решение

Visual Basic
1
2
3
4
5
6
7
Sub Test()
 
  For i = 1 To Worksheets.Count
    Sheets(i).Select
    Call Макрос1
  Next
End Sub



1



-3 / 2 / 0

Регистрация: 29.10.2013

Сообщений: 178

30.09.2017, 16:43

 [ТС]

13

OLEGOFF,
Работает.
Но складывается впечатление, что работает как бы в два прохода.
Проход первый проходит по всем листам просто так, будто считает.
Проход второй выполняет макрос1



0



ГЛАВНАЯ

ТРЕНИНГИ

   Быстрый старт
   Расширенный Excel
   Мастер Формул
   Прогнозирование
   Визуализация
   Макросы на VBA

КНИГИ

   Готовые решения
   Мастер Формул
   Скульптор данных

ВИДЕОУРОКИ

ПРИЕМЫ

   Бизнес-анализ
   Выпадающие списки
   Даты и время
   Диаграммы
   Диапазоны
   Дубликаты
   Защита данных
   Интернет, email
   Книги, листы
   Макросы
   Сводные таблицы
   Текст
   Форматирование
   Функции
   Всякое
PLEX

   Коротко
   Подробно
   Версии
   Вопрос-Ответ
   Скачать
   Купить

ПРОЕКТЫ

ОНЛАЙН-КУРСЫ

ФОРУМ

   Excel
   Работа
   PLEX

© Николай Павлов, Planetaexcel, 2006-2022
info@planetaexcel.ru


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

Техническая поддержка сайта

ООО «Планета Эксел»

ИНН 7735603520


ОГРН 1147746834949
        ИП Павлов Николай Владимирович
        ИНН 633015842586
        ОГРНИП 310633031600071 

Как преобразовать все таблицы в диапазоны в активном листе?

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

Преобразование всех таблиц в диапазоны активного листа с помощью VBA


Преобразование всех таблиц в диапазоны активного листа с помощью VBA

1. Активируйте лист, таблицы которого вы хотите преобразовать, затем нажмите Alt + F11 ключи для включения Microsoft Visual Basic для приложений окно.

2. Нажмите Вставить > Модули чтобы создать новый скрипт модуля, скопируйте и вставьте приведенный ниже код в пустой модуль.

VBA: преобразовать все таблицы активного листа в диапазоны

Sub ConvertTablesToRange()
'UpdatebyExtendoffice20180530
    Dim xSheet As Worksheet
    Dim xList As ListObject
    Set xSheet = ActiveWorkbook.ActiveSheet
    For Each xList In xSheet.ListObjects
        xList.Unlist
    Next
End Sub

doc преобразовать таблицы в диапазоны 1

3. Нажмите F5 Клавиша запуска кода, теперь все таблицы текущего листа преобразованы в диапазоны.


Лучшие инструменты для работы в офисе

Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%

  • Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
  • Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон
  • Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны
  • Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
  • Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
  • Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии
  • Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
  • Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF
  • Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.

вкладка kte 201905


Вкладка Office: интерфейс с вкладками в Office и упрощение работы

  • Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
  • Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
  • Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!

офисный дно

Комментарии (2)


Оценок пока нет. Оцените первым!

Содержание

  • Таблицы и объекты VBA

В этом руководстве будет показано, как работать с таблицами и объектами ListObject в VBA.

Таблицы — одна из самых полезных и мощных функций Excel. В этом руководстве мы рассмотрим, как использовать VBA для создания таблицы, добавления простой сортировки в таблицу, фильтрации таблицы и выполнения других задач, связанных с таблицами.

Создать таблицу с VBA

Метод ListObjects.Add может добавлять таблицу на лист на основе диапазона на этом листе. У нас есть диапазон, показанный в ($ A $ 1: $ B $ 8) на листе под названием Sheet1.

Следующий код добавит на ваш рабочий лист таблицу с именем Table1 в зависимости от диапазона ($ A $ 1: $ B $ 8) с использованием стиля таблицы по умолчанию:

123456 Подложка CreateTableInExcel ()ActiveWorkbook.Sheets («Sheet1»). ListObjects.Add (xlSrcRange, Range («$ A $ 1: $ B $ 8»),, xlYes) .Name = _»Таблица 1″Конец подписки

Результат:

Вставка столбца в конец таблицы с помощью VBA

Вы можете использовать метод ListColumns.Add, чтобы добавить столбец в конец вашей таблицы. У нас есть таблица под названием Table1, показанная ниже.

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

12345 Sub AddColumnToTheEndOfTheTable ()ActiveWorkbook.Sheets («Sheet1»). ListObjects («Table1»). ListColumns.AddКонец подписки

Результат:

Вставка строки внизу таблицы с помощью VBA

Вы можете использовать метод ListRows.Add, чтобы добавить строку в конец таблицы. У нас есть таблица под названием Table1, показанная ниже.

Следующий код всегда будет добавлять строку в конец таблицы.

12345 Подложка AddRowToTheBottomOfTheTable ()ActiveSheet.ListObjects («Таблица1»). ListRows.AddКонец подписки

Результат:

Добавление простой сортировки с помощью VBA

Вы можете отсортировать таблицу с помощью VBA. У нас есть таблица с именем Table1, показанная ниже, и мы можем использовать VBA для сортировки столбца продаж от самого низкого до самого высокого.

Следующий код отсортирует столбец «Продажи» в порядке возрастания.

12345678910111213141516171819 Sub SimpleSortOnTheTable ()Диапазон («Таблица1 [[# заголовков], [Продажи]]»). ВыберитеActiveWorkbook.Worksheets («Sheet1»). ListObjects («Table1»). Sort.SortFields.ClearActiveWorkbook.Worksheets («Sheet1»). ListObjects («Table1»). Sort.SortFields.Add _Ключ: = Диапазон («Таблица1 [[# Все], [Продажи]]»), SortOn: = xlSortOnValues, Order: = _xlAscending, DataOption: = xlSortNormalС ActiveWorkbook.Worksheets («Sheet1»). ListObjects («Table1»). Sort.Header = xlYes.MatchCase = Ложь.Orientation = xlTopToBottom.SortMethod = xlPinYin.Подать заявлениеКонец сКонец подписки

Результат:

Фильтрация таблицы с помощью VBA

Вы также можете фильтровать таблицу Excel с помощью VBA. У нас есть таблица с именем Table1, и мы хотели бы отфильтровать ее, чтобы отображались только продажи, превышающие 1500.

Мы можем использовать метод автофильтра, который имеет пять необязательных параметров. Поскольку мы хотим отфильтровать столбец «Продажи», который является вторым столбцом, мы устанавливаем для поля значение 2 и используем параметр оператора xlAnd, который используется для дат и чисел.

123456 Подложка SimpleFilter ()ActiveWorkbook.Sheets («Sheet1»). ListObjects («Table1″). Range.AutoFilter Field: = 2, Criteria1: = _»> 1500″, оператор: = xlAndКонец подписки

Результат:

Очистите фильтр с помощью метода ShowAllData в VBA

Вы можете получить доступ к методу ShowAllData класса Worksheet, чтобы очистить фильтр. Если вы хотите очистить фильтр (-ы) таблицы, вам сначала нужно выбрать ячейку в таблице, что вы можете сделать в VBA.

Метод ShowAllData сгенерирует ошибку, если не использовать условную логику, чтобы проверить, был ли применен фильтр на листе. В следующем коде показано, как это сделать:

123456789 Sub ClearingTheFilter ()Диапазон («Таблица1 [[# заголовков], [Продажи]]»). ВыберитеЕсли ActiveWorkbook.Worksheets («Sheet1»). FilterMode = True, тоActiveSheet.ShowAllDataКонец, еслиКонец подписки

Очистить все фильтры из таблицы Excel

Вы можете получить доступ к методу ShowAllData класса ListObject, не выбирая сначала ячейку в таблице. В следующем коде показано, как это сделать:

123 Подложка ClearAllTableFilters ()ActiveWorkbook.Worksheets («Sheet1»). ListObjects («Table1»). AutoFilter.ShowAllDataКонец подписки

Удаление строки с помощью VBA

Вы можете удалить строку в базе данных вашей таблицы с помощью метода ListRows.Delete. Вы должны указать, какая строка используется по номеру строки. У нас есть следующая таблица под названием Table1.

Допустим, вы хотите удалить вторую строку в базе данных вашей таблицы, следующий код позволит вам это сделать:

12345 Sub DeleteARow ()ActiveWorkbook.Worksheets («Sheet1»). ListObjects («Table1»). ListRows (2) .DeleteКонец подписки

Результат:

Удаление столбца с помощью VBA

Вы можете удалить столбец из таблицы с помощью метода ListColumns.Delete. У нас есть следующая таблица под названием Table1, показанная ниже:

Чтобы удалить первый столбец, вы должны использовать следующий код:

12345 Подраздел DeleteAColumn ()ActiveWorkbook.Worksheets («Sheet1»). ListObjects («Table1»). ListColumns (1) .DeleteКонец подписки

Результат:

Преобразование таблицы обратно в диапазон в VBA

Вы можете преобразовать таблицу обратно в нормальный диапазон с помощью VBA. В следующем коде показано, как преобразовать таблицу с именем Table1 обратно в диапазон:

12345 Sub ConvertingATableBackToANormalRange ()ActiveWorkbook.Sheets («Sheet1»). ListObjects («Table1»). UnlistКонец подписки

Добавление чередующихся столбцов и форматирование ко всем таблицам на листе с помощью VBA

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

12345678910111213 Sub AddingBandedColumns ()Dim tbl As ListObjectТусклый лист как рабочий листУстановить sht = ThisWorkbook.ActiveSheetДля каждой табл. В шт.ListObjectstbl.ShowTableStyleColumnStripes = Истинаtbl.DataBodyRange.Font.Bold = ИстинаСледующая таблицаКонец подписки

Результат:

Создание таблицы в Access в VBA с использованием DoCmd.RunSQL

Одним из основных способов создания таблицы в Access в VBA является использование метода DoCmd.RunSQL для выполнения запроса действия с оператором SQL.

У нас есть кнопка в нашем образце формы, и когда мы нажимаем на кнопку, мы хотим создать таблицу с именем ProductsTable с двумя полями или столбцами, одно будет полем первичного ключа с именем ProductsID, а другое будет полем с именем Sales.

Чтобы создать эту таблицу, мы будем использовать следующий код:

123456 Частная подпрограмма cmdCreateProductsTable_Click ()DoCmd.RunSQL «СОЗДАТЬ ТАБЛИЦУ ProductsTable» _& «(ProductID INTEGER PRIMARY KEY, целое число продаж);»Конец подписки

Результат:

Фильтрация таблицы в доступе с помощью VBA

Вы также можете фильтровать таблицу в Access с помощью метода DoCmd.ApplyFilter. У нас есть наша простая таблица, показанная ниже в Access, которая называется ProductsTable.

Мы хотели бы нажать эту кнопку в нашей форме, и тогда мы увидим только продажи, превышающие 1500.

Итак, мы бы использовали следующий код для этого:

1234567 Частная подпрограмма cmdFilter_Click ()DoCmd.OpenTable «ProductsTable»DoCmd.ApplyFilter, «[Продажи]> 1500»Конец подписки

Результат:

Преобразовать сводную таблицу в диапазон значений

myfirsy

Дата: Среда, 24.07.2019, 21:24 |
Сообщение № 1

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Добрый день всем. Помогите, пожалуйста, написать макрос, который сводную таблицу преобразует в диапазон значений на новый лист с сохранением формата ячеек (ширина, цвет, шрифт).
Заранее всем спасибо.

 

Ответить

_Igor_61

Дата: Четверг, 25.07.2019, 17:27 |
Сообщение № 2

Группа: Проверенные

Ранг: Ветеран

Сообщений: 504


Репутация:

90

±

Замечаний:
0% ±


Excel 2007

 

Ответить

myfirsy

Дата: Четверг, 25.07.2019, 19:24 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 2


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

_Igor_61, Спасибо большое, получилось адаптировать под себя

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Преобразовать таблицу в excel в тексте
  • Преобразовать таблицу excel в приложение
  • Преобразовать таблицу excel в диапазоне
  • Преобразовать структуру excel в таблицу
  • Преобразовать строку во время excel