Избранное »

22.09.2014 – 07:27 | 2 комментария | 14 972 views

Здравствуйте все, кто работает в Индизайне!
Извещаем вас о том, что на youtube.com начал работу канал «InDesign Мастерская вёрстки». Там уже размещены более 60 видео с полным описанием как работать с программой DoTextOK. Другие интересные темы, касающиеся работы …

Читать полностью »
Работа в InDesign

Хитрости и секреты, приемы работы, уроки

Новая версия!

Особенности новой версии Индизайна

Плагины

Описание плагинов, информация о плагинах для работы с Adobe InDesign

Скрипты

Готовые к использованию скрипты для Adobe InDesign

Скриптинг

Описание языка, приёмов и методов программирования для Adobe InDesign

Home » Скрипты

Сумма ячеек таблицы

Добавлено на 26.01.2009 – 22:322 комментария | 344 views

Многие вещи, которые не может делать Индизайн, реализуются при помощи скриптов и плагинов. При помощи этого скрипта (автор Dave Saunders) можно вычислять сумму ячеек таблицы.

//DESCRIPTION: Add selected cells; total goes to last cell
 
(function() {
if (app.documents.length > 0 &&
app.selection.length > 0) {
sumSelectedCells(app.selection[0].cells);
 
function sumSelectedCells(cells) {
if (cells.length == 1) return;
if (cells[-1].texts[0].contents != "") {
if (!confirm("Overwrite contents of last cell?")){
return;
}
}
var sum = 0;
for (var j = 0; cells.length > j+1; j++) {
try {
sum += Number(cells[j].texts[0].contents);
} catch (e) {}
}
cells[-1].texts[0].contents = String(sum);
}
}
}())

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

При таком выделении после запуска скрипта вычисляется сумма элементов строки и результат вставляется в последнюю ячейку строки (рис.1).

Рис. 1

При таком выделении вычисляется сумма чисел, стоящих в столбцах (сумма каждого столбца, рис. 2)

Рис. 2

Рис. 2

При таком выделении вычисляется сумма всех ячеек, и результат заносится в нижнюю правую ячейку (рис. 3)

Рис. 3

Рис. 3

Сохраните скрипт в папку с вашими скриптами с именем AddSelectedCells.jsx.

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

//DESCRIPTION: Add selected cells; total goes to last cell

(function() {
if (app.documents.length > 0 &&
app.selection.length > 0) {
sumSelectedCells(app.selection[0].cells);

function sumSelectedCells(cells) {
if (cells.length == 1) return;
if (cells[-1].texts[0].contents != «») {
if (!confirm(«Overwrite contents of last cell?»)){
return;
}
}
var sum = 0;
var currency = ParseCurrency(cells[0].texts[0].contents);
for (var j = 0; cells.length > j+1; j++) {
try {
sum += ParseCleanFloat(cells[j].texts[0].contents);
} catch (e) {}
}
cells[-1].texts[0].contents = currency+sum;
}
function ParseCurrency(numberString){
var currencyArray = [«$»,»€»,»£»,»₤»,»¥»,»₪»];
for(var i=0;i<numberString.length;i++){
if(IsInArray(numberString[i],currencyArray)){return numberString[i]}
}
return «»;
}
function ParseCleanFloat(number){
number=number.split(«»);
for (var i=number.length-1;i>=0;i—){
if(isNaN(number[i]) && number[i]!=».»){
number.splice(i,1);
}
}
number=number.join(«»);
if(number!=»»){
return parseFloat(number);
}
return 0;
}
function IsInArray(item,array){
for(var i=0;i<array.length;i++){
if(array[i]==item){return true}
}
return false;
}

}
}())

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

Скрипт называется AddSelectedCellsWithCurrency.jsx

Если вам надо не только суммировать числа в таблицах, но производить и другого рода вычисления, сортировку данных, то подумайте о покупке плагина SmartStyles фирмы Woodwing, который, кроме этого, много еще чего умеет.

Скачать zip-архив с двумя скриптами

2 комментария »

Оставить комментарий!

Вы должны быть в системе чтобы оставить комментарий.