Сообщество - MS, Libreoffice & Google docs

MS, Libreoffice & Google docs

762 поста 14 934 подписчика

Популярные теги в сообществе:

203

Расширяем функционал срезов сводных таблиц

Срезы – это очень удобный инструмент для интерактивного взаимодействия со сводными таблицами в Excel. С помощью них мы можем благодаря простому щелчку ЛКМ выбирать выводимые значения:

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


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

Копируем мы для того, чтобы обе сводные были подключены к срезу. Убедиться в этом можем, щелкнув ПКМ по срезу, а затем нажав на «Подключения к отчетам»:

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

Теперь просто скрываем столбец с первой ячейкой сводной (в нашем примере столбец Е), поправляем ширину столбца с символом фильтра (в нашем примере столбец F) и помещаем в него примерно вот так срез:

Вот и всё. Теперь можно спокойной щелкать и по этому символу фильтра и искать нужные элементы. Вот, например, поиск всех видов масла из списка:

Подтвердив ввод, получаем выручку лишь по маслам:

Вот такой совет. Ссылка на файл из скриншотов для самостоятельного упражнения:


https://drive.google.com/file/d/1NXAZFNRMpCqfsQQLZWJ6x_rZl6s...


На эту тему я также снял отдельное видео. В нём в еще больших подробностях и наглядно рассмотрена данная тема , так что советую это видео тоже посмотреть:

Показать полностью 6 1
137

Пользовательские числовые форматы Excel – с нуля до профи за 40 минут

Тема пользовательских числовых форматов в Excel всегда казалась мне одной из самых сложных в плане объяснения тем – уж слишком много деталей и особенностей должно быть одновременно объяснено, чтобы создавалось комплексное понимание принципа работы кодов числовых форматов.


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

В видео рассмотрено, пожалуй, всё - от каждого функционального символа кодов формата, вплоть до написания условий в структуре кода и т.д.


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

Пользовательские числовые форматы Excel – с нуля до профи за 40 минут

Приятного просмотра! 😊

Показать полностью 1
16

Как я Google приложение писал

Звучит несколько пафосно, но другого слова не подобрал, а в терминах гугла это оно и есть.
Понадобилось для работы такая фича: на вебстранице сайта конторы публиковать список работников, что в отпуске находятся. На сайте есть CMS, в которой можно ручками эти сведения забивать и тщательно следить, чтобы если работник вышел из отпуска, данные об этом удалялись. Какая скучная работа, подумал я, и решил применить современные технологии для облегчения этой задачи. Выбор пал на сервисы гугля, ибо воротить что-то на фронте с бэком я не мастер, да и CMS не позволял такой роскоши. Думал всё будет просто сделать гуглем, но да, щаз :).

Итак, сделал простую форму, в которой всего 3 вопроса: кто, с когда, и по какое, связал с таблицей, куда это добро будет падать и далее вопрос, как это отобразить на странице.

Это табличка формы. Но нельзя же ее так и показывать, а фильтровать как тех, кто уже вернулся? Долго рылся в полезных функциях таблиц, и наконец нашел такую:

=query('Ответы на форму (1)'!$B$1:$D$31;"select B,C,D where D is not null order by D asc";-1), результат которой на другом листе:

Почти то, что надо! Вот только без оформления текстовкой, заголовком и этими "с", "по" надо что-то делать. В таком виде показывать нельзя. Погрузившись в маны гугльскрипта, нашел замечательную вещь. Идем в Инструменты->Редактор скриптов. Оказывается, чтобы развернуть приложение, нужно чтобы в скриптах была функция doGet(), которая должна вернуть специальный объект HtmlService, в котором и можно отправлять подготовленную html страницу. Эта функция как раз и вызывается, когда обращаемся по ссылке при развертывании приложения. Вау, подумал я, давай же сделаем это. Как не очень прошареный в этом вашем программировании, я накидал что-то вроде:


function doGet(e){

var content='<p>работники, находящиеся в отпуске:';

var sheet = SpreadsheetApp.getActive().getSheets()[1];

var row = sheet.getLastRow();

for(i=2;i<=row;i++) {

content =content+"<p>"+ sheet.getRange('A' + i).getDisplayValues()+" c ";

//Logger.log(sheet.getRange('B' + i).getDisplayValues());

content=content+sheet.getRange('B' + i).getDisplayValues() +" по "+sheet.getRange('C' + i).getDisplayValues() +"</p>";

}

content=content+"</p>";

return HtmlService.createHtmlOutput(content);

}


Надо заметить замечательную функцию getDisplayValues(), которая берет из ячейки данные именно в том виде, как они отображаются в таблицах, а не так, как они там хранятся, что есть 2 существенные разницы. Вкратце, функция из данных в нашей подготовленной таблице формирует html для отображения в браузере. Ну это я так думал. Довольный и счастливый, я жму Начать развертывание->Новое развертывание и получаю длинную ссылку на моё приложение и кликаю на него. Так то отображается, но вверху страницы

Вот это подарок. Да еще цвета фона+шрифт не те, что мне нужны для встраивания в сайт. А надо заметить, что встроить данные в сайт, кроме как в iframe никак нельзя. Не буду описывать долгий путь, каким я шел, сразу готовое решение. В скриптах к табличке создаем html файлы Index и Stylesheet.


Index:

<!DOCTYPE html>

<html>

<head>

<base target="_top">

<?!= include('Stylesheet'); ?>

</head>

<body>

<?!= main(); ?>

</body>

</html>

В этом файле вызываются функции include, которая обрабатывает созданные стили и main.


Stylesheet:

