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

Страницы: 1 2 След.
Как избавиться от гиперссылок при вводе емаил?
 
Откройте редлактор VBA, в дереве проекта найдите "ThisWorkbook/ЭтаКнига" (это объект всей книги), дважды щелкните на него и вставьте этот код в окно кода:
Код
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim cell As Range
    Dim emailPattern As String
    Dim regEx As Object
    Dim isEmail As Boolean
    
    ' Регулярное выражение для определения email
    emailPattern = "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"
    
    ' Инициализация регулярного выражения
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = emailPattern
    regEx.IgnoreCase = True
    regEx.Global = True
    
    Application.EnableEvents = False
    
    For Each cell In Target
        If Not cell.Hyperlinks.Count = 0 Then
            ' Проверяем, является ли текст ячейки email-адресом
            isEmail = regEx.Test(cell.Value)
            
            If isEmail Then
                ' Удаляем гиперссылку, но сохраняем текст
                cell.Hyperlinks.Delete
            End If
        End If
    Next cell
    
    Application.EnableEvents = True
End Sub

Если вы хотите обработать также существующие данные во всей книге, добавьте этот макрос в обычный модуль:

Код
Sub RemoveEmailHyperlinksFromAllSheets()
    Dim ws As Worksheet
    Dim cell As Range
    Dim emailPattern As String
    Dim regEx As Object
    Dim isEmail As Boolean
    
    ' Регулярное выражение для email
    emailPattern = "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"
    
    Set regEx = CreateObject("VBScript.RegExp")
    regEx.Pattern = emailPattern
    regEx.IgnoreCase = True
    regEx.Global = True
    
    Application.ScreenUpdating = False
    
    For Each ws In ThisWorkbook.Worksheets
        For Each cell In ws.UsedRange
            If Not cell.Hyperlinks.Count = 0 Then
                isEmail = regEx.Test(cell.Value)
                
                If isEmail Then
                    cell.Hyperlinks.Delete
                End If
            End If
        Next cell
    Next ws
    
    Application.ScreenUpdating = True
    MsgBox "Обработка завершена!", vbInformation
End Sub

Как использовать дополнительный макрос:

  1. Нажмите Alt + F8

  2. Выберите "RemoveEmailHyperlinksFromAllSheets"

  3. Нажмите "Выполнить"

Этот макрос пройдет по всем листам и удалит гиперссылки с email-адресов, оставляя другие ссылки нетронутым.

Изменено: Cappuccino - 19.05.2025 10:09:29
Проверка данных - Списки по условию, Проверка данных - Списки
 
Цитата
написал:
см. вложение
Ух, гениально... я по другому пытался, но чет походу некоторых тонкостей не знаю пока, выдавало странные результаты, то кого то не хватало, то вообще без результата.
Спасибо Вам еще раз  ;)

