• Как применить макрос к нескольким файлам в один клик?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Что-то вроде:
    Sub ProcessFilesInDirectory()
        Dim folderPath As String
        Dim fileName As String
        Dim wb As Workbook
        
        ' Путь к директории
        folderPath = "C:\temp\"
        
        ' Получаем первый файл с расширением .xlsx в директории
        fileName = Dir(folderPath & "*.xlsx")
        
        ' Перебираем все файлы в директории
        Do While fileName <> ""
            ' Открываем файл
            Set wb = Workbooks.Open(folderPath & fileName)
            
            ' Вызываем функцию macros3
            Call macros3()
            
            ' Сохраняем и закрываем файл
            wb.Close SaveChanges:=True
            
            ' Получаем следующий файл
            fileName = Dir
        Loop
    End Sub
    Ответ написан
    Комментировать
  • Как автоматизировать процесс установки программ на 1000 компьютерв?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Если по-старинке, то ставится на одну машину весь софт, всё настраивается и делается образ акронисом.
    Установить им же, и по сети.
    Ключи должны быть в bios.
    Настройки машины и программ можно накатить обычным скриптом cmd

    PS: я бы автоматизировал это до тех пор, пока это не стало бы так же просто, как позвонить в дверь. Пара лишних действий, даже несколько лишних минут на машину - это плюс месяц работы. Лучше это время потратить на автоматизацию.
    Ответ написан
    Комментировать
  • Как в excel удалить дубликаты с объединением значений соседнего столбца?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Если в Google Sheet:
    =arrayformula(let(
      author;   "@ProgrammerForever";
      keys;       $A$2:$A;
      values;     $B$2:$B;
      
      uni_keys;      sort(unique(FILTER(keys;keys<>"")));
      joined_values; byrow(uni_keys; lambda(key; ЕСЛИОШИБКА(JOIN("; "; filter(values;keys=key)))));
      
      hstack(uni_keys;joined_values)
    ))
    Ответ написан
  • Сколько конкретно битов в одной секции озу?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Конечно они мелкие, а есть техпроцессы ещё мельче

    Не самая ёмкая флешка (на 128Гб), собранная из дискретных транзисторов размерами по 1мм(зернышко проса), будет занимать объём двухэтажного здания с размером комнаты более 10м*10м

    PS: периодически, когда учителем работаю, даю такую задачу ученикам, и с каждым разом даёт более мощный вау-эффект
    Ответ написан
    Комментировать
  • Почему при переносе элементов по DOM происходит их дублирование?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Из документации:
    Description: Insert every element in the set of matched elements after the target.

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

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    4 часа в Excel/GSheets это:
    =ваша_дата + 4/24
    Если время работы в пределах 1 рабочего дня, то проверяйте какой час выходит при суммировании. Если больше порога - то ставите верхний порог, а следующая дата - начиная с нижнего порога плюс остаток.
    Что-то вроде:
    =ЕСЛИ(ОСТАТ((A1+B1/24);1)>=18/24; ЦЕЛОЕ(A1) + 18/24; A1+B1/24)

    А если по сути - тут можно порыть в сторону систем счисления и простых линейных уравнений.
    Или сделать ещё проще - с помощью юзерфункции.
    Ответ написан
  • Почему не проходит отладку google apps script?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    let ss = SpreadsheetApp.getActiveSpreadsheet();
    let sheet = ss.getSheetByName("Маршрут");
    let data = sheet.getDataRange().getValues();
    Ответ написан
    Комментировать
  • Почему не удается получить данные методом video.get у некоторых ссылок?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    1) Попробуйте открывать не в браузере, а в постмане; там более чистый запрос - нет кук, можно контролировать заголовки, юзер-агент, реферер и т.п.
    2) Если приходит ответ вида:
    {"response":{"count":0,"items":[]}}
    то, скорее всего, и с токеном и со всем остальным всё ок - что-то не то с данными запроса или с самим ресурсом, который запрашивается. Это 200 ответ, а не ошибка.
    3) Как вариант для проверки - сервис может не отдавать данные по некоторым ip адресам. Предсказать какой будет ip у скрипта невозможно.
    4) Попробуйте сохранить и переиспользовать куки, внедрить в headers нужные заголовки, которые браузер передаёт и т.п.
    5) Перезалейте второе видео, возможно всё-таки есть что-то, что запрещает получать данные по API.
    Ответ написан
    Комментировать
  • Как вывести Сумму из наибольшего параметра веса или объема?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Включаю режим Ванги.
    Отсортируйте массы {0; 50; 100; 200} и объёмы {0; 0,2; 0,6; 1} по возрастанию, берите ВПР с последним параметром 1, он автоматически возьмёт ближайшее большее или равное.
    Ответ написан
  • Гугл таблицы. Как зафиксировать гиперлинк на конкетруную строку?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Учитель, автоэлектрик, программист, музыкант
    Добавьте параметр range к ссылке. Там есть номер строки:
    ...edit?gid=0#gid=0&range=A7
    Ответ написан
  • Как выразить переменные из формулы?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    wolframalpha
    A = P * (1 + r/n)^(n*t) solve t
    Ответ написан
    Комментировать
  • Почему перестали работать usb порты?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Проверить:
    1) Драйверы
    2) Отключать устройства и подключать по одному
    3) USB-порт снаружи
    далее - в сервисе, после разборки
    4) Плaта USB (если есть) - пайка и целостность USB-порт
    5) Микросхемы свитчей, и их обвязка
    6) Хаб, внешний или в процессоре

    Пунктов может быть больше, зависит от схемотехники ноута. Но это забота ремонтников скорее всего,. если первые пункты не помогли
    Ответ написан
    Комментировать
  • Как сделать секундомер с пуском и паузой?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Для каждого ввести статусы - выключено, запущено; т.е. нужна простая машина состояний.
    Кнопки меняют статусы и пишут данные. Вместо кнопок можно onEdit+галка.
    Триггер по времени (раз в минуту) обновляет данные.

    Если нужно готовое решение - можно посмотреть в сторону фриланса
    Ответ написан
    Комментировать
  • Почему перестают работать usb-serial устройства на Raspberry Pi 4?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Фильтруйте питание. Там защит много не бывает, особенно в автоприменениях. По питанию катушка выдаст хорошие такие иголки, которые надо бы фильтровать. А по воздуху - кучу помех в широком спектре.
    Поставьте электролит + керамика на питание.
    Поставьте ферритовые колечки на провода питания.
    Укорачивайте сигнальные провода по возможности.
    Экранируйте платы, все экраны - на землю в одной точке.
    В конце концов, сделайте аккумуляторное питание не от машины, а от отдельного акб.
    Ответ написан
    Комментировать
  • Как автоматизировать регулярный клик на кнопку?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    Самое простое - выполнить что-то подобное в консоли, или если это надо часто - сделать букмарклет с таким кодом.
    const setIntervalHandler = setInterval(
      ()=>{
        const elem = document.getElementById("myButton");
        elem.?click ? elem.click(): console.error("button not found");
      },
      2*60*1000
    );
    Ответ написан
    Комментировать
  • Как с помощью макроса найти слова и выделить их разными цветама в зависиомости от слова в гугл таблицах?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Храните слова и цвета вместе, и используйте вместе.
    let dictionary = {
      stop_words: [
       { word: "Not_Malicious", color_code: "#ea4300" },
       { word: "NOT_Virus", color_code: "#ea0035" },
       { word: "NOT_Fake_Message", color_code: "#004335" },
       { word: "NOT_Misleading", color_code: "#ea4005" },
       { word: "NOT_Sound", color_code: "#e00335" },
       { word: "NOT_JSalert", color_code: "#0a0305" },
      ],
    };
    
    // Тут, для производительности, можно предварительно сделать все TextStyle вместо color_code
    
    function _1() {
      let sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      // range диапазон поиска
      let range = sheet.getRange("E:E").getValues();
    
      range.forEach((item, row) => {
        for (let column = 0; column < item.length; column++) {
          if (typeof item[column] === "string" && item[column] != "") {
            let richText = SpreadsheetApp.newRichTextValue().setText(item[column]);
            // item[column] текст ячейки
            dictionary.stop_words.forEach(({word, color_code}) => {
              let arr = searchIndex(
                word.toLocaleLowerCase(),
                item[column].toLocaleLowerCase()
              );
              let color = SpreadsheetApp.newTextStyle()
              .setForegroundColor(color_code)
              .build();
              arr.forEach((ind) => {
                richText.setTextStyle(ind.startIndex, ind.endIndex, color);
              });
              sheet
                .getRange(row + 1, column + 1)
                .setRichTextValue(richText.build());
            });
          }
        }
      });
    }
    // ... остальной код
    Ответ написан
    Комментировать
  • Построение диаграммы Ганта через массив с числами?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) Преобразовать числа в даты и использовать уже готовое
    2) Сделать самому, с преферансом и поэтессами
    Ответ написан
    Комментировать
  • Возможно ли сделать в exel такой функционал?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Учитель, автоэлектрик, программист, музыкант
    Всё возможно, только сейчас это не вопрос, а задание.

    Для закраски подойдёт условное форматирование: номер недели + продолжительность <= номер столбца
    Для переноса номеров ИНДЕКС / ВПР / ГРП / ПОИСКОЗ
    Ответ написан
    1 комментарий
  • Почему дисплей ST7789 не корректно работает?

    ProgrammerForever
    @ProgrammerForever
    Учитель, автоэлектрик, программист, музыкант
    1) Проверьте все соединения. Провода по возможности короче
    2) Проверьте код. Для начала просто повторите то что есть
    3) Если есть официальные примеры, проверьте на них
    4) Проверьте версию библиотеки.
    5) Попробуйте другую версию библиотеки.
    6) Попробуйте другую библиотеку.
    7) Есть конвертер 5>>3.3?
    Wide Supply Voltage Range
      I/O Voltage (VDDI to DGND): 1.65V ~ 3.3V (VDDI≦VDD)
      Analog Voltage (VDD to AGND): 2.4V ~ 3.3V

    8) Возможно есть несколько ревизий экрана, смотрите даташиты
    Ответ написан
  • Почему не работает тригер гугл таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    Учитель, автоэлектрик, программист, музыкант
    Тут в самом вопросе ответ:
    через бота >> не работает
    через apps scripts >> не работает
    вручную >> работает

    Если надо запустить функцию извне, используйте doGet/doPost
    Ответ написан
    Комментировать