Форум программистов, компьютерный форум, киберфорум
MS Office Excel
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.51/37: Рейтинг темы: голосов - 37, средняя оценка - 4.51
0 / 0 / 0
Регистрация: 18.05.2015
Сообщений: 5
1

Взаимосвязь размеров двух и более "умных" таблиц

18.05.2015, 20:39. Показов 7411. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Добрый вечер

Не могли бы вы посоветовать что делать в следующей ситуации. В файле excel'а существует несколько "умных" таблиц (точнее 3), которые отображают этапы расчетов. Первая из этих таблиц служит для ввода данных, вторая - это таблица, где производятся промежуточные расчеты, третья - таблица с конечными результатами. При вводе данных в первую таблицу (в том числе копирования большого массива данных) "умная" таблица автоматически изменяет свой размер. Все три таблицы в конечном варианте имеют (должны иметь) одинаковое количество строк.

Вопрос мой таков: возможно ли для второй и третьей "умной" таблицы задать автоувеличение количества в них строк до размера первой "умной" таблицы? Иными словами можно ли для "умных" таблиц задавать динамический диапазон по определённым условиям?

Возможно ли сделать указанное выше без помощи VBA? Возможно ли на основе "Диспетчера имен" и функций типа "АДРЕС", "ИНДЕКС" и подобных?

Написать подобный макрос для меня, в принципе, не такая сложная задача, однако, есть потребность более глубоко изучить встроенные функции Excel'а, в том числе использование "умных" таблиц, диспетчера имен и прочего.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
18.05.2015, 20:39
Ответы с готовыми решениями:

Взаимосвязь двух таблиц после запроса
Суть вопроса: Есть две таблицы. Первая является базой даных(справа), из которой через запрос SQL...

Синтаксис умных таблиц
Всем привет! Подскажите, пожалуйста, кто знает. В умной таблице имеются вычисляемые поля, в...

Объединение двух и более таблиц с данными
Коллеги, всем привет. Помогите пожалуйста, не хватает мне знаний для реализации) Необходимо...

JOIN и соединение более двух таблиц
Здравствуйте, требуется помощь, не понимаю, почему не соединяются несколько таблиц в запросе. БД...

15
6002 / 3197 / 716
Регистрация: 23.11.2010
Сообщений: 10,684
18.05.2015, 21:29 2
Почему все нельзя делать в одной таблице, т.е. миновать вторую с промежуточными?
0
0 / 0 / 0
Регистрация: 18.05.2015
Сообщений: 5
18.05.2015, 21:39  [ТС] 3
Сложилась такая ситуация, что важен не только конечный результат, но понимание структуры промежуточного вычисления. Безусловно, можно миновать промежуточные вычисления, но вопрос останется: будет существовать не три, а две "умные" таблицы и вторая не будет автоувеличиваться по размеру первой таблицы.

Конечно, это можно делать вручную - обычной протяжкой таблицы (таблиц), но тут уже взыграл спортивный интерес к возможностям excel'я, так как над решением уже несколько дней работаю.
0
6002 / 3197 / 716
Регистрация: 23.11.2010
Сообщений: 10,684
18.05.2015, 21:50 4
т.е. третья таблица - это продолжение расчетов, а не скомпонованные итоги по типу сводной?
0
0 / 0 / 0
Регистрация: 18.05.2015
Сообщений: 5
18.05.2015, 21:58  [ТС] 5
Да, в ней происходит аккумуляция первой таблицы (исходных данных) и второй таблицы (расчетов). Ничто не мешает поместить расчеты второй таблицы в третью, но, опять же, это лишает возможности при необходимости видеть промежуточные результаты и вносить в них ручную корректировку (так как они осуществляются автоматически). И оставляет вопрос: возможна ли автоувеличение размера одной "умной" таблицы при изменении размера другой.

