• Как правильно решить задачу?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Попробуйте так (возможно, что ваша ошибка - это условный ambiguous name и проблема в том, что при выводе в результирующую таблицу у вас попадает поле id, которое есть в двух соединяющихся таблицах):
    SELECT 
        l.name AS name,
        l.id AS id,
        r.age AS age 
    FROM 
        (
        SELECT DISTINCT 
            name, id 
        FROM 
            names 
        WHERE 
            name = 'Андрей' 
        ) AS l
        LEFT JOIN 
        ages AS r 
        ON 
        l.id = r.id
    Ответ написан
    Комментировать
  • Как сгенерировать число по столбику?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Если я правильно понял Ваш запрос, то можете попробовать сделать так:

    Вам нужно прописать формулу в Google Apps Script примерно вот такую, которая в качестве параметра будет принимать диапазон ячеек, в котором хранятся нужные для поиска номера (артикулы). Данная функция ищет первый по возрастанию пропущенный номер в диапазоне и выводит в отдельную ячейку
    /**
     * Возвращает первый по возрастанию пропущенный номер
     * @param {String} searchingRange
     */
    function getMissingNumber(searchingRange) {
      const values = searchingRange.map(item => Number(item))
      for (let i = 1; i < values.length; i += 1) {
        let currentNum = values[i]
        let previousNum = values[i - 1]
        if (currentNum - previousNum > 1 ) {
          return previousNum + 1
        }
      }
      return "Все номера на месте"
    }


    На выходе получается, что-то подобное:
    65dd9efdb19ad791126776.png
    Ответ написан
    Комментировать
  • Почему не пaлучяется вывести принт в текстовый документ 111.txt?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ты файл не закрыл: file.close()

    Напиши так (здесь не надо вручную закрывать, за тебя все закроют):
    with open('111.txt', 'w') as f:
        f.write('hello !!!')
    Ответ написан
    Комментировать
  • Какие алгоритмы нужны для собеседования на python backend junior-разработчика?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    У Яндекса есть специальный бесплатный курс, который помогает готовиться к алгоритмической секции: https://practicum.yandex.ru/algorithms-interview/
    Ответ написан
    Комментировать
  • Как в exel сделать числа на проценты?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Просто пропишите в 3-ем столбце формулу:
    =ЕСЛИ((<ячейка с процентами> * 50) * 100 = 0;"";(<ячейка с процентами> * 50) * 100)
    и протяните до строки, которая будет последней.

    По факту Вам здесь просто нужно умножить Ваш процент и 50, а потом домножить это все на 100, чтобы привести к числу, поэтому хватит и обычной формулы: <ячейка с процентами> * 50) * 100, но тогда при протягивании вниз в пустых ячейках могут появиться нули
    Ответ написан
    Комментировать
  • Как сравнить два листа и вывести значение из второго листа в 1ю?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Предположим, что есть 2 листа ("Главная" и "Вспомогательная"). На листе "Главная" в столбце A прописаны страны. На листе "Вспомогательная" в столбце А написаны страны, а в столбце B написаны серийные номера

    На листе "Главная" в столбце B, возле каждой страны пропишите следующее:
    =ЕСЛИОШИБКА(ВПР(A1;Вспомогательная!$A$1:$B$9;2;0);"Такой страны нет в списке")

    В таком случае в каждой строке столбца B на листе "Главная" будет подтянут номер для каждой страны, которая есть на листе "Вспомогательная", в противном случае - "Такой страны нет в списке"
    Ответ написан
    1 комментарий
  • Не получается вывести число, как это можно исправить?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    В данном случае у тебя твой цикл доходит до 50 и останавливается вот в этом условии: for i in range (m, n):, так как for i in range(m, n) будет перебирать твои числа от m до n - 1

    Тебе нужно увеличить твое n на 1 и прописать for i in range(m, n + 1) и тогда должно заработать

    Вот здесь можешь почитать: https://docs.python.org/2/library/functions.html#range
    Ответ написан
    Комментировать
  • Как вставить картинку в таблицу excel по ссылке?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ответ написан
    Комментировать
  • Получение данных по API в EXCEL?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    1. Идете в EXCEL во вкладку Данные и открываете редактор Power Query
    2. У данного редактора есть функционал, который позволяет читать JSON-структуры
    3. Пишете ваш собственный запрос, ответ на который Вы хотите получить - получаете JSON-структуру
    4. Преобразуете полученные данные в редакторе и делаете выгрузку на листы

    Как работать с Power Query - это отдельная тема. Можете в ней разобраться, если есть желание. В противном случае - попробуйте здесь прочитать: directprobi.ru/blogs/power-query-excel-bi-api-get-...
    Ответ написан
    Комментировать
  • Как в Excel (Calc) сопоставить два диапазона данных в столбцах?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Хотелось бы понимать, какие у Вас данные модель-значения и встречаются ли в них минимальные различия. Если различия не встречаются (имеется в виду, что описание в стиле "описание" или "ОпиСание" считаются, как разные), то можно попробовать следующий вариант:

    - Делаете конкатенацию строк с моделью и описанием в первом диапазоне: СЦЕПИТЬ(C3;D3) или C3&D3
    - Делаете конкатенацию строк с моделью и описание во втором диапазоне: СЦЕПИТЬ(G3;H3) или G3&H3
    - Полученные данные хранятся в столбцах E и F
    - И далее с помощью формулы =ИЛИ(СОВПАД(E2;$F$2:$F$8)) проверяете наличия совпадения данных из первого диапазона во втором

    Типа того:
    65d475ea214cc653099019.png
    Ответ написан
  • Почему может не работать МТС KION?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Я, конечно, не эксперт в вопросах телевидения, но мне кажется, что самый оптимальный вариант - это написать им в техподдержку)
    Ответ написан
  • Как сделать автоматическое заполнение ячеек, при выборе значения из раскрывающегося списка c несколькими строками и выбором значений?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Так, ну смотрите. Как Вам в комментариях написали, что действительно можно сделать через событие Worksheet_Change .

    К сожалению Вы не предоставили ничего, кроме вопроса (хотя бы структура данных или откуда их забираете было бы кстати), поэтому предлагаю Вам вот такой вариант, основанный на моих личных предубеждениях. Хочу предупредить, что способов решить данную проблему большое количество и это лишь один из вариантов

    Для начала нужно понять, как хранятся данные. Ну допустим они хранятся вот так на листе 2:

    65d3b25335925415999714.png

    Можно написать вот такую функцию, которая будет забирать данные с этого листа. Даже если данные хранятся по другому, то все равно немаловажно понять, как именно они лежат.
    Option Explicit
    
    Public Const MainShtIndex As Integer = 1
    Public Const DataShtIndex As Integer = 2
    
    Function GetPersonalInfo(Optional Name As String):
        'Функция получает значения аттрибутов для конкретного пользователя
        Dim DataSht As Worksheet, Row As Integer
        Dim NamesRange As Range, Cell As Range
        Dim PersonalAttrs As New Dictionary, Key As String, Item As Variant
        
        PersonalAttrs.CompareMode = CompareMethod.TextCompare
        Set DataSht = Application.ActiveWorkbook.Worksheets(DataShtIndex)
        With DataSht
           Set NamesRange = .Range(.Cells(2, 1), .Cells(4, 1))
           'Здесь мы находим нужное имя для дальнейшего заполнения
           For Each Cell In NamesRange:
                If Cell.Value = Name Then
                    Row = Cell.Row
                    Exit For
                End If
           Next Cell
    
           If Row = 0 Then MsgBox Prompt:="Такого человека нет в списке"
           
           'Здесь мы забираем значения аттрибутов
           For Each Cell In .Range(.Cells(Row, 2), .Cells(Row, 7))
                Key = .Cells(1, Cell.Column)
                Item = VBA.IIf(Cell.Value = 1, 1, "")
                PersonalAttrs.Add Key, Item
           Next Cell
        End With
        'Возвращаем словарь со значениями пользовательских аттрибутов
        Set GetPersonalInfo = PersonalAttrs
    End Function

    После того, как мы получили данные 0 а их мы здесь получили в виде словаря, где в качестве ключей используются атрибуты, а значения - 0 или 1, в зависимости от наличия атрибута у конкретного пользователя. Теперь нам нужно записать это в структуру подобной той, которую Вы указали в вопросе. Типа такого (допустим, что она хранится у нас на листе 1):

    65d3b2922ce24099166120.png

    Для записи напишем отдельную процедуру:
    Sub FillAttrs():
        'Здесь происходит заполнение ячеек, в соответствии со значениями аттрибутов
        Dim MainSht As Worksheet
        Dim PersonalInfo As New Dictionary
        Dim PersonNameRange As Range, AttrRange As Range
        Dim Cell As Range
        Set MainSht = Application.ActiveWorkbook.Worksheets(MainShtIndex)
       
       With MainSht
            Set PersonNameRange = .Cells(2, 1)
            Set AttrRange = .Range(Cells(5, 2), Cells(10, 2))
            Set PersonalInfo = GetPersonalInfo(PersonNameRange.Value)
            
            For Each Cell In AttrRange:
                .Cells(Cell.Row, 1).Value = PersonalInfo.Item(Cell.Value)
            Next Cell
       End With
    End Sub


    Далее остается только вызывать эту процедуру при каждом изменении ячейки, ФИО в которой мы будем изменять - что-то подобное:

    Sub Worksheet_Change(ByVal Target As Range):
        'Здесь выполняется заполнение ячеек при изменении данных
        If Target.Address = "$A$2" Then Call FillAttrs
    End Sub


    Вуаля...
    Теперь при обновлении ячейки с ФИО, будет происходить изменение структуры с атрибутами на листе 1

    P.S Заполнение может быть разное, данные могут быть разными, прошу понимать, что это просто один из вариантов, который (я надеюсь) поможет Вам разобраться
    Ответ написан
    Комментировать
  • Кто знает хорошие api?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Мне в свое время вот этот нравился: https://dummyjson.com/
    Ответ написан
    Комментировать
  • Отметить жирными посчитать ячейки с жирным шрифтом?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Тут действительно можно сделать с помощью макроса и функции Range.Find, как сказали выше.
    Также можно прописать небольшую процедуру, где будет проверяться просто свойство Font.Bold для каждой ячейки из диапазона с гостями. В случае, если текст будет жирным, то в столбце с явкой будет проставляться единица. Пример такого небольшого макроса ниже.
    Option Explicit
    
    Sub GuestsCount():
    
        'Определяем диапазоны
        Dim GuestsRange As Range, Cell As Range
        Dim WillBeAtParty As Range
        
        'Забираем диапазон с пользователями, которых нужно просмотреть
        Set GuestsRange = ActiveWorkbook.Worksheets(1).Range(Cells(2, 2), Cells(12, 2))
        Set WillBeAtParty = ActiveWorkbook.Worksheets(1).Range(Cells(2, 3), Cells(12, 3))
        
        'Проходимся по каждой ячейке из диапазона
        For Each Cell In GuestsRange:
            If Cell.Font.Bold = True Then WillBeAtParty.Cells(Cell.Row - 1, 1).Value = 1
        Next Cell
        
    End Sub


    Таблицы для которых составлялся этот макрос:
    65d3167cdbd91207991717.png
    Тут важно понимать, что процедура писалась под конкретные рабочие книги, диапазоны и прочее. У Вас будут свои собственные диапазоны и рабочие книги, но смысл работы макроса останется тем же
    Ответ написан
    Комментировать
  • Нужно чтобы удалялась строка в гугл таблице при появление информации в конкретной ячейке, как это сделать?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Можно какой-нибудь макрос простенький навалять, типа такого:

    Option Explicit
    
    Sub RemoveRowsByCondition():
        'Процедура, которая будет удалять строки, в которых есть значения, равные значению в ячейке target
        Dim Target As Range, Cell As Range
        Dim ValuesRange As Range
        ' Задаете переменные для диапазонов со строками и значением
        Set Target = ActiveWorkbook.Worksheets(1).Cells(2, 3)
        Set ValuesRange = ActiveWorkbook.Worksheets(1).Range(Cells(1, 1), Cells(10, 1))
        'Проход по каждой ячейке столбца A
        For Each Cell In ValuesRange:
            If Cell.Value = Target Then ValuesRange.Rows(Target).Delete
        Next Cell
    End Sub


    Условия для удаления могут быть абсолютно разные. В данном случае в строках столбца А просто представлены значения от 1 и далее. Для этого диапазона проверяется условие соответствия target и значений в ячейках столбца А. В случае совпадения - строка удаляется.

    65d1e530d0fef396706481.png

    Данное решение ориентировано на конкретную задачу, но общий смысл должен быть понятен (нужно вставить свои границы диапазонов, рабочие книги, листы и условие). Запускать его можно также вручную при изменении, ну либо через хук, как написали выше (например изменение в ячейке target)
    Ответ написан
    Комментировать
  • Как мне упростить формулу?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Вы тут перемножаете 2 диапазона, насколько я понимаю и суммируете их. Попробуйте посмотреть в сторону СУММПРОИЗВ, правда там придется вам покопаться немного со структурой диапазонов
    Ответ написан
  • Как изменить запрос для того, чтобы поля (столбцы) создавались динамически?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Можно попробовать сгруппировать значения в массив и потом преобразовать их в строку. Тогда будет что-то в таком стиле. Естественно подразумевается, что значения параметров имеют (приведены) к одному элиасу
    SELECT 
       ARRAY_TO_STRING(ARRAY_AGG(value), ',', '*') AS values
    FROM ...


    | user_id | user_name | values          |
    | ------- | --------- | --------------- |
    | 1       | John      | Value_1,Value_2 |
    Ответ написан
  • Как в сделать Pandas объединение строк группирую по определнному столбцу?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Ну я бы на Вашем месте просто предварительно сделал обработку файла в Power Query путем заполнения данного ряда "вниз". (раз уж это файл .xlsx). и уже далее бы просто сгруппировал по первому столбцу, используя для агрегации функцию "list".

    1) Для первой части решения проблемы Вам понадобится вот это: https://learn.microsoft.com/ru-ru/power-query/fill...
    2) Для второй части - вот это: https://stackoverflow.com/questions/22219004/how-t...
    Ответ написан
  • Можно ли составить mysql запрос с выборкой не определенного множества полей?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Вам нужно объединить 2 таблицы (Товары, Свойства) через отношения, которые даны у вас в таблице (Свойства товаров).

    Возможно написать что-нибудь в таком стиле (но это просто, как пример, он может для Вас не подойти):
    SELECT 
        item_name,
        GROUP_CONCAT(prop_value) AS props
    FROM
    	(  
        SELECT 
            l.name AS item_name,
            r.name AS prop_name,
            z.val AS prop_value
        FROM 
            items AS l
            INNER JOIN 
            props_to_items AS z
            ON 
            l.id = z.item_id
            INNER JOIN 
            props AS r
            ON
            z.prop_id = r.id
    	) AS total_info
    GROUP BY 
    	item_name


    Что выведет в результате вот такое:
    | item_name | GROUP_CONCAT(prop_value) |
    | --------- | ------------------------ |
    | item_1     | Prop_1,Prop_2,Prop_3.    |
    | item_2     | Prop_1,Prop_2,Prop_3     |
    
    ---
    Ответ написан
    Комментировать
  • Как на pandas получить подобие оконной функции SQL?

    otdameskapizm
    @otdameskapizm
    Помог ответ? Отметь решением...
    Можете попробовать вот такой способ (если я правильно понял ваш запрос с ранжированием и дальнейшей фильтрацией). Здесь используется группировка по определенной колонке, а затем внутри этой группы ранжируются значения. Выглядит вот так:

    import pandas as pd
    
    data = pd.DataFrame({
        'key_1' : ['x', 'x', 'x', 'y', 'y', 'y'],
        'key_2' : [1, 2, 3, 4, 5, 6]
    })
    
    # Здесь добавляете ранги внутри каждой из групп
    data['rank'] = data \
        .groupby('key_1', as_index=False)['key_2'] \
        .rank(method='first', ascending=True) \
    
    # Здесь происходит фильтрация по рангу
    data = data.loc[data['rank'] == 1]


    Вот здесь есть подробная документация для этого способа: https://pandas.pydata.org/docs/reference/api/panda...
    Ответ написан
    Комментировать