Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 522 След.
Объединение таблиц с разным количеством столбцов и строк POWER QUERY, Объединение таблиц с разным количеством столбцов и строк POWER QUERY
 
Цитата
Ni_Gu_Ra написал:
получаются друг под другом, хотя наименование их почти одинаково
а должны быть где?
Задача вообще непонятна. Что объединять, по каким критериям, что сейчас не так...
Если надо еще и по наименованию строк что-то суммировать - то извлечение имени листа приобретает некую бессмысленность.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Защитить ячейки от повторного редактирования
 
Цитата
MarkII написал:
что-бы они его заполняли но возможности редактировать нельзя
а это как? Т.е. они должны заполнять. Значит редактировать. Но редактировать запрещено. Не сходится как-то. Может Вам что-то вроде этого надо:
Как разрешить изменять только выбранные ячейки?
и до кучи - вдруг тоже пригодится:
Защита ячеек в зависимости от цвета
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
При создании колонтитула макросом выдаёт ошибку
 
Код
.CenterFooter = "&""Times New Roman""&8" & ['Яблоко'!A2]
    .RightFooter = "&""Times New Roman""&8 Стр &P из &N"

у колонтитулов есть ограничение на кол-во символов. И чем длиннее имя шрифта - тем меньше остается для другого текста.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Вопрос по датам
 
Код
=ТЕКСТ(ДАТА(M2;(ПОИСК(ЛЕВБ(ПОДСТАВИТЬ(H2;"мая";"май");3);"янвфевмарапрмайиюниюлавгсеноктноядек")+2)/3;E2)+1;"[$-x-sysdate]дд ММММ гггг \г.")

вместо "[$-x-sysdate]дд ММММ гггг \г." можете прописать формат для ячейки с реальной датой, который учитывает склонение месяца.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Список питающихся военнослужащих
 
Цитата
Евгений Смолов написал:
не могли бы вы скинуть формулу в текстовом варианте
не вопрос. Но там надо еще и в таблицу изменения вносить - без этого работать не будет:
Код
=СУММПРОИЗВ(($B$2:$B$6=B$22)*($D$2:$D$6=$A23)*($E$1:$J$1=$C$14)*($E$2:$J$6>0)*($E$2:$J$6<>"б/д"))
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Список питающихся военнослужащих
 
Цитата
gling написал:
($E$2:$J$6<>0)
"б/п" будет тоже не равно 0. А они не должны идти в подсчет. Т.е. на примере приложенного файла из солдатского состава никто не питается, а формула выдаст 1 за 23.11.2025.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Список питающихся военнослужащих
 
Вам в верхнюю таблицу надо добавить признак нач.состава(т.е. это солдат, сержант, прапорщик или офицер).
Тогда все будет просто подсчитать.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Сборка данных со всех листов книги в одну таблицу, Сборка данных со всех листов книги в одну таблицу
 
MikeVol, так будут вставлены все атрибуты ячейки(формулы, форматы и т.п.), а не только значения. А ТС-у надо:
Цитата
Светлана Клешнева написал:
чтобы вставить значения, а не формулы
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Сборка данных со всех листов книги в одну таблицу, Сборка данных со всех листов книги в одну таблицу
 
Потому что у метода Copy есть только параметр Destination и нет параметра, отвечающего за спец.вставку "на лету". Надо разбивать на два метода: Copy  и Paste:
Код
rngData.Copy
wbReport.Worksheets(1).Cells(n + 1, 1).PasteSpecial xlPasteValues
Application.CutCopyMode = False
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Выбор данных из таблицы
 
Цитата
Саня написал:
на маке
на маке нет метода GetOpenFilename. Ищите в сети по ключевым словам: "excel Application.GetOpenFilename macos". Решение есть и в нем строк больше, чем во всем Вашем текущем коде :)
Например, на сайте Microsoft
Изменено: Дмитрий(The_Prist) Щербаков - 21.11.2025 14:08:17
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Автоматическое формирование гиперссылки на файл
 
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    'проверка: если столбец не I - выход
    If Target.Column <> 9 Then Exit Sub
    'проверка: если строка меньше 2 - выход
    If Target.Row < 2 Then Exit Sub
    'проверка: если изменили более одной ячейки - выход
    If Target.Count > 1 Then Exit Sub
    'проверка: если в ячейку ничего не ввели(удаление) - выход
    If Len(Target) = 0 Then Exit Sub
      
    Dim s$
    'создаем путь к файлу
    s = "C:\tmp\" & Target.Value & ".pdf"
    'отключаем отслеживание событий, чтобы не было зацикливания при создании ссылки
    Application.EnableEvents = 0
    'создаем гиперссылку
    Me.Hyperlinks.Add Anchor:=Target, Address:=s, TextToDisplay:=CStr(Target.Value)
    'возвращаем отслеживание событий
    Application.EnableEvents = 1
