С момента появления Excel стал самым популярным и универсальным инструментом автоматизации расчетов для непрограммистов и полупрограммистов (таких, как я). В свое время я много всякого писал на VBA, делал в студенчестве скрипты для оформления курсовых, даже запилил для диссертации мощный итерационный расчет распространения тепла в твердом топливе во время горения, который минут на 20 парализовывал комп. Сегодня в эпоху облаков и веб-решений эту нишу захватывают Google Sheets.
Недавно провел небольшое исследование гугл таблиц для работы с визуализациями. В процессе изучения родились несколько интересных идей и один скрипт. Под катом результаты моих изысканий.
Работаю я в сфере управления и планирования строительством, а на стройке что-то сложнее икселя приживается очень плохо. Поэтому у гугл таблиц есть все шансы завоевать сердца (а может даже умы) строителей. Некоторые приемы, уже ставшие стандартом работы в электронных таблицах, гугл перенимает у предшественников, поэтому на первый взгляд разница с искселем незначительна. При этом некоторые возможности реализуются в новом виде и одной из таких удачных на мой взгляд реализаций стали формулы массива. Они были и в икселе, но посмотрев на них, хотелось сказать “слава богу, что я не знаю где они мне могут понадобиться”. В гугле же с ними прямо приятно работать и, думаю, они еще проявят свою полезность во многих задачах. Я же покажу, как их можно применять для работы со строительными визуализациями.
Демонстрировать все это в видеоформате проще, поэтому сделал небольшой эксплейнер:
А вот код скрипта, который позволяет увязать визуализацию с разными обозначениями со справочником параметров:
/**
* Подставляет вместо закодированных значений соответствующие значения из справочника
* @param {"A5:D20"} arr массив исходных закодированных значений
* @param {"A21:D25"} sprav справочник (массив)
* @param {"цена"} param искомый в справочнике параметр
* @customfunction
*/
function ВИСП(arr, sprav, param) {
if(typeof sprav=="object"&&sprav.length!=undefined) {
if(typeof arr=="object"&&arr.length!=undefined) {
for (var i = 0; i<arr.length; i++){
for (var j= 0; j<arr[i].length; j++){
if (arr[i][j] != ""){
var r = sprav.map(function(value){return value[0]}).indexOf(arr[i][j]);
var c = sprav[0].indexOf(param);
if (r!=-1 && c!=-1) {arr[i][j] = sprav[r][c]}
}
}
}
}
}
return arr;
}
Возможно оптимизация кода не на высоте, я все таки не PROграммист, но он работает.
Конечно, те кто в теме, скажут что это все фигня, давно уже есть BIM. Да, есть. Но мы быстрей прикрутим таблицы к модели в SketchUp (тоже гугл, чтоб его), чем внедрим BIM. Потому что пока в BIM не работают все от производителей стройматериалов и проектировщиков до строителей и эксплуатации, от него больше трудозатрат, чем пользы. А в нашей стране это произойдет не скоро.
Напоследок о гугле. Кажется по качеству продукта он далеко впереди аналогов, коих поверхностное гугление выдает целую плеяду. Но нигде я не встречал такой продуманной логики работы, качественной кроссдевайсности и возможности расширять функционал скриптами. Но это только мое мнение, и если я не прав, поделитесь своим.
Автор: RePlaner