VetCAD

Получение суммы значений в объединённых строках отчета СПДС

   0 оценок

размещено: 17 Сентября 2024
обновлено: 25 Января 2025

Необходимо создать таблицу на чертеже, объединив одинаковые помещения по назначению на разных этажах здания

Тема на форуме: Пока Уже нет

                                         Исходный файл

                                         Ролик на YouTube

                                        Ролик на Rutube

                                        

 

 

Файлы в ссылках могут отличаться по результатам опытной эксплуатации.

 

 

1.Шаг I .Создание таблицы и подготовка данных

1.1. Создаем таблицу на чертеже.

1.1.1. Формируем «Заголовок отчета» в области «Данных»

Рисунок 1‑1

1.1.2. Вставляем «Раздел отчёта»

Рисунок 1‑2

1.1.3.На тулбаре «Шаблон отчета» нажимаем на пиктограмму «Выбрать исходные объекты»

Рисунок 1‑3

 

1.1.4. В диалоге «Быстрый выбор» указываем, что нам нужны «Помещения»

Рисунок 1‑4

 

1.1.5.Последовательно указываем  какие свойства объекта «Помещение» и в каком порядке нам нужно получить в отчете. Форматирование и  свойства ячеек  рассматривать не будем, так как это достаточно просто. Нужное свойстов, выбираем из контекстного меню, по щелкнув по правой кнопки мыши.

Рисунок 1‑5

 

1.1.6.После заполения шаблона отчета и форрматирования ячеек шалон должени иметь вид:

Рисунок 1‑6

 

1.2 Группировка и объединение      

1.2.1.Нажимаем на пикторграмму «Группировать и объединять»

Рисунок 1‑7

1.2.2.По условию задачи нам нужно объединить все помещания:

1.2.2.1.По Этажу

Рисунок 1‑8

1.2.2.2.По квартире

Рисунок 1‑9

1.2.2.3. И по «Типу» помещания

Рисунок 1‑10

1.2.2.4. Добавим правило сортировки для каждой колонки

Рисунок 1‑11

 

2.Шаг II. Объединение пустых строк

2.1. Данный шаг легко можно было выполнить в пункте 1.2, но данное действие важно для понимания последовательности работы алгоритма отчёта. Нажимаем на «Группировать и объединять»

2.2. И добавляем объединение по G”

Рисунок 2‑1

2.3. Так как объединение происходит уже после, того как мы нашли все помещения на этаже по квартирам и по типу, то строки в колонке объединились по «Пустому значению» 

Рисунок 2‑2

2.4. Показываю все на примере первого этажа, но на втором этаже все происходит аналогичным образом.  Сколько будет «Этажей», столько и появится в  отчете. Правило сортировки колонки «А» задано по возрастанию,  так что все будет идти  от первого этажа до девятого. Можно создать правило пользовательской сортировки, можно привести значение «Уловного этажа» к цифровому индексу, но не в рамках этого примера. Не нужно пложить сущностей.

3. Шаг III. Подсчет строк в объединённых диапазонах.

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

3.2. Просто в ячейке отчета « пишем =count(), подсчитывая, сколько помещений, определённой категории, на каждом конкретном этаже.

Рисунок 3‑1

4.Шаг IV. Проверка условия принадлежности строки к определённому диапазону.

4.1. Ранее мы нашли, сколько помещений определённой категории, находится  в квартирах на разных этажах. Например, на картинке в пункте 3.2 наглядно видно, что в «Квартире 1»  на «Первом этаже» четыре «жилых» помещения, один сан узел и одно техническое помещение.

4.2. Найдем первую строку в каждом диапазоне, для этого проверим условие, если площадь колонка «F» входит в поддиапазон по типу (колонка «)

Рисунок 4‑1

Данное выражение будет справедливо только для первой строки поддипазона

4.3. Для наглядности и визуализации действия пока запишем так: val("C"+rowabs)!=val("C"+(rowabs-1)) ИСТИНА, то пишем: "Если условие Истина  это первая строка диапазона"; если ЛОЖЬ, то: "Если Ложь, то строка"  

Рисунок 4‑2

4.3.1. Полученный результат видим на картинке

Рисунок 4‑3

5. Шаг V. Вычисление суммы значений «Площадь» в одинаковых поддиапазонах.

5.1.  Теперь, мы знаем, откуда начинается поддиапазон и количество строк с одинаковым типом помещений в поддиапазоне

5.2. Вычислять пока будем только для первых строк поддиапазона, где значение «ИСТИНА»

5.2.1. Первое значение всегда находится в той же строке на одну ячейку влево off(0;-1)

5.2.2. Последняя строка, (первый аргумент функции off) вычисляем как  val("G"+rowabs)-1.

Рисунок 5‑1

Например, для первого диапазона "Жилые помещения" в ДЕВЯТОЙ строке колонки "G" будет 4, нам нужно отнять текущую строку и, наш диапазон суммирования, будет иметь значение:off(0;-1):off(val(3;-1).В примере это sum(F10:F13)

Рисунок 5‑2

5.2.3. Для остальных строк поддиапазона пока оставляем как было

Рисунок 5‑3

5.2.4. Результат видим на картинке

Рисунок 5‑4

 

 

6.Шаг VI. Заполняем поддиапазон данными

6.1. Теперь, зная значение суммы площадей в поддиапазоне и размер диапазона, мы просто в нём будем ссылаться на значение верхней строки off(-1;0) .

6.2.  Просто меняем «Если Ложь, то строка» на off(-1;0)

Рисунок 6‑1

6.3. В результате получаем

Рисунок 6‑2

7.ШАГ VII.  Получение товарного вида отчёта

7.1. В строках колонки «  у нас подсчитано значение, но в каждой строке отображается суммарное значение сумм поддиапазона

7.2. Заходим в диалог «Группировать и объединять» и просто объединяем по строки по значениям в колонке «

Рисунок 7‑1

ИТОГ: Делайте сами