End Sub

но это последний раз - комментариев больше, чем кода :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Автоматическое формирование гиперссылки на файл
 
Цитата
OTK76 написал:
Сейчас я ввожу любое число без точки
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 9 Then Exit Sub
    If Target.Row < 2 Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Len(Target) = 0 Then Exit Sub
     
    Dim s$
    s = "C:\tmp\" & Target.Value & ".pdf"
    Application.EnableEvents = 0
    Me.Hyperlinks.Add Anchor:=Target, Address:=s, TextToDisplay:=CStr(Target.Value)
    Application.EnableEvents = 1
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Автоматическое формирование гиперссылки на файл
 
Правая кнопка на ярлыке листа -Просмотреть код(или Исходный код). Вставляете код ниже:
Код
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column <> 9 Then Exit Sub
    If Target.Row < 2 Then Exit Sub
    If Target.Count > 1 Then Exit Sub
    If Len(Target) = 0 Then Exit Sub
    
    Dim s$
    s = "C:\tmp\" & Target.Value & ".pdf"
    Application.EnableEvents = 0
    Me.Hyperlinks.Add Anchor:=Target, Address:=s, TextToDisplay:=Target.Value
    Application.EnableEvents = 1
End Sub

макросы у всех, кто будет этим пользоваться, должны быть разрешены.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Удалить дубли и оставить с наибольшим значением, Удалить дубли с одинаковыми артикулами и оставить те, которые с наибольшим значением
 
Сводная таблица -в строки Артикул -в значения Минус. Для поля минус поставить функцию поля Минимум.

P.S. Файл не смотрел.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Распределение данных по разным столбцам
 
Все формулы ниже - формулы массива(вводятся в ячейку сразу тремя клавишами: Ctrl+Shift+Enter, если только у Вас не Excel с подпиской 365).
больничный 1:
Начало:
Код
=ЕСЛИОШИБКА(ИНДЕКС($E$1:$E$45;НАИМЕНЬШИЙ(ЕСЛИ($D$1:$D$45=D5;СТРОКА($E$1:$E$45));1));"")

конец
Код
=ЕСЛИОШИБКА(ИНДЕКС($F$1:$F$45;НАИМЕНЬШИЙ(ЕСЛИ($D$1:$D$45=D5;СТРОКА($E$1:$E$45));1));"")

больничный 2:
Начало:
Код
=ЕСЛИОШИБКА(ИНДЕКС($E$1:$E$45;НАИМЕНЬШИЙ(ЕСЛИ($D$1:$D$45=D5;СТРОКА($E$1:$E$45));2));"")

конец
Код
=ЕСЛИОШИБКА(ИНДЕКС($F$1:$F$45;НАИМЕНЬШИЙ(ЕСЛИ($D$1:$D$45=D5;СТРОКА($E$1:$E$45));2));"")

для 3-го также, только цифра для НАИМЕНЬШИЙ - 3. Думаю, это не сложно будет сделать.
И еще: если бы в столбцах с датами были реально даты, а не текст, то было бы еще проще:
Код
=ЕСЛИОШИБКА(НАИМЕНЬШИЙ(ЕСЛИ($D$1:$D$45=D5;$E$1:$E$45);1);"")

ну и далее по аналогии
Изменено: Дмитрий(The_Prist) Щербаков - 19.11.2025 15:35:58
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Группировка таблицы по датам, Группировка таблицы по датам
 
Вкладка Конструктор -Макет отчета -Показать в табличной форме
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Преобразовать время в текст
 
еще вариант:
Код
=ПОДСТАВИТЬ(ЗНАК(B3-A3);1;"")&ТЕКСТ(ABS(B3-A3);"[м] ""мин"" сс ""сек""")
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Хранение паролей в ячейках Excel, особый формат ячеек?
 
Цитата
Alexcx написал:
соответствующие ячейки отформатированы шрифтом и цветом ("белый по белому"), формулы скрыты, и включена защита листа.
Добавьте еще формат ячеек:
Код
"*******";"*******";"*******";"*******"

