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

Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 522 След.
Автоматическое формирование гиперссылки на файл
 
Код
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

хотя лично я привык это делать либо через классы, либо хотя бы чекбоксам для обработки давать конкретные имена, чтобы отбирать только их(вдруг будут те, которые не надо использовать для подобных целей).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
выделить диапазон ячеек на не активном листе и перевести их в значение
 
ну да, ну да. Вот почему очевидные вещи надо доказывать? :) Selection - это выделенные на активном листе ячейки. И никак иначе.
Не знаю что и как Вы там проверяли, но Вы смотрели, что Вы выделяли в этот момент? Ячейку G17? Тогда конечно, ничего не заменилось. Там ведь ничего нет.
Выделите на листе "Лист3" диапазон А13:Е14 и запустите код. И посмотрите, что станет с формулами на "Лист3".
Изменено: Дмитрий(The_Prist) Щербаков - 13.11.2025 17:36:55
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Количество праздничных дней, которые попали в периоды отпусков.
 
Код
=СУММПРОИЗВ((Праздники!A2:D15>0)*((Праздники!A2:D15>=D6)*(Праздники!A2:D15<=E6)+(Праздники!A2:D15>=G6)*(Праздники!A2:D15<=H6)))

Но с такой структурой - этого мало. У Вас там мешанина: и предпраздничные; и рабочие, с которых был перенос(я так полагаю их не надо учитывать); и перенесенные. В общем порядок бы навести, прежде чем что-то считать пытаться. Потому что неясно что из этого считать не рабочими днями и праздниками, а что рабочими выходными.
Например, 3 и 4 января(равно как 8-е марта и 9-е мая) - вроде как не рабочие дни были и они уже есть в списке праздничных. Но зачем-то еще раз записаны. Если все нерабочие дни записать подряд(можно двумя разными столбцами) - то моя формула все корректно подсчитает(конечно, если диапазоны при этом чуть подправить):
Код
=СУММПРОИЗВ((Праздники!A2:B15>0)*((Праздники!A2:B15>=D6)*(Праздники!A2:B15<=E6)+(Праздники!A2:B15>=G6)*(Праздники!A2:B15<=H6)))
Изменено: Дмитрий(The_Prist) Щербаков - 13.11.2025 16:57:15
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Условное форматирование Наборы значков неверно считает процент., не верно считает процент ? (я или комп :) )
 
Цитата
Sanja написал:
Вот можете же
могем, могем. Только не всегда обращаем внимание :)
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Как добавить подписи данных к диаграмме из другого столбика, Как добавить подписи данных к диаграмме из другого столбика
 
Делаете так: нет, не делаете. Второй ряд не заметил, так не работает.
Но путем наложения одной диаграммы на другую и задания прозрачности всем элементам, кроме подписей данных - можно сделать желаемое.
Изменено: Дмитрий(The_Prist) Щербаков - 13.11.2025 16:25:23
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Условное форматирование Наборы значков неверно считает процент., не верно считает процент ? (я или комп :) )
 
Цитата
Sanja написал:
Торопыгам-помощникам
а как тут назвать еще? Ну можно: Условное форматирование Наборы значков считает, что 67% не 67% :)
Ну или проще - там же в описании есть, думаю так и надо было назвать: Условное форматирование Наборы значков неверно считает процент.
Изменено: Дмитрий(The_Prist) Щербаков - 13.11.2025 16:12:00
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Условное форматирование Наборы значков неверно считает процент., не верно считает процент ? (я или комп :) )
 
Потому что надо знать работу инструмента. Берутся значения всех ячеек и делятся на три части(примерно 33% для каждой). В качестве минимального берется по умолчанию минимальное значение из набора, в качестве максимального - максимальное. Т.е. мин у Вас - 4%, макс - 55%. А не 0 и 100.
В правиле укажите Тип - Число, а не Процент. И там уже задайте нужные величины процентов(они сами в дробные 0,67 и 0,33 преобразуются).
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
выделить диапазон ячеек на не активном листе и перевести их в значение
 
Цитата
Deniska3 написал:
Но вроде как работает
понятно, что работает. Только на значения будет заменять не только на листе "Лист1", но и на активном среди выделенных ячеек тоже.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
выделить диапазон ячеек на не активном листе и перевести их в значение
 
Цитата
Старичок написал:
UsedRange работает только на активном листе
8-0 это не опечатка? Точно только на активном работает?
Цитата
Deniska3 написал:
ещё так сделал
а зачем так?
Цитата
Deniska3 написал:
For Each smallrng In Selection.Areas
Это ведь работа с выделенными на активном листе ячейками.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
проблемы с копированием данных
 
Проблема в том, что Вы работаете с синхронизированными в OneDrive файлами и пытаетесь перенести формулы из одного файла в другой - в этот момент создаются связи между файлами. А т.к. работаете через OneDrive - появляются ссылки на эти файлы в сети, а не локальные ссылки на книги. Кстати, даже если вставлять формулы между двумя локальными книгами - результат, который Вы хотите получить не будет достигнут, т.к. в качестве результата Вы почему-то привели формулу без ссылки на другую книгу - так копирование формул между книгами никогда не работало без сторонних надстроек.
По сути решения проблемы "по хитрому" нет, если необходима именно подобная сетевая работа с файлами.
Но если работа идет только между двумя файлами - можете попробовать следующее:
- скопировали формулы как и раньше(пусть они будут с полными ссылками, не важно);
- после копирования всех формул идете на вкладку Главная -Найти и выделить -Заменить.
- в поле найти пишите полный путь к книге до закрывающей квадратной скобки(на примере Вашего файла это будет выглядеть так: 'https://d.docs.live.net/a68c480d42dfef73/Desktop/сметы 2024/новые кс от 20.12.24/архитектура/кс по допам/[АНДР №23 от 12 марта 2024г^.xlsx])
- в поле заменить оставляете только апостроф: '
- убедитесь, что в параметрах поиска и замены установлено "Область поиска" - Формулы и снята галочка "Ячейка целиком"(Параметры - это кнопочка в правой нижней части формы поиска и замены).
- жмете Заменить все.
Должны остаться только ссылки на листы, без привязки к книгам. Но учтите - в обеих книгах листы с такими именами должны существовать.
Изменено: Дмитрий(The_Prist) Щербаков - 11.11.2025 11:34:52
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Скрывать/отображать столбцы и ячейки по нескольким условиям (макрос+кнопка), Разработать макрос по условиям с запуском по кнопке.
 
Цитата
Uncle_Cyrus написал:
задачу для ума
а что здесь есть для ума?  :sceptic:
Это просто нудная рутинная задача по написанию кода, которая затрагивает лишь опыт написания кодов. Никаких алгоритмов или финтов выдумывать не надо - тупо описанные условия на код переносить :)
Так что мимо - здесь надо ждать тех, кто хочет именно опыт наработать или кому делать больше нечего.
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
Страницы: 1 2 3 4 5 6 7 8 9 10 11 ... 522 След.
Наверх