Ответы пользователя по тегу Excel
  • Как в 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 комментарий
  • Как вставить картинку в таблицу 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
    Ответ написан
  • Как сделать автоматическое заполнение ячеек, при выборе значения из раскрывающегося списка 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 Заполнение может быть разное, данные могут быть разными, прошу понимать, что это просто один из вариантов, который (я надеюсь) поможет Вам разобраться
    Ответ написан
    Комментировать
  • Отметить жирными посчитать ячейки с жирным шрифтом?

    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)
    Ответ написан
    Комментировать