Во вложении прилагаю файл.
Вложения
Тип файла: xlsx Смета проекта.xlsx (21.0 Кб, 27 просмотров)
0
83 / 60 / 21
Регистрация: 03.12.2014
Сообщений: 232
19.05.2015, 07:03 6
А вместо 2 и 3 умной таблицы не пойдут сводные таблицы? В сводные накидать формулы и он будет автоматом расти.
0
6002 / 3197 / 716
Регистрация: 23.11.2010
Сообщений: 10,684
19.05.2015, 09:00 7
Наверное нужно их просто соединить в одну таблицу и скрыть вторую и третью до необходимости
0
0 / 0 / 0
Регистрация: 18.05.2015
Сообщений: 5
19.05.2015, 14:42  [ТС] 8
Да, в данном конкретном случае их можно соединить (немного потеряв в наглядности представления данных). Возможно пример был недостаточно красочным.
Но, допустим, существует потребность большого объема ввода данных (до 6 000 - 7 000 строк) в таблицу для ввода (и столбцов там будет значительно больше), которые в последствие в разных таблицах на разных листах будут пересчитываться. Из-за этого и возникает потребность связывания размеров таблиц и автоувеличения их размеров, чтобы не заниматься этим вручную и не запоминать все таблицы в которых надо выполнить "протяжку".
0
6002 / 3197 / 716
Регистрация: 23.11.2010
Сообщений: 10,684
19.05.2015, 14:47 9
Воводите в первую таблицу, на другом листе =ДВССЫЛ() подтягиваете определитель для следующей таблицы и все должно стать автоматом. Нет?
0
5606 / 1592 / 412
Регистрация: 23.12.2010
Сообщений: 2,382
Записей в блоге: 1
20.05.2015, 14:23 10
Лучший ответ Сообщение было отмечено hardwester как решение

Решение

Таблицы взаимоувязаны. Макросы должны быть включены.
Вложения
Тип файла: rar Смета проекта.rar (24.3 Кб, 59 просмотров)
0
0 / 0 / 0
Регистрация: 18.05.2015
Сообщений: 5
20.05.2015, 16:52  [ТС] 11
Благодарю.
Пришёл к выводу, что без макросов решить данную задачу встроенными функциями excel'я невозможно. Функцией =ДВССЫЛ() работает в данном случае как-то непредсказуемо и непонятно.
Уже написал макрос. Благодарю, KoGG. Ваш макрос тоже посмотрел. У него есть небольшой недостаток - он проверяет размер таблицы только по первому столбцу, который не обязательно всегда будет заполнен. Его преимущество, относительно моего - он взаимоувязывает все три таблицы, при условии, что хоть одна из них изменяет свой размер. Хотя в моём конкретном случае это не требуется, но буду знать на будущее как это сделать.
Кому интересно, прилагаю файл со своим макросом. На этом считаю, что ответ получен и тему можно закрыть.
Вложения
Тип файла: zip Смета проекта.zip (26.6 Кб, 71 просмотров)
0
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 2
05.03.2016, 20:22 12
Спасибо. (появилось представление)
Мне подходит вариант от KoGG (идет проверка только по первому столбцу), но помогите отредактировать скрипт для сравнения таблиц на разных листах.
0
5606 / 1592 / 412
Регистрация: 23.12.2010
Сообщений: 2,382
Записей в блоге: 1
05.03.2016, 21:55 13
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
Private Sub Worksheet_Change(ByVal Target As Range)
 ' процедура находится в объектном модуле листа "Смета проекта"
 '   ListObjects("Себестоимость") находится на данном листе с именем "Смета проекта"
 '   ListObjects("Накрутка")  находится  листе с именем "Лист2"
    Dim LastRow1&, LastRow2&, Ra As Range
    With Me.ListObjects("Себестоимость")
        .LastRow1 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count
        With Sheets("Лист2")
            With .ListObjects("Накрутка")
                .LastRow2 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count 
            End With
            If LastRow2 < LastRow1 Then
                Application.EnableEvents = False
                .ListObjects("Накрутка").Resize .Range("$N$30:$Z$" & LastRow1)
                .Range("N31:Z31").Copy .Range(.Cells(LastRow2 + 1, "N"), .Cells(LastRow1, "Z"))
                Application.EnableEvents = True
            End If
        End With
    End With
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
 ' процедура находится в объектном модуле листа "Лист2"
    Dim LastRow1&, LastRow2&
    With Me.ListObjects("Накрутка")
        .LastRow1 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count 
        With Sheets("Смета проекта")
            With .ListObjects("Себестоимость")
                .LastRow2 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count 
            End With
            If LastRow2 < LastRow1 Then
                Application.EnableEvents = False
                .ListObjects("Себестоимость").Resize .Range("$B$30:$L$" & LastRow1)
                .Range("B31:L31").Copy .Range(.Cells(LastRow2 + 1, "B"), .Cells(LastRow1, "L"))
                Application.EnableEvents = True
            End If
        End With
    End With
