Построение произвольных блок-схем и автоматический анализ связей в MS EXCEL

history

Создадим редактор блок-схем произвольной формы в MS EXCEL. Помимо построения блок-схем редактор должен автоматически (по нажатию кнопки) проводить анализ связей элементов в схеме:

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

Справедливости ради, нужно отметить, что предложенный в данной статье построитель блок-схем во многом дублирует стандартный инструмент SmartArt (тип Иерархия), который можно создать через меню EXCEL Вставка-Иллюстрации-SmartArt.

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

Примечание:

В статье Автоматический анализ схем SmartArt MS EXCEL показано как считать всю информацию об элементах и их связях с помощью VBA (фактически реализован парсинг - сбор и систематизация информации, parsing).

Построитель произвольных блок-схем

Для редактора блок-схем будем использовать стандартные элементы типа Надпись и Стрелка (меню EXCEL Вставка-Иллюстрации-Фигуры). Каждому элементу блок-схемы (Надпись) программа VBA будет присваивать уникальный номер, что в дальнейшем нам позволит определить связи между элементами (заполнив отдельную таблицу последователей и предшественников каждого элемента). Поскольку мы будем строить блок-схему иерархического типа, то последователь (тот элемент к которому идет стрелка) будет единственным, но если требуется создать схему с произвольными связями, то программу VBA можно легко настроить. Иерархический тип блок-схем подходит для описания организационных систем (начальник должен быть единственным, в идеале), производственных цепочек (механическая обработка и сборка изделий) и др.

Перечислим некоторые правила построения данного типа блок-схемы и работы с ней:

  1. У элемента допускается не более одной исходящей стрелки. Если у элемента отсутствует исходящая стрелка, то он называется Конечным элементом (это - Босс;)
  2. У элемента допускается несколько входящих стрелок. Если у элемента отсутствует входящая стрелка, то он называется Начальным элементом. Если их 2 и больше, то это - элемент типа Сборка
  3. Каждый элемент должен иметь соединение хотя бы с одним другим элементом
  4. Два элемента могут быть соединены только одной стрелкой
  5. В схеме можно сделать несколько последовательностей не связанных между собой стрелками. 
  6. Количество несвязанных между собой последовательностей элементов равно количеству Конечных элементов (следствие Правила №1)
  7. Для анализа схемы все элементы и стрелки именуются по определенному формату (01, 02, ... 09, 10, 11), это нужно для работоспособности схемы
  8. Вставляйте элементы и стрелки только с использованием кнопок на листе "Вставить элемент" и Связать 2 элемента"
  9. Не удаляйте элементы по отдельности - это может нарушить работоспособность схемы. Удаляйте схему целиком. Стрелки удалять можно
  10. Стрелки не соединяющие 2 элемента не допускаются (могут возникнуть при удалении 1 элемента)
  11. Элементы на схеме двигать можно, стрелки будут следовать за своим элементом. Если нужно подвинуть стрелку, то двигайте элемент

Для построения схемы на листе создано меню с кнопками управления (см. файл примера).

Пример построения схемы с нуля

  1. Выделите ячейку на листе куда нужно поставить элемент
  2. Нажмите кнопку Вставить элемент схемы. Элемент (прямоугольник с номером 01) появится на листе
  3. Вставьте еще 1 элемент повторив шаг 1 и 2. На листе появится элемент с номером 02
  4. Выделите сначала элемент 01, затем, удерживая CTRL или SHIFT, выделите элемент 02 (последовательность выделения элементов важна для направления стрелки)
  5. Нажмите кнопку Связать 2 элемента, появится стрелка соединяющая элемент 01 с 02. Элементы можно перемещать, стрелка будет перемещаться вместе с элементами

Так выглядит схема с 2-мя независимыми последовательностями

Анализ данных блок-схемы

Построим следующую схему:

После построения блок-схемы нажмите кнопку Анализ схемы - заполнится таблица. Результаты анализа схемы приведены ниже.

Так как предшественников у каждого элемента может быть несколько, то их номера выведены в одной ячейке - в тектовой строке. Чтобы расшифровать ее используйте функцию ПСТР(). Например, формула =ПСТР(N33;3;2) выведет второго предшественника элемента 03 (или 3), т.е. элемент 02 (дополнительный ноль перед номером у элементов от 1 до 9 упрощает анализ этой строки).

Информацию из этой таблицы можно передавать в качестве исходных данных в программу, которая моделирует, например, производственный процесс (элементы представляют собой разное оборудование). К примеру, исходный материал в данной схеме должен подаваться на оборудование 01 и 04, а конечный продукт изготавливается оборудованием под номером 06. Программе также будет понятно на какое оборудование передавать материал на следующем шаге. Элементам можно присвоить характеристики (производительность, уровень брака, вероятность простоя). 

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

Также можно определить количество уровней иерархии в схеме или максимальную длину последовательности элементов, что фактически то же самое.

Как это реализовано?

Построение схемы (вставка элементов, их нумерация, связь элементов стрелками) реализовано с помощью процедур VBA.

Анализ схемы и заполнение таблицы - также нескоолько строк программного кода.

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

 

 


© Copyright 2013 - 2022 Excel2.ru. All Rights Reserved