Знать бы еще откуда Вы "черпали" данные знания, книги, англоязычные профи иль еще откуда то, что бы сразу, без "воды" погрузиться в Excel`евский "омут"  :)  
Изменено: Cappuccino - 16.09.2022 11:54:32
Проверка данных - Списки по условию, Проверка данных - Списки
 
Цитата
написал:
см. вложении
Добрый человек, Ваш пример работает классно, но чет тяжко мне пока даются формулы с массивами с применением ИНДЕКС + ПОИСК + критерии.

Можете помочь еще разок, или же пояснить, как сделать так, чтобы ваша формула в определённом имени "спис", работала когда в правой таблице начнут появляться новые строки/данные о руководителях которые могут подписывать док-ты?

Вручную расширить диапазон, эт конечно можно, а есть вариант как то автоматом это делать?
Иль тут уже без VBA не обойтись?
Изменено: Cappuccino - 16.09.2022 00:03:27 (Дополнение)
Проверка данных - Списки по условию, Проверка данных - Списки
 
Цитата
написал:
см. вложение
Во, спасибо огромное =)  :)
даже и не подумал, что ИНДЕКС можно и в "определенное имя" кинуть... Возьму на вооружение  :idea:  
Проверка данных - Списки по условию, Проверка данных - Списки
 
Jack Famous, в том то и дело, что сначала посмотрел, а потом только написал.

У меня зависимость выпадающего списка должна быть от диапазона
0-50000 руб - список тех у кого есть документ на получение ТМЦ на такую сумму,
от 200000 руб и выше - список рук-лей уже другой...

А то что в статье, показывает как на основании категории(точной, без диапазона) показать зависимую под категорию.


Цитата
написал:
поправил границы.
Вы конечно меня извините, но чет "въехать не могу" где список выпадающий в ячейках руководителей?
Вручную не пойдет заполнение. Меня то как раз интересует формула написанная в:
Проверка данных - Списки по условию, Проверка данных - Списки
 
Цитата
написал:
Проверяйте
Возможно я плохо объяснил, прошу прощения, должно быть примерно так как на скрине:


Используем Проверка данных -> Тип данных -> Список
Список должен формироваться по условию.

Подписант документа, в нашем случае доверенности, должен сам иметь доверенность на подписание документа определенной суммы.
Если по условию он не проходит, то и в списке не указывается.
Проверка данных - Списки по условию, Проверка данных - Списки
 
Добрый день.

Помогите пожалуйста, с Проверкой данных - Списки... нужно создать список по условию.
Условие заключается в том, что нужно вывести список Рук-лей у которых есть доверенность на определенную сумму,
то есть если у рук-ля есть доверенность на подписание док-тов на сумму не более 50к, то подписать выдачу доверенности на сумму свыше 50к он не может
и выводится в списке руководителей он не будет.

Тестовый пример приложен к Теме.

Есть ограничение, Office 2007. В более свежих редакциях есть ФИЛЬТР и СОРТ, там все понятно как реализовать.
Фильтр добавляет автоматом пустую строку - БАГ, После каждой фильрации, добавляется пустая строка
 
Цитата
написал:
А ничего, что у Вас теперь вместо суммы отфильтрованных ячеек формула выдает сумму всех ячеек. Попробуйте использовать СТРОКУ ИТОГОВ
Чего то не понял про какую сумму всех ячеек идет речь...
Если добавить СТРОКУ ИТОГОВ как вы показали на скриншоте, то добавится строка внизу таблицы, вот только зачем она там? нельзя суммировать кол-во отпущенных разных позиций....
В моем столбце справа, выдается сумма потраченных материалов по месяцам за год )
Да и проблема изначально была в добавлении пустрой строки из-за ПРОМЕЖУТОЧНЫЕ.ИТОГИ.
На данный момент решение найдено.
Изменено: Cappuccino - 02.03.2022 16:19:59
Фильтр добавляет автоматом пустую строку - БАГ, После каждой фильрации, добавляется пустая строка
 
Короче, нашел в чем проблема (методом перебора)... Функция Промежуточные.Итоги, что то очень коряво работает с умной таблицей, поменял последний столбец на обычную Сумму, перевыставил фильтр и вуаля, заработало и не добавлят лишних строк...
Изменено: Cappuccino - 02.03.2022 16:14:58
Фильтр добавляет автоматом пустую строку - БАГ, После каждой фильрации, добавляется пустая строка
 
Добрый день.
Кто нибудь сталкивался с таким чудом?:

В приложенном файле, три листа
InOutCMV - Лист с движением (Прием-Отпуск)
ОборотыСклада - ну тут понятно
ProductDirectory - Тут собственно перечень материалов и колонка с остатками на данный момент

Весь трабл происходит на Листе ОборотыСклада
Берем фильтр за Февраль и убираем все строки с 0 и получаем список с пустой строкой вконце, если очитстить фильтр и повторить, то строк пустыуже будет 2 штуки,
если еще повторим, то уже 3 стороки и так далее  :(

Пробовал в Microsoft Office 2007 и 2013, там и там фильтр странно работает, дома же в офисе 2021 фильтр работает нормально  8-0

Подскажите пожалуйста, как сделать так что бы фильтр отрабатывал как нужно и не показывал пустых строк....
Копирование динамического диапозона данных формы и вставка в таблицу учета
 
Добрый день форумчане...
Пытаюсь по маленьку осмыслить VBA в excel по методу практического применения  :D , но нужна помощь спецов, так как немного не понятны некоторые вещи.

Файлик прикрепил, для примера (Необходимо чтобы было следующее):
  • На листе "ФормаВвода", вводится требование, затем по нажатию кнопки "Ввод" копируем данные требования в таблицу на лист "Учет Приход_Расход".
  • Лист "ФормаВвода", справа от ввода сделал временную таблицу (tblTempTransfer) с которой копипастим в основную таблицу учета....
  • Кол-во наименований товаров может варьироваться от 1 до 9, их необходимо вставить в конец основной таблицы учета Приход_Расход (без пустых строк).
  • Пробовал находить последнию используемую строку в tblTempTransfer и копипастить, но чет ошибок понаделал прям "мама не горюй =)"
  • Да и по хорошему, как бы обойтись без временной таблички на форме ввода и сразу копипастить в Приход_Расход?

Потом есть вопрос: запросы к данным через Worksheets это конечно хорошо, но не практично в смысле того, что имя Листа может и измениться, видел что можно попробовать использовать ListObjects, обратиться по имени таблицы - как бы это грамотно сделать? реализовать на примере файла получится?
Автоматическое создание номера документа по условиям
 
Цитата
buchlotnik написал:
ну можно и оставить, наверное, только как отличить два документа одного типа в одну дату? если номера нужны в хронологии, можно так:
тут да... вопрос про отличие спорный... ) Ваша реализация интересная, я уж было подумывал о БД в Excel`е (Создание базы данных в Excel)...  
Автоматическое создание номера документа по условиям
 
