• Как построить сложную диаграмму с помощью Excel как на рисунке?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    John Smith, Тут 3 или 4 графика у меня +скрипты на VBA. Заморочился тогда сильно, и за вечер сделал. Для меня сыграло то, что 5 человек до меня не смогли этого сделать.
  • Формулы 3д обектов?

    ProgrammerForever
    @ProgrammerForever
    Есть ещё Raymarching, там нет мэшей, только аналитически заданные объекты сцены.
  • Есть ли вариант кода без кода table?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Эти данные грузятся скриптом. Если получить код и вычистить его от скриптов и стилей, то получится вот это(сократил код, т.к. лимит 10к символов на сообщение):
    spoiler
    <!doctype html>
    <html lang="ru-RU">
    
    <head>
        <title>Освободите эту Ведьму читать мангу Release That Witch онлайн</title>
    </head>
    
    <body>
        <header>
    ...
        </header>
        <div class="container manga-container">
            <div class="row">
                <article class="card shadow-sm bg-black rounded-0 w-100 col-xl-8">
                    <div class="card-body">
                        <h1 class="h4 entry-title"> Манга <span class="post-name">Освободите эту Ведьму</span> <span class="post-name-en h5"> / Release That Witch</span> </h1>
                        <div class="row ">
                            <div class="col-md-4 col-lg-4 text-center"> <img src="https://static2.mangapoisk.ru/posters/2221/zxx46xytpa3qqdQcUviAkgYAZQbJtHzcXoxbQSyw_mini.jpg" alt="Освободите эту Ведьму - Постер" title="Освободите эту Ведьму - Постер" class="img-fluid"> </div>
                            <div class="col-md-8 col-lg-8">
                                <h2 class="post-name-jp h5"> Fang kai nage nüwu </h2>
                                <h2 class=" h6" title="Альтернативное название"> 放开那个女巫 / Fàng kāi nàgè nǚwū </h2>
                                <div class="post-info">
                                    <div class="my-2"> <select id="rating" class="fa fa-star far fa-star fas fa-star-half-alt  d-none">
                                            <option value=""></option>
                                            <option value="1">1</option>
                                            <option value="2">2</option>
                                            <option value="3">3</option>
                                            <option value="4">4</option>
                                            <option value="5">5</option>
                                        </select> <b class="ratingValue ml-1">3.87</b> <small>(голосов: <span class="ratesCount">233</span>)</small> </div>
                                    <h5>Информация</h5> <span><b>Глав:</b> 134</span> <br> <span><b>Статус:</b> Выпускается </span> <br> <span><b>Жанр:</b></span> <span> <a href="/genre/adventure" title="список манги жанра Приключения">приключения</a> , <a href="/genre/action" title="список манги жанра Боевик">боевик</a> , <a href="/genre/supernatural" title="список манги жанра Сверхъестественное">сверхъестественное</a> , <a href="/genre/drama" title="список манги жанра Драма">драма</a> , <a href="/genre/fantasy" title="список манги жанра Фэнтези">фэнтези</a> , <a href="/genre/harem" title="список манги жанра Гарем">гарем</a> </span> <br> <span><b>Год:</b> <a href="/year/2018" title="список манги за год 2018">2018</a></span> <br>
                                </div>
                                <div class="btn-group"> <button class="subscribe btn mt-1 btn-outline-danger"> <span class="button-icon fa fa-bell"></span> <span class="button-text"> Подписаться </span> </button> <button class="read-later btn mt-1 btn-outline-primary"> <span class="button-icon fa fa-clock"></span> <span class="button-text"> Прочитать позже </span> </button> </div>
                            </div>
                        </div>
                        <div class=" manga-links btn-group pt-2"> <a href="/manga/release-that-witch/chapter/1-0" class="btn btn-outline-primary">
                                <h2 class="h-6">Читать мангу онлайн сначала</h2>
                            </a> <a href="/manga/release-that-witch/chapter/1-133" class="btn btn-outline-primary">
                                <h2 class="h-6">Читать последнюю главу</h2>
                            </a> <a href="/manga/release-that-witch/chapter/1-134" class="btn btn-outline-warning">
                                <h2 class="h-6">Когда выйдет глава 134 ?</h2>
                            </a> </div>
                        <div class="manga-description entry"> Чэн Ян не сможет обойтись собственными силами в борьбе с противниками за трон короля. Ведь против него практически весь мир. Роланд в отчаянии. Единственное, что может выручить героя – волшебство и магия. Но обращаться к колдунам мужчина не желает. А как он поступит, когда узнает: на него открыли охоту? Слуги Дьявола в предвкушении: теперь Чэну не обойтись без них, а уж они знают, что требовать взамен... </div>
                        <div class="manga-show-more text-center font-weight-bold"> <a href="javascript:void(0)" class="show-more-button"> Показать описание </a> </div>
                    </div>
                </article>
                <div class="lazy sidebarLoader" data-name="sidebar" data-loader="htmlLoader" data-src="/manga/release-that-witch/sidebar?page=manga">
                    <div class="d-flex align-items-center text-info preloader my-2 mx-4"> <strong>Загрузка...</strong>
                        <div class="spinner-border ml-auto" role="status" aria-hidden="true"></div>
                    </div>
                </div>
                <div class="col-xl-8">
                    <article class="ad-container"> <ins class="adsbygoogle" style="display:block" data-ad-client="ca-pub-6537880980452724" data-ad-slot="5604176784" data-ad-format="auto" data-full-width-responsive="true"></ins> </article>
                </div>
                <article class="card shadow-sm bg-black rounded-0 my-2 w-100 col-xl-8" style="min-height: 150px;">
                    <div class="card-body pb-2">
                        <h2 class="h5"> Главы </h2>
                    </div>
                    <div></div>
                    <div class="lazy chaptersListLoader" data-name="chaptersList" data-loader="htmlLoader" data-src="/manga/release-that-witch/chaptersList">
                        <div class="d-flex align-items-center text-info preloader my-2 mx-4"> <strong>Загрузка...</strong>
                            <div class="spinner-border ml-auto" role="status" aria-hidden="true"></div>
                        </div>
                    </div>
                </article>
                <article class="card shadow-sm bg-black rounded-0 my-2 w-100 col-xl-8">
                    <div class="lazy commentsBlockLoader" data-name="commentsBlock" data-loader="htmlLoader" data-src="/manga/release-that-witch/commentsBlock">
                        <div class="card-body pb-2 preloader">
                            <h2 class="h5"> Комментарии </h2>
                        </div>
                        <div class="d-flex align-items-center text-info preloader my-2 mx-4"> <strong>Загрузка...</strong>
                            <div class="spinner-border ml-auto" role="status" aria-hidden="true"></div>
                        </div>
                    </div>
                </article>
            </div>
        </div>
        <div class="clearfix mt-4"></div>
        ...
    </body>
    </html>

    Соответственно с помощью IMPORTXML() можно получить только то что есть в этом коде.
    Демонстрационная таблица, можно попробовать разные xPath запросы
  • Как определить лидерство в матче?

    ProgrammerForever
    @ProgrammerForever
    OlegCinema, ошибка была, сейчас работает
    aWin
    0
    bWin
    22
    draw
    68
  • Как сделать Excel (Calc) файл с формами и проверками?

    ProgrammerForever
    @ProgrammerForever Куратор тега Excel
    Если бы мне такое пришлось делать я бы точно это не вручную лопатил. Можно сделать макрос, который создаст все эти правила, останется только добавить индивидуальные правила, наподобие "Вес не больше 1кг".
    Но при большом количестве правил это может работать медленно, по крайней мере в гугл таблицах.

    "Вести базу данных в базе данных". Пф... Кто же так делает?
    ELDfA49XkAIYT92.jpg
  • Есть ли вариант кода без кода table?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Что вы пытаетесь получить и с какого сайта?
    Пришлите ссылку на сайт, и пример нужных данных, без этого ваша формула ни о чём не говорит.
  • Скрипт записи изменения значений одной ячейки для google таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Для простых триггеров наподобие onEdit и пользовательских функций недоступен объект user, в этом можно убедиться если сделать такой код:
    function onEdit(e) {
      SpreadsheetApp.getActiveRange().setValue(Utilities.formatString("email: %s",e.user.getEmail() ));
    }

    Но никто не запрещает сделать другую функцию и назначить ей триггер "При изменении" (Изменить - Триггеры текущего проекта - Добавление триггера - onEditTrigger - Основное развертывание - Из таблицы - При редактировании - Сохранить):
    function onEditTrigger(event) {
            var userEmail = event.user.getEmail();                  //Email пользователя
    if ((event.source.getActiveRange().getA1Notation()=="A1")&&(event.source.getActiveSheet().getName()=="Лист1")){
        var arc=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Архив");  
        arc.getRange(arc.getLastRow()+1,1,1,3).setValues([[event.source.getActiveRange().getValue(),new Date(),userEmail ]]);
      };
    };
  • Скрипт записи изменения значений одной ячейки для google таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Не совсем понял вопрос. Если вам надо вывести несколько значений, то используйте setValues и двумерный массив. При этом диапазон должен иметь такой же размер что и выводимый массив.
    диапазон.setValues([[значение1, значение2, заничение3]]);
  • Найти точки окружности?

    ProgrammerForever
    @ProgrammerForever
    1) Увеличьте радиус в КОРЕНЬ(2) раз, чтобы линии доходили до края квадрата - будет описаная окружность
    2) Другой вариант (чтобы были точно в квадрате) - после получения координат x и y проверять их на то, чтобы они были в квадрате. Т.е. они должны быть в пределах от (Центр - R) до (Центр + R). Иначе ту координату которая выпадает из квадрата - приравнивать к ближайшей грани.
    Например левая грань. Проверяем X - должен быть в промежутке от (Центр - R) до (Центр + R), если меньше (Центр - R), то x=(Центр - R), или если больше (Центр + R), то x=(Центр - R).
    Аналогично все другие 3 стороны квадрата.
  • Скрипт записи изменения значений одной ячейки для google таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    function dailyRecord(){ 
      var range = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1").getRange("A1") ;
      var arc=SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Архив"); 
      arc.getRange(arc.getLastRow()+1,1,1,2).setValues([[range.getValue(),new Date()]]);
    };  

    И настроить триггер по времени.
    Изменить - Триггеры текущего проекта - Добавление триггера - Источник(Триггер по времени) - Тип(по дням) - Время(любое удобное) - Сохранить
  • Как заставить плату работать без включателя?

    ProgrammerForever
    @ProgrammerForever
    Такие кнопки замыкают все 4 контакта при нажатии, но левый верхний и левый нижний замкнуты постоянно между собой, так же, как и правый верхний и нижний. Т.е. надо подсоединять на левый и правый контакт. Скорее всего на плате всего 2 контакта, остальные объединены попарно.
    94753_563857c5d3b81563857c5d3bba.png
  • Скрипт записи изменения значений одной ячейки для google таблиц?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Сделайте подобную функцию и настройте триггер по времени. Там хоть раз в минуту.
    Вместо
    event.source.getActiveRange()
    будет адрес вашей ячейки
    SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Лист1").getRange("A1")
  • Как разложить кол-во точек по окружности?

    ProgrammerForever
    @ProgrammerForever
    Посмотрите статью на Википедии (раздел "Связь между декартовыми и полярными координатами"), или любую другую по теме "Полярные координаты". Если надо 3D - то уже нужны не полярные, а сферические, там ещё один угол добавляется.
    Формулы из головы писал, это школьная математика - проекция вектора на ось координат + сложение векторов.
  • Как передать аргументы в функцию, вызванную из меню?

    ProgrammerForever
    @ProgrammerForever Автор вопроса, куратор тега Google Apps Script
    Alexander Ivanov, Нет, всё гуд. Я примерно так же сделал. Просто тут логичнее было бы не имена функций в string использовать, а ссылки на них. Тогда можно было бы прописать лямбду с вызовом целевой функции с нужными данными в параметрах, тем более недавно включили поддержку стрелок и прочих вкусностей.
  • Как передать аргументы в функцию, вызванную из меню?

    ProgrammerForever
    @ProgrammerForever Автор вопроса, куратор тега Google Apps Script
    Спасибо за ответ. Да, я так и сделал. Но думал что можно как-то без таких костылей.
  • Как передать аргументы в функцию, вызванную из меню?

    ProgrammerForever
    @ProgrammerForever Автор вопроса, куратор тега Google Apps Script
    Для упрощения так: функция должна показывать текст пункта меню, из которого она вызвана. Что-то вроде этого:
    function itemMenu(e){
        Browser.msgBox("Был нажат пункт меню '" + (e+"") + "'");
    };

    Как передать туда e?
  • Как поле переходит в ток?

    ProgrammerForever
    @ProgrammerForever
    Химическая энергия источника тока (если батарейка) переходит в энергию электростатического поля, если это блок питания - то там сразу электростатическое поле (разность потенциалов). Это поле двигает носители зарядов и создаёт ток, который создаёт магнитное поле.
    Энергия магнитного поля катушки с током зависит от индуктивности и тока. E = LI²
  • Как скопировать значение из ячейки, google sheets?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Я бы сделал функцией на JS, но можно и без кода, вот так:
    =filter(filter(GoogleFinance("CURRENCY:USDRUB"; "close"; D2);{0;1});{0\1})

    Если интересно как это работает:
    Функция GoogleFinance() выдаёт 4 ячейки (2x2), для удобства запишем как
    ╔═══╦═══╗
    ║ 1 ║ 2 ║
    ╠═══╬═══╣
    ║ 3 ║ 4 ║
    ╚═══╩═══╝

    1) внутренний FILTER() отсекает первую строку по условию {0;1}
    0 - не отображать первую строку
    1 - отображать вторую
    ; - разделитель строк
    Остаётся
    ╔═══╦═══╗
    ║ 3 ║ 4 ║
    ╚═══╩═══╝

    2) внешний FILTER() с условием {0\1} из строки выделяет только вторую ячейку.
    0 - не отображать первую строку
    1 - отображать вторую
    \ - переход на следующую ячейку в строке
    Остаётся
    ╔═══╗
    ║ 4 ║
    ╚═══╝
  • Существует ли возможность связать GoogleSheets без improtrange?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Sheets
    Хотя есть более простой вариант - указывать оба параметра в функции.
    IMPORTRANGE("ссылка на таблицу"; "Лист1!A1:C5")
  • Как дописать скрипт Google Apps script?

    ProgrammerForever
    @ProgrammerForever Куратор тега Google Apps Script
    onOpen() можно попробовать запустить первый раз из редактора кода - гугл запросит разрешения.

    Если артикул не существует, то просто эта пара циклов пройдёт впустую и ничего не поменяется, по идее.

    Можно добавить условие, если такая необходимость есть:
    function doIt() {
       var isModifed = false;
      try{
        var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); //Текущий лист
        
        var data1 = ss.getRange("A3:E" + ss.getMaxRows()).getValues();
        var data2 = ss
        .getRange("m4:n" + ss.getMaxRows())
        .getValues()
        .filter(function(row) // Убираем пустые строки
                {
                  return row[0]!="";
                }
               );
        
        for (var row2=0;row2<data2.length;row2++){
          for (var row1=0;row1<data1.length;row1++){
            if (data1[row1][0]===data2[row2][0]){
              data1[row1][4]+=data2[row2][1];
              isModifed = true;
              break; //Если значение найдено, дальше не ищем
            };
          };
        };
        if (isModifed ) {
           ss.getRange("A3:E" + ss.getMaxRows()).setValues(data1); //Вывод данных
            SpreadsheetApp.getActive().toast("Готово!");
        }else{
            SpreadsheetApp.getActive().toast("Такие артикулы не найдены!");
        };
      }catch(e){ //Если вдруг ошибка
        Logger.log("Ошибка! " + e);
      };
    }