Ответы пользователя по тегу Google Sheets
  • Как менять значение в формуле, ссылаясь на ячейку?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Лучший вариант - сделать копию таблицы без личных данных с доступом на редактирование.
    А так придётся играть в битву экстрасенсов
    Попробуйте 'По_месяцам'!H:H заменить на
    =ДВССЫЛ("'По_месяцам'!C"&((СТОЛБЕЦ(D1)-2)+2*ПОИСКПОЗ(СТРОЧН($E$3);{"январь"; "февраль"; "март"; "апрель"; "май"; "июнь"; "июль"; "август"; "сентябрь"; "октябрь"; "ноябрь"; "декабрь"};0))&":C"&((СТОЛБЕЦ(D1)-2)+2*ПОИСКПОЗ(СТРОЧН($E$3);{"январь"; "февраль"; "март"; "апрель"; "май"; "июнь"; "июль"; "август"; "сентябрь"; "октябрь"; "ноябрь"; "декабрь"};0));0)
    Ответ написан
    1 комментарий
  • Как правильно ограничить ввод данных в Google Sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Редактируйте на разных таблицах и потом собирайте в одну (при необходимости) с помощью IMPORTRANGE. Это самый надёжный и одновременно простой вариант
    Ответ написан
    Комментировать
  • Как подставить дату в ячейке в формулу?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    DD/MM/YYYY
    попробуйте заменить на
    DD.MM.YYYY
    Ответ написан
    5 комментариев
  • Как сделать так, чтобы каждому пункту из выпадающего списка была присвоена цена?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    =ВПР(ячейкаСписка;{СтолбецДляПоискаИзСписка\СтолбецВыходныхДанных};2;0)
    Ответ написан
  • Как автоматически сортировать строки от новых к старым в Google Sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Функция SORT
    Ответ написан
    Комментировать
  • Как подгрузить курс валюты с сайта Tinkoff?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Его просто нет в исходном HTML, оно получается скриптом
    Смотрите в сторону этого запроса:
    fetch("https://api.tinkoff.ru/v1/currency_rates?from=USD&to=RUB", {
      "headers": {
        "accept": "*/*",
        "accept-language": "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7",
        "content-type": "application/x-www-form-urlencoded",
        "sec-ch-ua": "\" Not A;Brand\";v=\"99\", \"Chromium\";v=\"99\", \"Google Chrome\";v=\"99\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"Windows\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-site"
      },
      "referrer": "https://www.tinkoff.ru/",
      "referrerPolicy": "strict-origin-when-cross-origin",
      "body": null,
      "method": "GET",
      "mode": "cors",
      "credentials": "omit"
    });

    В ответе:

    {"trackingId":"WEE285K7UR","resultCode":"OK","payload":{"lastUpdate":{"milliseconds":1646839634102},"rates":[{"category":"C2CTransfers","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":111.25,"sell":138.75},{"category":"OPSRateGroup","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"DebitCardsTransfers","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferFrom10To100G13CO","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"CUTransfersPremium","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferBelow10G11","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"DepositPayments","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":111.25,"sell":138.75},{"category":"SMETransferAbove100","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferBelow10","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"CreditCardsOperations","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":111.25,"sell":138.75},{"category":"CUTransferAbove100","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"PrepaidCardsOperations","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":111.25,"sell":138.75},{"category":"SMETransferAbove100G13","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferFrom10To100G13","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferBelow10G12","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferFrom10To100G11","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferBelow10G13CO","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"CUTransferFrom10To100","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferAbove100G12","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferAbove100G13CO","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferAbove100G11","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"PrepaidCardsTransfers","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"DebitCardsOperations","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":111.25,"sell":138.75},{"category":"SavingAccountTransfers","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferFrom10To100G12","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"CUTransfersPro","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"CreditCardsTransfers","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferBelow10G13","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95},{"category":"SMETransferFrom10To100","fromCurrency":{"code":840,"name":"USD","strCode":"840"},"toCurrency":{"code":643,"name":"RUB","strCode":"643"},"buy":113.05,"sell":140.95}]}}

    Ответ написан
    4 комментария
  • Можно ли настроить Google таблицу, чтобы в неё автоматически добавлялись строки с определённым значением из другой таблицы (с 10 листов в 1 итоговый)?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    1) Импортировать всё в таблицу. Функция IMPORTRANGE и можно ещё использовать литерал массива
    =arrayformula({
    importrange(id1;range1);
    importrange(id2;range2);
    importrange(id3;range3);
    importrange(id4;range4)
    })

    2) Применить фильтр. Функция FILTER(проще) или QUERY(быстрее)
    =query(arrayformula({данные});"SELECT * WHERE Col1 IS NOT NULL")
    Ответ написан
  • Как спарсить 3 цены с карточки товара (с помощью XPath) в гугл таблицы если у цен код одинаковый?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Там только текущая цена, это не подойдёт. Советую обратить внимание на
    этот кусок кода в странице:
    ({'CONFIG':{'USE_CATALOG':true,'SHOW_QUANTITY':false,'SHOW_PRICE':true,'SHOW_DISCOUNT_PERCENT':false,'SHOW_OLD_PRICE':false,'DISPLAY_COMPARE':false,'SHOW_SKU_PROPS':true,'OFFER_GROUP':false,'MAIN_PICTURE_MODE':'IMG','SHOW_BASIS_PRICE':true,'ADD_TO_BASKET_ACTION':['ADD'],'SHOW_CLOSE_POPUP':true,'USE_STICKERS':true},'PRODUCT_TYPE':'3','VISUAL':{'ID':'bx_117848907_312'},'DEFAULT_PICTURE':{'PREVIEW_PICTURE':{'SRC':'/local/templates/vortex/components/bitrix/catalog/main/bitrix/catalog.element/.default/images/no_photo.png','WIDTH':'150','HEIGHT':'150'},'DETAIL_PICTURE':{'SRC':'/local/templates/vortex/components/bitrix/catalog/main/bitrix/catalog.element/.default/images/no_photo.png','WIDTH':'150','HEIGHT':'150'}},'PRODUCT':{'ID':'312','NAME':'Дезинфицирующее средство Forbicid'},'BASKET':{'QUANTITY':'quantity','BASKET_URL':'/basket/','SKU_PROPS':'YToxOntpOjA7czo0OiJCVUxLIjt9','ADD_URL_TEMPLATE':'/catalog/moyushchie-i-dezinfitsiruyushchie-sredstva-dlya-agropromyshlennogo-kompleksa/ptitsevodstvo/forbicid/?action=ADD2BASKET&id=#ID#','BUY_URL_TEMPLATE':'/catalog/moyushchie-i-dezinfitsiruyushchie-sredstva-dlya-agropromyshlennogo-kompleksa/ptitsevodstvo/forbicid/?action=BUY&id=#ID#'},'OFFERS':[{'ID':'1023','NAME':'Forbicid','TREE':{'PROP_20':'4'},'PRICE':{'VALUE':'497','DISCOUNT_VALUE':'497','PRINT_VALUE':'497 руб.','PRINT_DISCOUNT_VALUE':'497 руб.','DISCOUNT_DIFF':'0','PRINT_DISCOUNT_DIFF':'0 руб.','DISCOUNT_DIFF_PERCENT':'0','CURRENCY':'RUB'},'BASIS_PRICE':{'PRICE_ID':'1','ID':'454','CAN_ACCESS':'Y','CAN_BUY':'Y','MIN_PRICE':'Y','CURRENCY':'RUB','VALUE_VAT':'497','VALUE_NOVAT':'497','DISCOUNT_VALUE_VAT':'497','DISCOUNT_VALUE_NOVAT':'497','ROUND_VALUE_VAT':'497','ROUND_VALUE_NOVAT':'497','VALUE':'497','UNROUND_DISCOUNT_VALUE':'497','DISCOUNT_VALUE':'497','DISCOUNT_DIFF':'0','DISCOUNT_DIFF_PERCENT':'0','VATRATE_VALUE':'0','DISCOUNT_VATRATE_VALUE':'0','ROUND_VATRATE_VALUE':'0','PRINT_VALUE_NOVAT':'497 руб.','PRINT_VALUE_VAT':'497 руб.','PRINT_VATRATE_VALUE':'0 руб.','PRINT_DISCOUNT_VALUE_NOVAT':'497 руб.','PRINT_DISCOUNT_VALUE_VAT':'497 руб.','PRINT_DISCOUNT_VATRATE_VALUE':'0 руб.','PRINT_VALUE':'497 руб.','PRINT_DISCOUNT_VALUE':'497 руб.','PRINT_DISCOUNT_DIFF':'0 руб.'},'DISPLAY_PROPERTIES':'<dt>Артикул<\/dt><dd>12141<\/dd>','PREVIEW_PICTURE':{'ID':'2689','SRC':'/upload/iblock/0c9/0c9dd963188c3a1fed208048a9f2101c.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/0c9/330_430_1/0c9dd963188c3a1fed208048a9f2101c.jpg','SMALL':'/upload/resize_cache/iblock/0c9/90_90_2/0c9dd963188c3a1fed208048a9f2101c.jpg'},'DETAIL_PICTURE':{'ID':'2689','SRC':'/upload/iblock/0c9/0c9dd963188c3a1fed208048a9f2101c.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/0c9/330_430_1/0c9dd963188c3a1fed208048a9f2101c.jpg','SMALL':'/upload/resize_cache/iblock/0c9/90_90_2/0c9dd963188c3a1fed208048a9f2101c.jpg'},'CHECK_QUANTITY':false,'MAX_QUANTITY':'0','STEP_QUANTITY':'1','QUANTITY_FLOAT':false,'MEASURE':'шт','OFFER_GROUP':false,'CAN_BUY':true,'SLIDER':[{'ID':'2689','SRC':'/upload/iblock/0c9/0c9dd963188c3a1fed208048a9f2101c.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/0c9/330_430_1/0c9dd963188c3a1fed208048a9f2101c.jpg','SMALL':'/upload/resize_cache/iblock/0c9/90_90_2/0c9dd963188c3a1fed208048a9f2101c.jpg'}],'SLIDER_COUNT':'1'},{'ID':'309','NAME':'Forbicid','TREE':{'PROP_20':'6'},'PRICE':{'VALUE':'2284','DISCOUNT_VALUE':'2284','PRINT_VALUE':'2 284 руб.','PRINT_DISCOUNT_VALUE':'2 284 руб.','DISCOUNT_DIFF':'0','PRINT_DISCOUNT_DIFF':'0 руб.','DISCOUNT_DIFF_PERCENT':'0','CURRENCY':'RUB'},'BASIS_PRICE':{'PRICE_ID':'1','ID':'41','CAN_ACCESS':'Y','CAN_BUY':'Y','MIN_PRICE':'Y','CURRENCY':'RUB','VALUE_VAT':'2284','VALUE_NOVAT':'2284','DISCOUNT_VALUE_VAT':'2284','DISCOUNT_VALUE_NOVAT':'2284','ROUND_VALUE_VAT':'2284','ROUND_VALUE_NOVAT':'2284','VALUE':'2284','UNROUND_DISCOUNT_VALUE':'2284','DISCOUNT_VALUE':'2284','DISCOUNT_DIFF':'0','DISCOUNT_DIFF_PERCENT':'0','VATRATE_VALUE':'0','DISCOUNT_VATRATE_VALUE':'0','ROUND_VATRATE_VALUE':'0','PRINT_VALUE_NOVAT':'2 284 руб.','PRINT_VALUE_VAT':'2 284 руб.','PRINT_VATRATE_VALUE':'0 руб.','PRINT_DISCOUNT_VALUE_NOVAT':'2 284 руб.','PRINT_DISCOUNT_VALUE_VAT':'2 284 руб.','PRINT_DISCOUNT_VATRATE_VALUE':'0 руб.','PRINT_VALUE':'2 284 руб.','PRINT_DISCOUNT_VALUE':'2 284 руб.','PRINT_DISCOUNT_DIFF':'0 руб.'},'DISPLAY_PROPERTIES':'<dt>Артикул<\/dt><dd>12145<\/dd>','PREVIEW_PICTURE':{'ID':'1039','SRC':'/upload/iblock/3d3/3d3ec490013beb7a389b856a5d85be34.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/3d3/330_430_1/3d3ec490013beb7a389b856a5d85be34.jpg','SMALL':'/upload/resize_cache/iblock/3d3/90_90_2/3d3ec490013beb7a389b856a5d85be34.jpg'},'DETAIL_PICTURE':{'ID':'1039','SRC':'/upload/iblock/3d3/3d3ec490013beb7a389b856a5d85be34.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/3d3/330_430_1/3d3ec490013beb7a389b856a5d85be34.jpg','SMALL':'/upload/resize_cache/iblock/3d3/90_90_2/3d3ec490013beb7a389b856a5d85be34.jpg'},'CHECK_QUANTITY':false,'MAX_QUANTITY':'0','STEP_QUANTITY':'1','QUANTITY_FLOAT':false,'MEASURE':'шт','OFFER_GROUP':false,'CAN_BUY':true,'SLIDER':[{'ID':'1039','SRC':'/upload/iblock/3d3/3d3ec490013beb7a389b856a5d85be34.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/3d3/330_430_1/3d3ec490013beb7a389b856a5d85be34.jpg','SMALL':'/upload/resize_cache/iblock/3d3/90_90_2/3d3ec490013beb7a389b856a5d85be34.jpg'}],'SLIDER_COUNT':'1'},{'ID':'310','NAME':'Forbicid','TREE':{'PROP_20':'7'},'PRICE':{'VALUE':'8954','DISCOUNT_VALUE':'8954','PRINT_VALUE':'8 954 руб.','PRINT_DISCOUNT_VALUE':'8 954 руб.','DISCOUNT_DIFF':'0','PRINT_DISCOUNT_DIFF':'0 руб.','DISCOUNT_DIFF_PERCENT':'0','CURRENCY':'RUB'},'BASIS_PRICE':{'PRICE_ID':'1','ID':'42','CAN_ACCESS':'Y','CAN_BUY':'Y','MIN_PRICE':'Y','CURRENCY':'RUB','VALUE_VAT':'8954','VALUE_NOVAT':'8954','DISCOUNT_VALUE_VAT':'8954','DISCOUNT_VALUE_NOVAT':'8954','ROUND_VALUE_VAT':'8954','ROUND_VALUE_NOVAT':'8954','VALUE':'8954','UNROUND_DISCOUNT_VALUE':'8954','DISCOUNT_VALUE':'8954','DISCOUNT_DIFF':'0','DISCOUNT_DIFF_PERCENT':'0','VATRATE_VALUE':'0','DISCOUNT_VATRATE_VALUE':'0','ROUND_VATRATE_VALUE':'0','PRINT_VALUE_NOVAT':'8 954 руб.','PRINT_VALUE_VAT':'8 954 руб.','PRINT_VATRATE_VALUE':'0 руб.','PRINT_DISCOUNT_VALUE_NOVAT':'8 954 руб.','PRINT_DISCOUNT_VALUE_VAT':'8 954 руб.','PRINT_DISCOUNT_VATRATE_VALUE':'0 руб.','PRINT_VALUE':'8 954 руб.','PRINT_DISCOUNT_VALUE':'8 954 руб.','PRINT_DISCOUNT_DIFF':'0 руб.'},'DISPLAY_PROPERTIES':'<dt>Артикул<\/dt><dd>121420<\/dd>','PREVIEW_PICTURE':{'ID':'1040','SRC':'/upload/iblock/b0d/b0d7392d63763601e9b68a348a7ec36f.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/b0d/330_430_1/b0d7392d63763601e9b68a348a7ec36f.jpg','SMALL':'/upload/resize_cache/iblock/b0d/90_90_2/b0d7392d63763601e9b68a348a7ec36f.jpg'},'DETAIL_PICTURE':{'ID':'1040','SRC':'/upload/iblock/b0d/b0d7392d63763601e9b68a348a7ec36f.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/b0d/330_430_1/b0d7392d63763601e9b68a348a7ec36f.jpg','SMALL':'/upload/resize_cache/iblock/b0d/90_90_2/b0d7392d63763601e9b68a348a7ec36f.jpg'},'CHECK_QUANTITY':false,'MAX_QUANTITY':'0','STEP_QUANTITY':'1','QUANTITY_FLOAT':false,'MEASURE':'шт','OFFER_GROUP':false,'CAN_BUY':true,'SLIDER':[{'ID':'1040','SRC':'/upload/iblock/b0d/b0d7392d63763601e9b68a348a7ec36f.jpg','WIDTH':'450','HEIGHT':'369','PREVIEW':'/upload/resize_cache/iblock/b0d/330_430_1/b0d7392d63763601e9b68a348a7ec36f.jpg','SMALL':'/upload/resize_cache/iblock/b0d/90_90_2/b0d7392d63763601e9b68a348a7ec36f.jpg'}],'SLIDER_COUNT':'1'}],'OFFER_SELECTED':'0','TREE_PROPS':[{'ID':'20','SHOW_MODE':'TEXT','VALUES_COUNT':'4'}]})

    Тут как раз есть нужные данные. Вытащите это c помощью IMPORTXML, и распарсите с помощью REGEXEXTRACT
    Ответ написан
    Комментировать
  • Как в гугл таблицах сделать так, чтобы ячейка прибавляла себя каждый месяц в назначенной дате?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Сделать триггер, который будет брать значение и прибавлять к нему 1000
    function trigger(){
      const delta = +1000;
      let range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1").getRange("A1");
      let oldValue = range.getValue() || 0;
      range.setValue(delta+oldValue);
    };
    Ответ написан
  • Как разъединить слипшиеся предложения с помощью регулярных выражений? словоСлово -> слово. Слово?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    =REGEXREPLACE(A1;"([а-яё])([А-ЯЁ])";"$1. $2")
    Демонстрационная таблица
    Ответ написан
    Комментировать
  • Как построить данный XPath запрос для Google Sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Сделайте сначала импорт всей страницы
    "//*"
    и посмотрите, если ли там вообще эти данные. Скорее всего оно грузится скриптом, и в изначальном HTML его просто нет.
    Если данные есть, кидайте сюда, под спойлер.
    Ответ написан
  • Как автоматически архивировать данные с одного листа таблицы на другой?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    1) Сделать триггер на onEdit()
    2) Внутри прописать создание триггера по времени - через 3 дня
    3) В качестве функции - бэкап - копирование нужной строки в лист-архив.

    или

    1) Сделать триггер на onEdit()
    2) Внутри прописать сохранение даты изменения и значения в userPropertyes
    3) Сделать триггер по времени (раз в сутки или чаще) - чтобы сканировал userPropertyes и переносил нужные данные в лист-архив.
    Ответ написан
    Комментировать
  • Как в SUMIFS в критерий выбрать все варианты + вариант отсутствия условия?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Так а в чём вопрос? Всё верно написано.
    Я бы только $$ везде поставил, чтобы не поехала формула при распространении
    Ответ написан
  • Как отправить новую строчку из одной таблицы в другую автоматически и с условием в google sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Если только на чтение, то подойдёт IMPORTRANGE() + FILTER()
    Если ещё и на запись, то делайте скрипт на событие (на редактирование или на отправку формы)
    Ответ написан
    Комментировать
  • Как в выпадающий список добавить вещественные числа?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    1) Если не нужен список значений, а только валидация, то можете использовать свою формулу:
    =ИЛИ(A1=1,1;A1=2,1)
    тут A1="текущая ячейка"
    2) Как уже советовали выше - можно перейти на десятичный разделитель - точку.
    3) Или не переходить на разделитель точку, но данные использовать так:
    =+ПОДСТАВИТЬ(A1;".";",")
    тут A1 - ссылка на ячейку, в которой происходит проверка
    Ответ написан
    Комментировать
  • Как сделать правильно выборку IFS?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Может помочь это - реализация кусочно-константной функции
    /**
     * Рассчитывает кусочно-константную функцию
     *
     * @author Boew Grigory (ff.nspu@gmail.com)
     * @param {Array} data Входные данные (аргумент)
     * @param {Array} criteria Массив критериев [от, до, значение]
     * @param {any} [defaultValue=""] Значение по умолчанию - то что подставляется, если аргумент не подходит ни под один из критериев
    */
    function piecewiseConstant(data, criteria, defaultValue="-"){
      criteria = criteria
                  .map(cr=>({ // convert to objects
                    fromValue: cr[0],
                    toValue: cr[1],
                    value: cr[2],
                  }))
                  .filter(cr=>cr.fromValue!=="" && cr.toValue!==""); // filter empty criteria
      return data.map(row=>row.map(el=>{
        let foundCriteria = criteria.find(cr=>(el>=cr.fromValue)&&(el<cr.toValue));
        if (foundCriteria!==undefined){
          return foundCriteria.value;
        }else{
          return defaultValue;
        };
      }));
    };
    Ответ написан
    Комментировать
  • Ошибка в функции IMPORTRANGE. Почему пишет ошибка доступа?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Вот в том окошечке, на втором скрине, нажмите кнопку
    Или откройте для чтения всем
    Ответ написан
    Комментировать
  • Как приравнять несколько слов?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Задача непростая, а если в общем смысле - ещё и нерешаемая, т.к. только вам известно что такое правильно.
    А по теме можно почитать про расстояние Левенштейна
    Ответ написан
    Комментировать
  • Как в гугл-таблицах весь столбец констант увеличить на 10% не меняя структуру и форматирование таблицы?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Выделить столбец и выполнить скрипт:
    function mult(multipler=1.1){
      let range = SpreadsheetApp.getActiveRange();
      let data = range.getValues()
                      .map(row=>row.map(value=>((typeof value) === (typeof 1))?value*multipler:value));
      range.setValues(data);
    };

    Можно добавить в меню:
    function onOpen(e){
      SpreadsheetApp.getUi()
      .createMenu("menu")
      .addItem("+ 10%", "mult")
      .addToUi();
    };
    Ответ написан
    1 комментарий
  • Смещение относительно ячейки, в которой записан скрипт?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Вам нужен Range.getCell()
    let rightRange = SpreadsheetApp.getActiveRange().getCell(1, 2); // Соседний справа столбец
    let bottomRange = SpreadsheetApp.getActiveRange().getCell(2, 1); // Строка ниже


    Если это нужно в формуле, используйте ДВССЫЛ (INDIRECT). Примеры ниже:

    В той же строке, в столбце справа:
    =INDIRECT("RC[1]";0)
    В том же столбце, в строке выше:
    =INDIRECT("R[-1]C";0)
    В столбце №4, в той же строке:
    =INDIRECT("RC4";0)
    В столбце №4, в строке №3:
    =INDIRECT("R3C4";0)
    Ответ написан
    Комментировать