<style>

body {

background-color:rgb(240, 240, 240);

}

p {

font-size:16px;font-family:arial,helvetica,sans-serif; color: rgb(74, 74, 74);

}

</style>

Тут определяем стили нашей веб-страницы.


В скриптах добавляем:

function doGet(e){

return HtmlService.createTemplateFromFile('Index').evaluate().setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL);

}


function include(filename) {

return HtmlService.createHtmlOutputFromFile(filename).getContent();

}

Вот это .setXFrameOptionsMode - это важно, без этого в iframe вашего сайта работать ничего не будет.

То, что ранее было doGet() теперь main() c отличием в последней строке:

return content;

До этого return content; я догонял с час, думая почему выводится не то, что я хотел :)

После внесения изменений не забываем заново развернуть проект(Начать развертывание->Управление развертываниями->значок редактировать->выбрать Новую версию), без этого то, что были внесены изменения в скрипты, учитываться не будит (жаль, и до этого факта дойти тоже надо было)

Ну и чтобы это всё богатство отображалось в CMS, добавляем туда iframe вида:

<iframe frameborder="no" height="600" src="https://script.google.com/macros/s/AKfycby1lh7er9fzt.. (копируем ссылку, что выдал гугл при развертывании)" width="800"></iframe> Размеры меняем по вкусу.


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

Показать полностью 2
1

Ссылка на локальную папку на компьютере в google sheets

Добрый день! Никак не могу найти способ вставить ссылку в google sheets на папку на компьютере, чтобы открывалась по ссылке. Может есть способ через макрос или расширение в хром? Подскажите пожалуйста

14

Проблемы в работе макроса сделанного записью

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



Вот так они выглядят выгруженные.

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


Вот его текст


Sub Макрос5()


Columns("F:F").Select

Application.CutCopyMode = False

Selection.Replace What:=".", Replacement:="", LookAt:=xlPart, _

SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _

ReplaceFormat:=False

End Sub


И вот что получается



Пробовал перед заменой принудительно привести к текстовому формату, все равно не выходит.

Показать полностью 1
267

Универсальный метод для выбора и заполнения пустых/определенных ячеек в Excel

Хочу поделиться универсальным методом выбора и заполнения пустых (и не только) ячеек определенным значением или формулой/функцией.


В качестве примера возьмем следующую табличку, и предположим, что в ней нужно заполнить пустые ячейки:

Заполнять, конечно, можно статичными значениями, но это слишком просто, поэтому мы сразу повысим вставки и вставлять будем функцию СРЗНАЧ для вычисления среднего значения из значений предыдущего и следующего месяцев каждого пробела.


Итак, что для этого нужно сделать? Во-первых, выбираем диапазон со значениями:

Затем открываем окно поиска (CTRL+F):

И искать мы будем пустые ячейки, поэтому оставляем поле «Найти» пустым и нажимаем на кнопку «Найти все». В результате в нижней части окна поиска будет выведен список найденных подходящих ячеек:

Первый элемент списка уже выбран, это можно видеть по голубому выделению, поэтому сразу можем использовать комбинацию клавиш CTRL+A, чтобы выбрать все элементы списка:

Всё, окно поиска свою задачу выполнило, так что закрываем его и в итоге у нас вот так выбраны все подходящие ячейки:

Теперь можем начинать вносить нужную нам функцию. Для этого нажимаем клавишу F2, и в одной из активированных в результате ячеек вписываем функцию вычисления среднего из значений соседних ячеек:

Всё, функция готова, так что, зажав CTRL, нажимаем Enter, чтобы вставить данную функцию во все выбранные ячейки, и получаем вот такой результат:

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

Показать полностью 7 1
16

Ограничения гуглскрипта в отношении таблиц,связанных с формами

Столкнулся с проблемой невозможности из таблицы гугла, привязанной к форме, удаления строки из скрипта. Т.е. есть форма, с ней связана таблица, куда попадают данные формы. Идея была по событию onFormSubmit() анализировать данные и какие-то строки удалять.  Например


function test(){

var sheet = SpreadsheetApp.getActive().getSheets()[0];

sheet.getRange('D2').deleteCells(SpreadsheetApp.Dimension.ROWS);

}


Оказалось нельзя, "Exception: Невозможно вырезать данные, полученные через форму. Скопируйте их."  При этом если заходить в таблицу как обычно, строки удалять можно.
Есть варианты обойти это безобразие?

24

Экспорт из Excel в Storehouse

Товарищи, коллеги, собратья!)


Помогите, пожалуйста, советом) А быть может и решением...


Дано -

гигантская таблица с номенклатурой, в excel, которая обновляется по цене, скажем раз в квартал... Ответственный человек, также раз в квартал, берет ее и переносит данные вручную в Storehouse.


Номенклатура в excel и shouse по наименованию не совпадает...

Тоесть есть какие-то опознавательные знаки, по которым можно найти позицию и в excel и shouse, но наименования не идентичны...


Вопрос - как автоматизировать перенос данных из excel в shouse?

Пока в голове, на уровне дауна, идея - выгружать в xls таблицу номенклатуры с shouse, каким-то макаром сверять с исходной excel по общим "маркерам" в наименованиях и автоматом вносить в выгруженный shouse.... затем заливать его обратно...


В том ли направлении смотрю? Может есть готовые решения или кто-то писал что-нибудь подобное "на коленке"?


Буду рад любой помощи, человек чуть ли не умирает от этих таблиц, настолько это муторно и долго.


Спасибо.

Экспорт из Excel в Storehouse
Показать полностью 1
Отличная работа, все прочитано!