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

MS, Libreoffice & Google docs

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

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

50

Нужен макрос или скрипт

Доброго времени суток уважаемому Сообществу.

Пишу впервые.

Сразу к делу.

Имеется склад. На складе - дохленький комп и сканер штрих-кода. Каждый день, на склад приезжает около 1000+ коробок, на которых наклеены этикетки с штрих-кодом.

Штрих-код выглядит так: 11540507202024780029090102.
Количество цифр - постоянно.

Сканер, считывая штрих-код, заносит его в первую ячейку таблицы в Libre Office Calc.
Далее, нужно чтобы штрих-код был разложен на значения и разнесён по ячейкам таблицы, как показано на скрине:

Порядковый номер должен ставиться автоматически.
Первая цифра в штрих-коде - № стеллажа.
Следующие три цифры - № ячейки в стеллаже.
Далее, восемь цифр - дата упаковки коробки.
Следом, одна цифра - № смены.
А вот следом, две сложности :-)  13 цифр - это код наименования товара, находящегося в коробке. Список всех наименований с кодами, расположен на соседнем листе документа. Можно расположить на этом же листе, если так будет проще.

Выглядит список вот так:

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

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

Если нужно, можно на комп, где всё это будет работать, установить какой-нибудь MS Office.

Буду благодарен за любую помощь.

Если кто сможет самостоятельно сделать - пишите (mostgraycat@gmail.com), скину исходный файл + оплачу какую-нибудь разумную денюжку. Межбанковским переводом, ибо нахожусь в ближнем забугорье и тут на картах другая валюта.

Показать полностью 3
20

Помогите победить ексель

Суртехи, выручайте. Гумманитарием становлюсь.

Есть ГОСТ 33967-2016

Насосы центробежные для перекачивания вязких жидкостей.

Исходные данные:.

Пытаюсь написать уравнение для Екселя. Решаю формулу А.3


Пишу вот так: =16,5/((60*C20*(C19^0,5))^(1/12))

В результате получается 8,768, а должно быть 5,52

Подскажите пожалуйста, где у меня ошибка?

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

Прошу помощи, как автоматически защитить файл excel от изменений при сохранении

Есть лист excel, который используется как форма для заполнения (шаблон). Файл доступен для всех, юзеры его заполняют и сохраняют в свои файлы. Требуется сделать так, чтобы при сохранении файл становился защищённым от изменения. Т.е. чтобы юзеры после закрытия, не могли редактировать этот файл, а снова заполняли форму. Подскажите как это сделать. Надеюсь на помощь сообщества.

170

Ответ на пост «Как снять защиту с листа или книги Excel»2

Работаю в головной организации, часто приходится собирать отчеты с подведомственных подразделений. Готовлю форму отчета в Excel, отправляю в подразделения, они присылают кто во что горазд. Там где были забиты формулы - вбиты числа с клавиатуры и как правило их подсчет неверный, там где стояли крестики (ячейки, которые заполнять не нужно) тоже заполнены числами, а то и буквами. То добавляют на свое усмотрение ячейки/строки/графы, то удаляют их. Каждый раз свод отчета превращается в тот еще квест. Вместо того чтобы открыть сводный файл, в котором заранее прописаны все связи на ячейки со всех подразделений и нажать кнопку «обновить данные», я начинаю заниматься хернёй (копипастить вручную). Подразделей, конечно, не миллион, но 44 тоже не мало, а таблицы бывают очень даже большие с большим количеством данных. Прошу их постоянно не проявлять инициативу, но все просьбы как горох об стену. И вот решил я как-то (лет 5 назад) этот вопрос устаканить. Запаролил всё, за исключением только тех ячеек, которые нужно заполнить. В сопроводительном сообщении опять ругательно попросил не менять ничего вплоть до цвета, запаха, вкуса ячеек и т.д. и т.п. Присылают они отчеты, а там всё то же самое. Все переделано на свой вкус. Да твою ж мать! Как вы это делаете? Позже я выяснил, что финансирование на лицензию Microsoft Office предусмотрено только в головной (моей) организации, а в подведомственных установлены LibreOffice или OpenOffice. Уж какие там у них версии установлены я не знаю, но практика показала, что этим двум продуктам на пароль ячеек, установленный в Microsoft Office:

Т.е. спец-ы просто открывали присланные мною файлы, в меню снимали защиту,

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

Так что, если забыли пароль, то просто попробуйте открыть файл OpenOffice и снять защиту.

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

Ответ на пост «Как снять защиту с листа или книги Excel»2

Судьба свела с довольно частыми просьбами пользователей о снятии защиты от редактирования с таблиц и иногда документов, что вдохновило на небольшой скрипт на питоне, автоматизирующий этот процесс для файлов MS Excel (.xlsx) и MS Word (.docx). Если вам нужно снять блокировку с файлов старого формата (.xls и .doc), просто пересохраните их в новом формате

Установка и использование

Для использования данного скрипта вам понадобится Python (скачать с официального сайта), он и будет запускать данный скрипт. Просто запускаем установщик, жмём Install Now и ждём завершения установки

Далее скачиваем сам скрипт. Если Python установился удачно, скрипт должен запускаться автоматически

Есть два варианта использования скрипта:

• Перетащить файл для разблокировки прямиком на скрипт:

• Запустить скрипт двойным кликом и во всплывающем окне выбрать нужный файл:

В обоих случаях вас должно встретить уведомление о результате операции:

Буду рад прочитать замечания и предложения в комментариях. Туда же и сообщения о непредвиденных ошибках

Скрипт мой, тег моё)

Показать полностью 3
7819

Как снять защиту с листа или книги Excel2

Поставили защиту и забыли пароль? Или по другой причине, вам нужно снять защиту с листа или книги Excel. Нет ничего проще.

Первый способ, используя Блокнот

1. Переименуйте файл, изменив расширение с .xlsx на .zip.

Для отображения расширений файлов в названиях выберите в окне навигации Файл ► Изменить параметры попок и поиска:

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

2. Откройте архив. Перейдите в папку xl ► worksheets:

3. Копируйте, в папку с исходным файлом, файл sheet1, или тот который у вас защищен, или файл workbook.xml из папки xl, если защита на книге.

4. Нажмите на файл правой кнопкой мыши (п.к.м) ► Открыть с помощью ► Блокнот. При помощи поиска (Ctrl+F) найдите строку:

* Для снятия защиты с листа: <sheetProtection и удалите целиком текст строки в файле <sheetProtection ..........> вместе со скобками;

* Для снятия защиты с книги: <workbookProtection и удалите целиком текст строки в файле <workbookProtection ..........> вместе со скобками.

5. Сохраните файл(-ы) и перенесите его обратно в архив.

6. Верните файлу исходное расширение .xlsx.

Защита снята.

Второй способ, через с Google Диск

1. Откройте в браузере Google Диск (нужно иметь аккаунт).

2. Перетащите в него защищённый файл.

3. Кликните п.к.м на него и выберите Открыть с помощью ► Google Таблицы:

4. Сохраните файл: Файл ► Сохранить как таблицу Google.

5. В открывшемся окне, выберите Файл ► Скачать ► Microsoft Excel.

Готово. Защита будет снята и с листов и с книги целиком.

Интересное по теме Excel:

ВПР (вертикальный просмотр)

Трюки с листами книги

Мгновенное заполнение

"Умные" таблицы в Excel

Показать полностью 4
70

Массивы в гугл таблицах (GS14)

Привет, дорогие подписчики и читатели Пикабу.

Продолжая тему мануала по гугл таблицам решил сегодня написать пост про массивы.

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

Что такое массив (array)?

Прежде всего это объект. Объект, который содержит в себе набор данных. Массивы в ГТ могут быть одномерными (строка или столбец) и многомерными - целиковая таблица (дефакто это одномерный массив состоящий из одномерных массивов).

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


Формула типа ={1;2} будет являться "вертикальным" массивом, "верхний" элемент которого равен 1, а "нижний" - 2.

Формула типа ={1\2} будет являться "горизонтальным" массивом", "левый" элемент - 1, "правый" - 2. В английской версии эта формула записывается как ={1,2}.

Формула типа = { { 1;2} , {3; 4}} будет выглядеть так:

В своем посте про switch case я показывал, как такого рода массивы могут быть использованы в функции ВПР (VLOOKUP). Ссылка: Swtich case в гугл таблицах или не самый очевидный ВПР (GS8)


И это далеко не единственный способ задать массив.

Второй вариант - arrayformula(). Эта функция не имеет русского эквивалента. arrayformula повторяет формулу, которая в ней записана для каждого элемента массива. На выходе, как правило, она также дает массив. Пример:

Что характерно - в случае arrayformula и еще ряда функция (таких как ВПР (второй аргумент), filter, счётеслимн и т.д.) они принимают аргументы в качестве массива, при этом не требуют от пользователя явной записи в виде массива (через фигурные скобки). Даже простая функция СУММ принимает на вход именно массив. Зная это - мы можем делать вложенные функции.

Приведу повторно пример из поста: Фильтры и ВПРы в ГТ (GS2)

У нас есть следующая таблица:

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

Тут нам поможет функция REGEXMATCH() - соответствие текста определенному регулярному выражению. О самих регулярках мы поговорим в будущем. Пока нам нужно только находить букву Е. Сама функция REGEXMATCH() возвращает 1 или 0, т.е. входит регулярка в текст или не входит. Наглядно это выглядит так:

Н.Б. Формула прописана только в ячейке H1. Благодаря формуле массива она сама протянулась вдоль диапазона G1:G10.

Теперь поместим формулу из ячейки H1 в самый обычный фильтр.

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

Н.Б. Фильтр понимает, что все значения и все сверки ему нужно пройти построчно. Поэтому внутри самого фильтра arrayformula можно не использовать.

Как мы используем arrayformula в работе?

Обычная история - есть пополняемый реестр, в котором нужно постоянно протягивать формулы.

Например, заполняемая форма. Положим у нас есть форма, которую заполняют сотрудники при тратах корп денег и нам нужно по логину почты сотрудника для каждой записи формы протянуть его ФИО. Делается это с помощью обычного ВПР. В excel нам помогла бы умная таблица, которая сама протягивает за нас формулы. Здесь такого нет. Давайте чуть усложним кейс и положим, что мы не знаем сколько сотрудников будут заполнять, а делать справочник заранее нам долго. Тогда нам понадобится список всех НОВЫХ логинов, которых мы еще не внесли в справочник. Приступим.

Первым делом сделаем имитацию формы. Вот такая получилась заготовка:

Первым делом прописываем фильтр, который будет показывать нам новые логины. Нам потребуется комбинация isna(vlookup()). Детально про нее я рассказывал в посте: Фильтры и ВПРы в ГТ (GS2)

Получилось следующим образом:

Внесем один из логинов в справочник и пропишем в столбец М формулу массива, которая будет автоматически для всех строк таблицы подтягивать ФИО.

Косметическим исправлением будет добавление в M2 функции iferror, которая будет убирать записи #N/A.

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


Какие могут быть ошибки связанные с фильтрами или массивами?

Первое -  синтаксис. ГТ автоматически закроет для вас обычные скобки, но за фигурными - нужно следить самостоятельно. Если получаете ошибку типа "Formula parse error" - с большой вероятность вы налажали с фигурными скобками.

Второе - если использовать arrayformula по беконечному диапазону (типа А:А), при это расположить ее в ячейке B2 - таблица будет пытаться постоянно достроить саму себя, т.к. формула массива всегда будет обработать на одну строку больше чем есть. Это бесконечный цикл. Нужно удалять формулу, чистить лишние строки и переписывать.

Есть ряд формул, которые очень тяжело ложатся в массивы, т.к. не подразумевают перебор, а хавают в себя все что дают. Например функция join().

Третье - записи внутри массивов нельзя править руками. ЕСли в таблице сверху я попробую вручную внести данные в ячейку М4, то будет следующее:

Там где есть риск ручных правок - лучше не использовать такие формулы или выстраивать архитектуру доки таким образом, чтобы ручных правок не было.


По традиции - ссылка на док: https://docs.google.com/spreadsheets/d/1mU6d4ZBzgXQyx3I7EQHi...

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