будут Вам звездочки
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA JSON parsing
 
Так может строка "кривая", раз ни одно найденное решение с ней не работает? Можете хотя бы ссылки на найденные решения приложить и написать как именно "не работает" с Вашей строкой?
И сразу напишу: не зная какой результат хотите получить - вряд ли получите код парсинга этой строки. А писать специально под Вас класс полноценного парсинга JSON(при уже существующих и работающих на других строках) - вряд ли кто захочет.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
VBA JSON parsing
 
И что, поиском ничего не нашлось про парсинг JSON?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Макрос для удаление лишних пробелов
 
чуть короче :)
Код
Sub triming()
   Dim trim_range  As Range
   Set trim_range = Range("B:B")
   Set trim_range = Intersect(trim_range, ActiveSheet.UsedRange)
   If not trim_range is nothing then
      With trim_range
         .Value = Application.Trim(.Value)
      End With
   end if
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Хранение данных для сводной таблицы
 
Цитата
sfs написал:
А хотелось бы запретить сводной использовать этот дубликат
если запретите - сводная будет как картинка.
Но попробуйте сделать следующее - должно помочь(после удаления данных исходной таблицы):
-выделяете любую ячейку внутри сводной;
-правая кнопка мыши -Параметры сводной таблицы
-вкладка Данные.
Отключаете пункты: Сохранять исходные данные вместе с файлом; Разрешить отображение деталей; Обновить при открытии файла.
Сохраните файл, закройте. После открытия никакие действия со сводной будут недоступны.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Присутствие работника на текущую дату
 
А чем такая формула не подходит?
Код
=СУММЕСЛИ($G$1:$AK$1; "<="&ДЕНЬ($B$2); G3:AK3)+C3
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Скопировать данные(лист) из выбранной книги
 
После этой строки:
Код
Set ws = ActiveWorkbook.Worksheets("Фрукты") 'лист, куда переносить данные

вставьте такую:
Код
ws.Cells.Clear
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Скопировать данные(лист) из выбранной книги
 
Цитата
Feniks32 написал:
оригинальный код Ваш
есть такое :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Скопировать данные(лист) из выбранной книги
 
Понятно. Вероятно, после спец.вставки автоматом происходит переход. Добавьте запоминание листа:
Код
Sub ВставляетЗначениеВыбор()
    Dim oFD As FileDialog
    Dim wb As Workbook, ws As Worksheet, wsAct As Worksheet
    Dim path$
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD
        .AllowMultiSelect = False
        .Title = "Выбрать файл"
        .Filters.Clear
        .Filters.Add "All files", "*.*"
        .InitialFileName = ActiveWorkbook.path
        .InitialView = msoFileDialogViewDetails
        If oFD.Show = 0 Then Exit Sub
    End With
    path = oFD.SelectedItems(1)
    Set wsAct = ActiveSheet
    Set ws = ActiveWorkbook.Worksheets("Фрукты") 'лист, куда переносить данные
    
    Application.ScreenUpdating = False 'Выключаем обновление экрана
    Set wb = Workbooks.Open(path)
    'sAddress = "A1:G100" 'или одна ячейка - "A1"
    'vData = ActiveWorkbook.Worksheets("Фрукты").Range(sAddress).Value 'получаем значение
    wb.Worksheets("Фрукты").UsedRange.Copy
    ws.Range("A1").PasteSpecial xlPasteValues  'вставляем значения
    ws.Range("A1").PasteSpecial xlPasteFormats 'вставляем форматы
    Application.CutCopyMode = False
    wb.Close False
    wsAct.Activate
    Application.ScreenUpdating = True 'Включаем обновление экрана
End Sub

ну и добавил отключение обновления экрана - а то включение у Вас есть, а отключения нет :) Смысл теряется.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Скопировать данные(лист) из выбранной книги
 