End Sub
2
5606 / 1592 / 412
Регистрация: 23.12.2010
Сообщений: 2,382
Записей в блоге: 1
06.03.2016, 14:08 14
Тут я вчера лишние точки перед LastRow1 и LastRow2 наставил - их конечно надо убрать - и строку 1-ю не надо копировать, а только ее формат.
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
Private Sub Worksheet_Change(ByVal Target As Range)
 ' процедура находится в объектном модуле листа "Смета проекта"
 '   ListObjects("Себестоимость") находится на данном листе с именем "Смета проекта"
 '   ListObjects("Накрутка")  находится  листе с именем "Лист2"
    Dim LastRow1&, LastRow2&, Ra As Range
    With Me.ListObjects("Себестоимость")
        LastRow1 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count
         Debug.Print "Себестоимость", .HeaderRowRange.Row, .DataBodyRange.Rows.Count
        With Sheets("Лист2")
            With .ListObjects("Накрутка")
                LastRow2 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count
            End With
            If LastRow2 < LastRow1 Then
                Application.EnableEvents = False
                .ListObjects("Накрутка").Resize .Range("$N$30:$Z$" & LastRow1)
                .Range("N31:Z31").Copy
                .Cells(LastRow2 + 1, "N").PasteSpecial Paste:=xlPasteFormats
                Application.EnableEvents = True
            End If
        End With
    End With
End Sub
Вложения
Тип файла: zip Смета проекта_2.zip (28.0 Кб, 26 просмотров)
1
0 / 0 / 0
Регистрация: 05.03.2016
Сообщений: 2
06.03.2016, 21:27 15
Спасибо большое работает как надо, но тут меня понесло - захотел таблицы по листам разнести с "автоувеличением" ... сделал так отрабатывает только первый лист и второй
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
Private Sub Worksheet_Change(ByVal Target As Range)
 ' процедура находится в объектном модуле листа "Смета проекта"
 '   ListObjects("Себестоимость") находится на данном листе с именем "Смета проекта"
 '   ListObjects("Накрутка")  находится  листе с именем "Лист2"
    Dim LastRow1&, LastRow2&, Ra As Range
    With Me.ListObjects("Себестоимость")
        LastRow1 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count
         Debug.Print "Себестоимость", .HeaderRowRange.Row, .DataBodyRange.Rows.Count
        With Sheets("Лист2")
            With .ListObjects("Накрутка")
                LastRow2 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count
            End With
            If LastRow2 < LastRow1 Then
                Application.EnableEvents = False
                .ListObjects("Накрутка").Resize .Range("$N$30:$Z$" & LastRow1)
                .Range("N31:Z31").Copy
                .Cells(LastRow2 + 1, "N").PasteSpecial Paste:=xlPasteFormats
                Application.EnableEvents = True
            End If
        End With
        With Sheets("Лист3")
            With .ListObjects("Прочие")
                LastRow3 = .HeaderRowRange.Row + .DataBodyRange.Rows.Count
            End With
            If LastRow3 < LastRow1 Then
                Application.EnableEvents = False
                .ListObjects("Прочие").Resize .Range("$N$30:$Z$" & LastRow1)
                .Range("N31:Z31").Copy
                .Cells(LastRow3 + 1, "N").PasteSpecial Paste:=xlPasteFormats
                Application.EnableEvents = True
            End If
        End With
    End With
End Sub
0
0 / 0 / 0
Регистрация: 02.08.2022
Сообщений: 11
16.08.2022, 14:59 16
Добрый день. Есть к примеру две умные таблицы одна под одной, подскажите как сделать так, чтоб при увеличение 1 таблицы вниз… вторая таблица смещалась на равное количество добавленных строк в 1 таблице

Добавлено через 1 минуту
Добрый день. Есть к примеру две умные таблицы одна под одной, подскажите как сделать так, чтоб при увеличение 1 таблицы вниз… вторая таблица смещалась на равное количество добавленных строк в 1 таблице
0
16.08.2022, 14:59
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.08.2022, 14:59
Помогаю со студенческими работами здесь

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

Обновление двух таблиц и более в одной транзакции
Доброго времени суток. Есть база данных Firebird. Необходимо реализовать списание товаров со...

Как вывести данные из двух более таблиц mysql?
Подскажите пожалуйста! Необходимо: 1. на одну страницу вывести информацию из двух или более...

Объедение двух таблиц по трем и более схожим столбцам
Нужно, чтобы по этим трем(и более) столбцам сравнивались данные. и если они одинаковые то(все),...

События умных таблиц. Кто-нибудь пользовался?
PivotTableAfterValueChange PivotTableChangeSync PivotTableUpdate и др. Чт это, как это...

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru