Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Обьединение таблиц по типу JOIN, Как объединить таблицы по типу JOIN формулами?
 
GS бы сработал быстрее, чем множество формул массивов. Самое долгое в работе скрипта будет запрос данных из таблицы и возврат результата, данные внутри перелопатит быстро. Сомневаюсь, что там сотни тысяч/миллион строк в таблицах, чтобы беспокоиться за скорость.
Авто перенос защищённого диапазона Google таблици, Перенос защищённого диапазона при создании копии листа
 
Привет, попробуйте такой вариант:

  1. Запишите пустой макрос: Расширения > Макросы > Записать макрос. Сразу нажмите "Сохранить" и дайте ему имя.
  2. После сохранения в левом нижнем углу окна браузера будет уведомление "Макрос сохранен.", нажмите на "Изменить скрипт" в уведомлении.
  3. Откроется Apps Script текущей таблицы. Найдите Макросы.gs.
  4. Зайдите в него и найдите функцию, которая имеет имя, которое вы присвоили макросу.
  5. Замените всё внутри функции на следующий код:
Код
  const calledFromSS = SpreadsheetApp.getActive();
  const newSS = calledFromSS.duplicateActiveSheet();
  const range = newSS.getRange('E3:F8');
  const protection = range.protect();//.setDescription('Test');
  // Удаление всех из редактирования диапазона, кроме себя.
  const owner = Session.getEffectiveUser();
  protection.addEditor(owner);
  protection.removeEditors(protection.getEditors());
  if (protection.canDomainEdit()) {
    protection.setDomainEdit(false);
  }
Пример, как это выглядит у меня, во вложении.

После проделанных действий вам будет доступен макрос который копирует лист, из которого он вызван и защищает указанный диапазон. Если нужно поменять защищаемый диапазон, то введите его адрес в этой строке:
Код
const range = newSS.getRange('E3:F8');
Получить слово из строки, регуоярные выражения
 
Ну, хоть так, тут лучше бы своими руками потыкать и проверить, никогда тот софт не использовал)
Получить слово из строки, регуоярные выражения
 
Глянул примеры в доке Гугла, попробуйте так:
Код
(?<=\\/\\/)[^\\.]+
Изменено: Призрак - 24.10.2023 16:26:05
Получить слово из строки, регуоярные выражения
 
Надо смотреть какой там синтаксис для регулярных выражений. Например, в некоторых языках слеш, который не является управляющим символом, не нужно экранировать, "/", в некоторых нужно "\/", в некоторых нужно писать "\\/". И т.д.
Получить слово из строки, регуоярные выражения
 
От точки легко, этот конструкт должен работать в Excel:
Код
//[^\.]+(?=\.)
А вот от слешей, либо функции Excel использовать, например ПСТР, либо ещё раз регуляркой пройтись:
Код
[^/]+
Получить слово из строки, регуоярные выражения
 
Код
//[^\.]+\.
Получить слово из строки, регуоярные выражения
 
Странно, у меня срабатывает. А так:
Код
\/\/[^\.]+\.
Получить слово из строки, регуоярные выражения
 
В Excel не работает конструкт (?<=...)

Тогда так, но слеши тоже захватит.
Код
\/\/[^\.]+(?=\.)
Получить слово из строки, регуоярные выражения
 
Код
(?<=\/\/)[^\.]+(?=\.)
Получить слово из строки, регуоярные выражения
 
1.
Код
(?<=\.)[^\.]+(?=\.io)
2.
Код
(?<=\.io\/)[^\/]+
33 формулы в одну
 
Привет, в инете нашёл подходящий код.
Удаление справа и слева относительно определенного символа
 
Marat Ta, Как же жизненно, в своё время сделал веб-страничку, чтобы проверять подозрительный текст ибо постоянно падал конвертер csv -> xml от разработчиков информационной системы, там не была предусмотрена проверка на ру символы в полях латиницы. Но при ручном составлении списков это частая проблема.
Изменено: Призрак - 08.06.2023 11:40:06
Регулярные выражения через макрос, Необходимо вытащить в Слово в обратном порядке
 
RAN, это "посмотреть назад", и да, оно как раз и не работает в VBA =(
Регулярные выражения через макрос, Необходимо вытащить в Слово в обратном порядке
 
В целом, могу предположить, что будет выглядеть как-то так:
Код
(?<=,\s)(?!\s?г|\s?р-н|\s?кв|\s?д)[^,]+(?=,)
Но нельзя гарантировать, что только такие префиксы у ненужных блоков будут, и что формат будет всегда один, без опечаток, и всегда ли пробелы будут на тех же местах. А так же, что это будет в VBA работать. Насколько знаю, в VBA старая версия RegExp и что-то может там не работать.

Как уже сказал, нужно видеть все данные)
Регулярные выражения через макрос, Необходимо вытащить в Слово в обратном порядке
 
Привет! Уже сталкивался с подобным на работе и сразу скажу: если собирать паттерн с нуля, нужно много выверок, чтобы охватить все возможные варианты. Мы делали это для инф. системы и я очень много раз менял паттерн, так как заходили различные префиксы у нужного блока, который тоже динамически меня местоположение в строке, например: р-н, рй, рйн, район и т.д.. Так что без обработки всего массива это просто невыполнимо, постоянно будут данные теряться и нужны будут корректировки.
Удаление справа и слева относительно определенного символа
 
Эх, когда ни будь я прочитаю доку по ФИЛЬТР.XML, когда ни будь...  :) Всё как-то лень(
Удаление справа и слева относительно определенного символа
 
Код
=ЕСЛИОШИБКА(ПОДСТАВИТЬ($A1;RegExp($A1;"(\d+[xXхХ]){1,2}\d+");"");$A1)
Расчет даты и сопоставление с текущей датой
 
Предупреждение: Функция РАЗНДАТ предлагается в  Excel для поддержки старых книг Lotus 1-2-3. В некоторых ситуациях она  может выдавать неправильные результаты. Дополнительные сведения см. в  разделе "Известные проблемы" в этой статье.
Расчет даты и сопоставление с текущей датой
 
Привет, готово!
извлечение HTML таблиц
 
Сергей020487, значит в GET-параметры таки попадают данные при заполнении форм. Попробуйте из макроса запрос сделать, скопировав ссылку с GET-параметрами.
В адрес добавьте ?PAGE и далее инн и дата всё что там есть на момент ручного открытия и гляньте увидит ли макрос таблицу. Возможно, она уже доступна на странице при переходе с GET-параметрами и остаётся её только взять.
Удаление справа и слева относительно определенного символа
 
Вероятно ссылалось на пустую ячейку
Удаление справа и слева относительно определенного символа
 
Замените формулу на:
Код
=ЕСЛИОШИБКА(ПОДСТАВИТЬ($A2;RegExp($A2;"\d+[хХxX]\d+");"");$A2)
Изменено: Призрак - 01.06.2023 12:28:46
Удаление справа и слева относительно определенного символа
 
Привет! Если макросы не запрещены то так:
извлечение HTML таблиц
 
Я не говорю, что сработает, я не вижу как там устроено, просто иногда так может работать. Заполненные поля передаются в GET-параметры и создаётся запрос на эту же страницу.
Как пример, этот же сайт, но тут через php, а бывает иначе:
Код
https://www.planetaexcel.ru/forum/index.php?PAGE_NAME=read&FID=1&TID=157981&TITLE_SEO=157981-izvlechenie-html-tablits
Мы обращаемся всегда к одному и тому же файлу, но передаём ему параметры:
Код
?PAGE_NAME=read&FID=1&TID=157981&TITLE_SEO=157981-izvlechenie-html-tablits
Иногда делают так, что заполнение какой-то формы то же самое делает. Если это ваш случай, то есть шанс вызвать таблицу. Сказать не могу, так как не вижу страницу))

Просто высказал предположение, не более.
извлечение HTML таблиц
 
Вероятно таблица полностью создаётся JS-скриптом, в таком случае, при простом обращении без взаимодействия с интерфейсом вы её не найдёте. Единственное, что пришло в голову: если введённые данные страница заталкивает в GET-параметры. Тогда можно эмулировать обращение с указанными параметрами и таблица может появиться.
Изменено: Призрак - 01.06.2023 11:38:57
Сумма $ в текстовой ячейке, как можно отразить сумму в соседней ячейке? Помогите!, в текстовой ячейке произвольное количество строк(от 1 до 10), в каждой строке есть суммы покупок
 
Цитата
написал:
p.s. Не тянут на элементарные?) Блин, мне то что делать тогда? - об стенку...?)))
Всё верно, я не обязан знать языки, не входит в мои должностные обязанности, поэтому не тянет) Почему же об стену, если человеку действительно нужны какие либо знания он разберётся в этом, это нормально чего то не знать.
Сумма $ в текстовой ячейке, как можно отразить сумму в соседней ячейке? Помогите!, в текстовой ячейке произвольное количество строк(от 1 до 10), в каждой строке есть суммы покупок
 
Да, если также для Google-таблиц, то вот функция:
Код
function SummOrCountIfMatch(cell, mode, addNum = 0) {
 addNum *= 1;
 const haveDoll = cell.search(/\$/g);
 const priceArr = haveDoll < 0 ? cell.match(/(\-)?\d+(\.\d{1,2})?/g) : cell.match(/(?<=\$)(\-)?\d+(\.\d{1,2})?/g);
 const countElems = haveDoll < 0 ? cell.split(/\d+/g).length - 1 : cell.split('$').length - 1;
 if (mode) {
    return countElems;
  } else {
    return priceArr.reduce((acc, number) => Number(acc) + (Number(number) + addNum))*1 + addNum;
  }
};

Вызов в ячейке:
Код
=SummOrCountIfMatch(cell;mode;addNum)
Где:
cell - ссылка на ячейку;
mode - выбор действия, 0 - для суммирования, 1 - для подсчёта человек;
addNum - число, которое нужно прибавить к каждому элементу при суммировании, если нет необходимости прибавлять значение и нужно только просуммировать, то пропустите дополнительные аргументы:
Код
=SummOrCountIfMatch(cell)
В вашем примере 2 разных строки, в одной есть символ $, в другой нет, сделал функцию для обоих вариантов. Обращу ваше внимание, что если в строке нет символа $, то функция будет искать все значения, которые являются числами или похожи на "денежную" запись. Если символ встретится хоть раз, то она будет искать только значения, имеющие перед собой символ $.
Изменено: Призрак - 30.05.2023 00:41:31
Сумма $ в текстовой ячейке, как можно отразить сумму в соседней ячейке? Помогите!, в текстовой ячейке произвольное количество строк(от 1 до 10), в каждой строке есть суммы покупок
 
Не знаю, я не разработчик, только если по нужде иногда приходится что-то делать, так что мои знания даже на элементарные не тянут  :)
Сумма $ в текстовой ячейке, как можно отразить сумму в соседней ячейке? Помогите!, в текстовой ячейке произвольное количество строк(от 1 до 10), в каждой строке есть суммы покупок
 
Привет! В случае Google-таблиц, думаю, лучше использовать Apps Script во вкладке "Расширения" на в главном окне таблицы.
Добавляете туда функцию:
Код
function CountAllIfMatchDollar(cell) {
 const priceArr = cell.match(/(?<=\$)(\-)?\d+(\.\d{1,2})?/g);
 return priceArr.reduce((acc, number) => Number(acc) + Number(number))*1;
}
И она станет доступна непосредственно в таблице:
Код
=CountAllIfMatchDollar(A1)
Будет чутка проще модифицировать результат в ячейке. Минус один, скрипты медленнее, нежели нативные формулы.

Для +35, или любого другого числа, к каждому значению:
Код
function CountAllIfMatchDollar(cell) {
 const addNum = Number(35);
 const priceArr = cell.match(/(?<=\$)(\-)?\d+(\.\d{1,2})?/g);
 return priceArr.reduce((acc, number) => Number(acc) + (Number(number) + addNum))*1 + addNum;
}
Изменено: Призрак - 29.05.2023 16:57:57
Страницы: 1 2 След.
Наверх