Добавить
Уведомления

Функция для деление строки по символу. Преобразование строки в число. subSplit для подсчёта длины

На чертеже размещены данные содержащие одной строкой типоразмер и длину профиля. #nanocad #Excel #Table #Таблицы #Диапазон #AcadTable В качестве примера использована «Универсальная выноска». На самом деле строка может содержаться в любом объекте СПДС или платформы. Тело документа: https://cloud.mail.ru/public/SeXD/HB7... 00:00 Размещаем таблицу на чертеже; 00:16 Вставляем «Раздел отчёта»; 00:26 Во вставленном заголовке отчета вводим название столбцов; 00:42 Нажимаем на пиктограмму «Выбрать исходные объекты». Выбираем объект (в нашем случае Универсальную выноску) и задаем дополнительные условия для фильтрации. Например, строка 2 «содержит» “L=”; 01:00 Из контекстного меню в ячейке отчета столбца «А» выбираем нужное свойство. В нашем случае для выноски это значение второй строки Object.McPropNoteString1. 01:03 Так же задаем для столбцов «B» и «C»; 01:09 Открываем «Построитель выражений»; 01:25 Теперь нам нужно определить ТИП профиля. Из второй строки выноски нам нужно оставить только первый символ subString(Object.McPropNoteString1;1;1); 01:40 Нажимаем на пиктограмму «Группировать и объединять» и, перенеся «А» в область группировки и объединения, из контекстного меню выбираем «Объединять». Ячейки таблицы, содержащие одинаковые символы (значения) объединились; 01:51 Так как у нас будет много (условие задачи) позиций с одинаковым обозначением, то нам нужно обеспечить их перечисление в каждой строке. Пишем: sum(Object.McPropNoteString0+"; "); 02:13 В колонке «С» нам нужно определить конкретный типоразмер данного профиля. Пишем subSplit (Object.McPropNoteString1; "L=";1), используя «L=» как аргумент для разделения, и «1» указываем, что нам нужна левая часть строки; 02:37 Открываем диалог «Группировки и объединения» и задаем группировку по столбцу «С»; 02:51 Копируем выражение в строке отчет из ячейки «С» в ячейку «D» 02:54 Редактируем выражение, теперь будем использовать Правую часть строки от «L=»: subSplit (Object.McPropNoteString1; "L=";1) 03:00 Производим суммирование, предварительно переведя «строку» в «число»: sum(num(subSplit (Object.McPropNoteString1; "L=";2))); 03:30 Обращает на себя внимание, то что позиции в колонке «В» идут не по порядку. Для правильной сортировки добавляем в столбец «Е» свойство выноски Object.McPropNoteString0. Открываем диалог «Группировать и объединять» и , перетащив столбец «Е» в левую часть, задаем сортировать «По возрастанию» и перетаскиваем его вверх. Выше (ранее по алгоритму) группировки по «С» 03:51 Получив результат, мы обращаем внимание на то, что в обозначении типоразмера остался разделить «;». Опять заходим в «построитель выражений» и удаляем последние символы «;» - delsubright( subSplit (Object.McPropNoteString1; "L=";1);"; "); 04:45 Проверяем результат; 05:19 Проводим доработку напильником и кувалдой

Иконка канала MCAD
46 подписчиков
12+
102 просмотра
2 года назад
12+
102 просмотра
2 года назад

На чертеже размещены данные содержащие одной строкой типоразмер и длину профиля. #nanocad #Excel #Table #Таблицы #Диапазон #AcadTable В качестве примера использована «Универсальная выноска». На самом деле строка может содержаться в любом объекте СПДС или платформы. Тело документа: https://cloud.mail.ru/public/SeXD/HB7... 00:00 Размещаем таблицу на чертеже; 00:16 Вставляем «Раздел отчёта»; 00:26 Во вставленном заголовке отчета вводим название столбцов; 00:42 Нажимаем на пиктограмму «Выбрать исходные объекты». Выбираем объект (в нашем случае Универсальную выноску) и задаем дополнительные условия для фильтрации. Например, строка 2 «содержит» “L=”; 01:00 Из контекстного меню в ячейке отчета столбца «А» выбираем нужное свойство. В нашем случае для выноски это значение второй строки Object.McPropNoteString1. 01:03 Так же задаем для столбцов «B» и «C»; 01:09 Открываем «Построитель выражений»; 01:25 Теперь нам нужно определить ТИП профиля. Из второй строки выноски нам нужно оставить только первый символ subString(Object.McPropNoteString1;1;1); 01:40 Нажимаем на пиктограмму «Группировать и объединять» и, перенеся «А» в область группировки и объединения, из контекстного меню выбираем «Объединять». Ячейки таблицы, содержащие одинаковые символы (значения) объединились; 01:51 Так как у нас будет много (условие задачи) позиций с одинаковым обозначением, то нам нужно обеспечить их перечисление в каждой строке. Пишем: sum(Object.McPropNoteString0+"; "); 02:13 В колонке «С» нам нужно определить конкретный типоразмер данного профиля. Пишем subSplit (Object.McPropNoteString1; "L=";1), используя «L=» как аргумент для разделения, и «1» указываем, что нам нужна левая часть строки; 02:37 Открываем диалог «Группировки и объединения» и задаем группировку по столбцу «С»; 02:51 Копируем выражение в строке отчет из ячейки «С» в ячейку «D» 02:54 Редактируем выражение, теперь будем использовать Правую часть строки от «L=»: subSplit (Object.McPropNoteString1; "L=";1) 03:00 Производим суммирование, предварительно переведя «строку» в «число»: sum(num(subSplit (Object.McPropNoteString1; "L=";2))); 03:30 Обращает на себя внимание, то что позиции в колонке «В» идут не по порядку. Для правильной сортировки добавляем в столбец «Е» свойство выноски Object.McPropNoteString0. Открываем диалог «Группировать и объединять» и , перетащив столбец «Е» в левую часть, задаем сортировать «По возрастанию» и перетаскиваем его вверх. Выше (ранее по алгоритму) группировки по «С» 03:51 Получив результат, мы обращаем внимание на то, что в обозначении типоразмера остался разделить «;». Опять заходим в «построитель выражений» и удаляем последние символы «;» - delsubright( subSplit (Object.McPropNoteString1; "L=";1);"; "); 04:45 Проверяем результат; 05:19 Проводим доработку напильником и кувалдой

, чтобы оставлять комментарии