да я в плане использованных функций ))) чтоб самому знать =)
Автоматическое создание номера документа по условиям
 
Михаил Л,блин сколько людей, столько и вариантов разновидности формул для решения данной задачи...
Спасибо большое за Ваш вариант решения. "Пошаманю".  ;)  
Автоматическое создание номера документа по условиям
 
Цитата
buchlotnik написал:
намёк:
спасибо... оригинально... изучу ваш вариант... жаль вот ток сортировку по дате нужно будет категорически исключить, а то присвоится документу уже не тот номер
Автоматическое создание номера документа по условиям
 
Цитата
msi2102 написал:
Посмотрите  ЗДЕСЬ  была подобная тема.
спасибо про те функции подробнее почитаю )
Изменено: Cappuccino - 24.07.2020 08:53:20 (не дописал)
Автоматическое создание номера документа по условиям
 
Хотя бы просто намекните сочетание каких функций стоит глянуть...
Автоматическое создание номера документа по условиям
 
Добрый день, форумчане, прошу помощи, так как сам еще с массивами в excel`e не особо опытный.

Помогите пожалуйста с данной темой:
Необходимо при заполнении Даты составления и Типа документа создать УНД (Уникальный Номер Документа).

Разбор УНД:  Примером возьмем данный номер 49с/0720-001
  • 49 - Номер подразделения
  • с - Первая строчная буква названия Типа документа
  • / - разделение для читаемости
  • 07 - месяц документа
  • 20 - год документа
  • - разделение для читаемости
  • 001 - номер документа
Проблема у меня состоит вот в чем, ладно если бы все доки шли по порядку, но вот ведь есть такая необходимость в текущем месяце зарегистрировать документ задним числом (предыдущем месяцем) и тут начинаются траблы ))) у меня проверка УНД идет по предыдущему номеру и при совпадении месяца с годом к номеру идет +1 (в новых условиях я не учитывал букву Типа документа - хотя и ее нужно учитывать), а тут получается нужно прошерстить весь столбец на нахождение одинакового начала, примером 49с/0720, найти в столбце УНД массив данных с удовлетворяющим условием, выбрать номер документа, пример: 017, значение которого явлется максимальным и сделать +1.
В номере после последнего числа >0 добавить символ
 
Сергей Беляев,спасибо
В номере после последнего числа >0 добавить символ
 
V, формула, это конечно хорошо ) спс, но вот ток дело в том, что процесс нужно автоматизировать, дабы не создавать лишний столбец, а потом его удалять.
Интересует возможность реализации макросом...
В номере после последнего числа >0 добавить символ
 
В Exel`евских макросах не особо шарю:

Есть таблица с колонкой Номенклатурных номеров A2-A327, формат их записи такой:
07012400000000000000
07010118000000000000
07010000111000000000
07011512000000000000
07010000100000000000
Как в номенклатурный номер после последней цифры >0 добавить символ "_" (нижнего подчеркивания) и автоматом удалить последний "0"?
Макрос нужно чтобы работал от A2-A327.

Направьте на путь истинный))

Пример столбца, над которым нужно произвести сиё действие прикладываю.
Переменная в адресе для ДВССЫЛ
 
Сергей, не подскажите, а есть ли более оптимизированный вариант позволяющий выбрать с листа БД.01.02.2019 отсутствующие позиции при сравнении с листом Опись...  
Переменная в адресе для ДВССЫЛ
 
Сергей,спс оно самое, пашет )
Переменная в адресе для ДВССЫЛ
 
Юрий М, либо если есть другой способ, другой вид формулы, более оптимальный, позволяющий выбрать с листа БД.01.02.2019 отсутствующие позиции при сравнении с листом Опись,
но учитывая что в листе Опись Н/н укорочены, а в листе БД.01.02.2019 они 20ти значные.
+ бонусом, чтобы не было совпадений при нахождении таких номеров как 07212612 и 07212612101, каждая позиция уникальна.  
Изменено: Cappuccino - 08.02.2019 15:15:44
Переменная в адресе для ДВССЫЛ
 
Юрий М, Лист НетНаСкладе, ячейка B7
фрагмент формулы ЛЕВСИМВ(Опись!$C$5:$C$400&ПОВТОР(0;20)
знач.400 нужно заменить на ячейку D3
Переменная в адресе для ДВССЫЛ
 
Сергей,если коротко, данная "корявая" формула, уж как смог, ссори не ПРОФИ, делает сравнение ОписиФактическогоНаличияТаблицы с ТаблицейБД и делает список отсутствующих позиций на складе.
Номенклат.номера 20ти значные.
Переменная в адресе для ДВССЫЛ
 
БМВ, ссори, исправлюсь... просто "горит" (
Переменная в адресе для ДВССЫЛ
 
Сергей, это я урезал полную формулу... вот полный вариант

=ОбрезатьПоследниеНули(ЕСЛИОШИБКА(ИНДЕКС(ДВССЫЛ("'" & F$4 & "'!A:A");НАИМЕНЬШИЙ(ЕСЛИ(ЕЧИСЛО(ПОИСКПОЗ(ДВССЫЛ("'" & F$4 & "'!$A$2:$A$" & $D$4 & "");ЛЕВСИМВ(Опись!$C$5:$C$400&ПОВТОР(0;20);20);))=ЛОЖЬ;СТРОКА(ДВССЫЛ("'" & F$4 & "'!$A$2:$A$" & $D$4 & "")));СТРОКА($B1)));""))
Переменная в адресе для ДВССЫЛ
 
Дело вот в чем, есть вот такие формулы в первом варианте все работает гуд, а во втором ругается на "Ошибка в формул"...
Подскажите плиз, что я упустил?

1. Рабочий вариант:      

Ориг: ДВССЫЛ("'" & F$4 & "'!$A$2:$A$500")

Заменил на: ДВССЫЛ("'" & F$4 & "'!$A$2:$A$" & $D$4 & "")

2. Не рабочий вариант:      
Ориг:            Опись!$C$5:$C$400&ПОВТОР(0;20)
Заменил на:  Опись!$C$5:$C$" & $D$3 & "&ПОВТОР(0;20)
Изменено: Cappuccino - 08.02.2019 15:20:31
Как подтянуть данные из другой книги не открывая ее?
 
Казанский, спс за прямую наводку...
Страницы: 1 2 След.
Наверх