Цитата
Feniks32 написал:
в обеих книгах лист называется "Фрукты"
тогда так:
Код
Sub ВставляетЗначениеВыбор()
    Dim oFD As FileDialog
    Dim wb As Workbook, ws As Worksheet
    Dim path$
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD
        .AllowMultiSelect = False
        .Title = "Выбрать файл"
        .Filters.Clear
        .Filters.Add "All files", "*.*"
        .InitialFileName = ActiveWorkbook.path
        .InitialView = msoFileDialogViewDetails
        If oFD.Show = 0 Then Exit Sub
    End With
    path = oFD.SelectedItems(1)
    Set ws = ActiveWorkbook.Worksheets("Фрукты") 'лист, куда переносить данные
    Set wb = Workbooks.Open(path)
    'sAddress = "A1:G100" 'или одна ячейка - "A1"
    'vData = ActiveWorkbook.Worksheets("Фрукты").Range(sAddress).Value 'получаем значение
    wb.Worksheets("Фрукты").UsedRange.Copy
    ws.Range("A1").PasteSpecial xlPasteValues  'вставляем значения
    ws.Range("A1").PasteSpecial xlPasteFormats 'вставляем форматы
    Application.CutCopyMode = False
    wb.Close False
    Application.ScreenUpdating = True 'Включаем обновление экрана
End Sub

Цитата
Feniks32 написал:
чтобы при копировании он совершал вставку на лист "Фрукты", но без перехода на него?
а сейчас что, переходит разве?
Вам бы хоть чуть-чуть начать изучать коды. Нигде нет и намека на переход листа, в моем коде обращение к нему идет напрямую без активации.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Скопировать данные(лист) из выбранной книги
 
Цитата
Feniks32 написал:
весь лист
sAddress = ActiveSheet.UsedRange.Address
Цитата
Feniks32 написал:
скопировать На нужный мне лист "Фрукты", а не на активный
Здесь проблема. Вы почему-то уже берете данные с листа Фрукты и их же туда вставляете. Зачем? Не пойму. В общем такой код должен вполне сработать:
Код
Sub ВставляетЗначениеВыбор()
    Dim oFD As FileDialog
    Dim wb As Workbook, ws As Worksheet
    Dim path$
    Set oFD = Application.FileDialog(msoFileDialogFilePicker)
    With oFD
        .AllowMultiSelect = False
        .Title = "Выбрать файл"
        .Filters.Clear
        .Filters.Add "All files", "*.*"
        .InitialFileName = ActiveWorkbook.path
        .InitialView = msoFileDialogViewDetails
        If oFD.Show = 0 Then Exit Sub
    End With
    path = oFD.SelectedItems(1)
    Set ws = ActiveWorkbook.Worksheets("Фрукты") 'лист, куда переносить данные
    Set wb = Workbooks.Open(path)
    'sAddress = "A1:G100" 'или одна ячейка - "A1"
    'vData = ActiveWorkbook.Worksheets("Фрукты").Range(sAddress).Value 'получаем значение
    wb.ActiveSheet.UsedRange.Copy
    ws.Range("A1").PasteSpecial xlPasteValues  'вставляем значения
    ws.Range("A1").PasteSpecial xlPasteFormats 'вставляем форматы
    Application.CutCopyMode = False
    wb.Close False
    Application.ScreenUpdating = True 'Включаем обновление экрана
End Sub
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Запуск макросов кнопкой через Checkbox
 
Цитата
Alex32 написал:
а если макросы будут называться по другому
то и файл-пример надо прикладывать соответствующий. Какой пример - такой ответ.
Проявите смекалку - назовите каждый макрос так же, как чекбокс. Или чекбокс как макрос или хотя бы как часть его. И используйте это для решения задачи. Направление я Вам показал.
Ну или в лоб делайте, если строчек не жалко и хочется править при каждом чихе:
Код
            If oCntrl.Value = True Then
                select case oCntrl.Name
                case "CheckBox1"
                    Call Яблоко
                case "CheckBox2"
                    Call Груша
                case "CheckBox3"
                    Call Лимон
                End Select
            End If
Изменено: Дмитрий(The_Prist) Щербаков - 13.11.2025 17:51:08
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Запуск макросов кнопкой через Checkbox
 
Ну вот для приложенного примера так:
Код
Private Sub CommandButton1_Click()
    Dim oCntrl, s$
    For Each oCntrl In Me.Controls
        If TypeOf oCntrl Is MSForms.CheckBox Then
            If oCntrl.Value = True Then
                s = Replace(oCntrl.Name, "CheckBox", "")
                If Len(s) Then
                    Application.Run "Макрос" & s
                End If
            End If
        End If
    Next
End Sub

хотя лично я привык это делать либо через классы, либо хотя бы чекбоксам для обработки давать конкретные имена, чтобы отбирать только их(вдруг будут те, которые не надо использовать для подобных целей).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 522 След.
Наверх