Маска поиска в excel это

Рассмотрим применение подстановочных знаков в Excel (символы звездочки «*», тильды «~» и вопросительного знака «?») и их использование при поиске и замене текстовых значений.


Приветствую всех, дорогие читатели блога TutorExcel.Ru.

В начале предлагаю вспомнить определение подстановочных знаков и понять, что же это такое и для каких целей они применяются в Excel. А затем уже разберем применение на конкретных примерах.
Подстановочные знаки — это специальные символы, которые могут принимать вид любого произвольного количества символов, другими словами, являются определенными масками комбинаций символов.
Всего в Excel есть 3 типа подобных знаков:

  • * (звездочка); Обозначает любое произвольное количество символов.
    Например, поиск по фразе «*ник» найдет слова типа «понедельник», «всадник», «источник» и т.д.
  • ? (вопросительный знак); Обозначает один произвольный символ.
    К примеру, поиск по фразе «ст?л» найдет «стол», «стул» и т.д.
  • ~ (тильда) с последующими знаками *, ? или ~. Обозначает конкретный символ *, ? или ~.
    Например, поиск по фразе «хор*» найдет все фразы начинающиеся на «хор» («хоровод», «хорошо» и т.д.). Поэтому для точного поиска «хор*» нужно использовать символ «~» и искать по фразе «хор~*». Наличие «~» гарантирует, что Excel прочитает следующий символ как текст, а не как подстановочный знак.

Использование таких спецсимволов может быть полезно при фильтрации данных, для сравнения текста, при поиске и замене текстовых значений. Давайте подробно остановимся на каждом из основных вариантов применения.

Фильтрация данных

Рассмотрим пример. Предположим, что у нас имеется список сотрудников компании и мы хотим отфильтровать только тех сотрудников, у которых фамилии начинаются на конкретную букву (к примеру, на букву «п»):

Список сотрудников
Для начала добавляем фильтр на таблицу (выбираем вкладку Главная -> Редактирование -> Сортировка и фильтр или нажимаем сочетание клавиш Ctrl + Shift + L).
Для фильтрации списка воспользуемся символом звездочки, а именно введем в поле для поиска «п*» (т.е. фамилия начинается на букву «п», после чего идет произвольный текст):

Применение фильтра
Фильтр определил 3 фамилии удовлетворяющих критерию (начинающиеся с буквы «п»), нажимаем ОК и получаем итоговый список из подходящих фамилий:

Фильтрация данных
В общем случае при фильтрации данных мы можем использовать абсолютно любые критерии, никак не ограничивая себя в выборе маски поиска (произвольный текст, различные словоформы, числа и т.д.).
К примеру, чтобы показать все варианты фамилий, которые начинаются на букву «к» и содержат букву «в», то применим фильтр «к*в*» (т.е. фраза начинается на «к», затем идет произвольный текст, потом «в», а затем еще раз произвольный текст).
Или поиск по «п?т*» найдет фамилии с первой буквой «п» и третьей буквой «т» (т.е. фраза начинается на «п», затем идет один произвольный символ, затем «т», и в конце опять произвольный текст).

Применение в функциях

Как уже говорилось выше, подстановочные знаки в Excel могут использоваться в качестве критерия при сравнении текста в различных функциях Excel (например, СЧЁТЕСЛИ, СУММЕСЛИ, СУММЕСЛИМН, ГПР, ВПР и другие).

Повторим задачу из предыдущего примера и подсчитаем количество сотрудников компании, фамилии которых начинаются на букву «п».
Воспользуемся функцией СЧЁТЕСЛИ, которая позволяет посчитать количество ячеек соответствующих указанному критерию.
В качестве диапазона данных укажем диапазон с сотрудниками (A2:A20), а в качестве критерия укажем запись «п*» (т.е. любая фраза начинающаяся на букву «п»):

Сравнение текста
Как и в первом примере, в результате мы получили ровно 3 фамилии.

Однако не все функции поддерживают применение подстановочных знаков. Некоторые из них (к примеру, функция НАЙТИ) любой символ воспринимают как текст, даже несмотря на то, что он может быть служебным.
С помощью функции НАЙТИ найдем в тексте позицию вхождения вопросительного знака и звездочки:

Функция НАЙТИ
Обратным примером служит аналогичная функция ПОИСК, в которой мы должно четко указать что ищем именно служебный символ:

Функция ПОИСК
Как видим результат у функций получился одинаковым, однако обращение к подстановочным знакам разное.

Инструмент «Найти и заменить»

Подстановочные знаки в Excel также можно использовать для поиска и замены текстовых значений в инструменте «Найти и заменить» (комбинация клавиш Ctrl + F для поиска и Ctrl + H для замены).

Рассмотрим пример. Имеется список продукции магазина, в котором нам нужно найти продукт «молоко».
Предположим, что при вводе данных сделали ошибки из-за чего в списке появились продукты «малоко».

Чтобы несколько раз не искать данные по словам «молоко» или «малоко», при поиске воспользуемся критерием «м?локо» (т.е. вторая буква — произвольная):

Инструмент "Найти и заменить"
При этом не стоит забывать, что с помощью данного инструмента можно не только искать текст, но и заменять его (к примеру, заменить «м?локо» на «молоко»).

Практически наверняка каждый сталкивался со следующей ситуацией — в тексте присутствует символ звездочки, который необходимо удалить или заменить на какой-либо другой текст.
Однако при попытке заменить звездочку возникают трудности — при замене меняются абсолютно весь текст, что естественно и логично, так как Excel воспринимает символ «*» как любой произвольный текст.
Но мы теперь уже знаем как с этим бороться, поэтому в поле Найти указываем текст «~*» (явно показываем, что звездочка является специальным символом), а в поле Заменить на указываем на что заменяем звездочку, либо оставляем поле пустым, если хотим удалить звездочку:

Удаление звездочки
Аналогичная ситуация и при замене или удалении вопросительного знака и тильды.
Производя замену «~?» (для тильды — «~~») мы также без проблем сможем заменить или удалить спецсимвол.

Удачи вам и до скорых встреч на страницах блога Tutorexcel.ru

Поделиться с друзьями:
Поиск по сайту:

Поиск или замена текста и чисел на листе

​Смотрите также​​ или строки; замена​ If myArr(j, i)​ вам нужно из​ из txt буду​Sanja​ переменную «iKey «​ Not delRng Is​ For i =​lion9​ в скобках ToAbsolute​ нужные участки, а​ менять. От этого​ найти слово или​все, щелкнув заголовок​ вкладке​ слова «год» и​Примечание:​ идет по всему​ Like iText(x) Then​ текстового файла загрузить​

​ удалять их вашим​: Одну строку упустил​ (с пробелом) потом​ Nothing Then Set​ 0 To UBound(iText)​: Спасибо огромное! Работает.​

  1. ​ — константа из​​ если столбцов >26,​​ зависит формула для​​ фразу и заменить​​ столбца.​​Поиск​​ «город».​

    Изображение ленты Excel

  2. ​ Мы стараемся как можно​ листу или даже​

    • ​ newArr(k, i) =​ 1.5 млн строк​​ макросом )​​Между 27 и​

    • ​ задатьНет.​ delRng = Union(delRng,​ Set iRange =​​ Буду думать, как​​ перечисления Excel.XlReferenceType: xlAbsolute​

  3. ​ то не только​​ замены!​​ их.​Чтобы заменить текст или​; на вкладке «​Вопросительный знак заменяет один​​ оперативнее обеспечивать вас​​ книги. Как настроить​ myArr(j, i) k​ и при загрузке​

    ​Может кто то​ 28. Должно быть​Marat_Mamedov​ cl) Else Set​ Range(«A:B»).Find(What:=iText(i), LookIn:=xlFormulas, Lookat:=xlPart)​

    • ​ третьего контрагента добавить​ = 1, xlAbsRowRelColumn​ алфавит.​​Digitalizer​​На вкладке​ числа, введите знаки​Заменить​

    • ​ любой знак. Например,​ актуальными справочными материалами​ поиск и замену​​ = k +​​ их отфильтровать по​ сталкивался с подобной​ такСкрытый текст Sub​

      ​: Что то он​​ delRng = cl​ If Not iRange​ таким путём.​ = 2, xlRelRowAbsColumn​Manyasha​: Добрый день!​​Главная​​ для замены в​» доступны только​ если ввести​​ на вашем языке.​​ ТОЛЬКО в выделенном​

  4. ​ 1 End If​​ одному столбцу по​​ задачей — «умный​ Макрос2() Dim iText,​ не работает.​

    • ​ End If flag​ Is Nothing Then​lion9​ = 3, xlRelative​​:​​В файле приведен​​нажмите кнопку​​ поле​​формулы​​г?д​

    • ​ Эта страница переведена​ столбце/строке? Например, в​ Next Next Next​​ небольшому списку ключей?​​ экспорт данных из​​ iKey, iTemp, i&,​​Нечего не происходит,​​ = False End​​ Do iRange.Delete Shift:=xlShiftUp​

    • ​: Спасибо огромное! Работает.​ = 4.​Digitalizer​​ перечень дат с​​Заменить​​Заменить на​​.​​, то будут найдены​​ автоматически, поэтому ее​​ OPEN OFFICE Эта​​ ‘для замены ‘на​

      ​Если так, то​​ txt» что бы​​ flag As Boolean​​ прикрепил файл в​​ If Next If​​ Set iRange =​​ Буду думать, как​​Digitalizer​, я правильно поняла,​​ заданной формулой. От​​.​​(или оставьте это​​Для поиска данных с​​ слова «гад», «гид»​​ текст может содержать​

    • ​ функция есть.​ месте’, замените D1​ вот вам вариант​​ перебрать текстовый файл​​ Dim myRng As​

    • ​ котором использовал код​ Not delRng Is​ Range(«A:B»).Find(What:=iText(i), _ LookIn:=xlFormulas,​​ третьего контрагента добавить​​: Gustav а как​​ что Вам просто​​ столбца к столбцу​

  5. ​Кроме того, можно​ поле пустым, чтобы​ учетом регистра установите​ и «год».​​ неточности и грамматические​​Pelena​ на A1 Range(«D1»).Resize(UBound(newArr,​ на Power Query.​​ по условию (​​ Range, cl As​

    ​ от «» но​​ Nothing Then delRng.Delete​ Lookat:=xlPart) Loop Until​ таким путём.{/post}{/quote}​ быть если помимо​​ нужно формулы во​​ меняются только ссылки​ нажать клавиши CTRL+H.​ ничем не заменять​ флажок​Совет:​​ ошибки. Для нас​​: По-моему, во всех​​ 1), UBound(newArr, 2))​​Разархивируйте 2 файла​ в моем случаи​ Range, delRng As​

  6. ​ после нажатия выполнить​ Shift:=xlShiftUp MsgBox «ненужные​

    • ​ iRange Is Nothing​=ИЛИ(ЕСЛИ(ЕОШ(НАЙТИ(«Турция»;E7));»Израиль»;»Турция»);ЕСЛИ(ЕОШ(НАЙТИ(«Египет»;E7));»Израиль»;»Египет»))​​ приведенных в формуле​​ второй строке привязать​​ на ячейки с​​В поле​

      ​ знаки), а затем​​Учитывать регистр​​ Звездочки, знак вопроса и​​ важно, чтобы эта​ версиях НАЙТИ/ЗАМЕНИТЬ работает​ = newArr MsgBox​ на С:test​ строка начинается и​ Range Dim dic​ макрос не чего​​ строки удалены!», 64,​​ End If Next​С вложением в​

    • ​ столбцов так же​ к первой, чтобы​ датами (например B1​Найти​​ нажмите кнопку​​.​ символы тильда (~)​ статья была вам​ по выделенному диапазону,​ «ненужные строки удалены!»,​​На листе Настройки​​ перечень условий )​​ As Object iText​​ не произошло (ячейки​

      ​ «конец» End Sub​​ i MsgBox «ненужные​​ функцию тоже не​​ заданы дополнительные параметры,​​ при протягивании вниз​​ и C1; следующая​

      ​введите искомые слово​Найти далее​Для поиска ячеек, содержащих​

  7. ​ можно найти в​ полезна. Просим вас​ а если активна​ 64, «конец» End​​ в смарт-таблицу забиваете​​ если строка начинается​​ = Array(«Анат», «Уру»,​​ не удалилсь)​

Советы

  • ​Jack Famous​ строки удалены!», 64,​ выходит :( Буду​ и если применить​ B1 не превращалось​ C1 и D1;​ или фразу.​или​ только символы, введенные​ данных листа перед​ уделить пару секунд​ только одна ячейка,​ Sub​​ ключи, по которым​​ на указанные условия​​ «Инокен») ‘список слов​​Ожидалось что удалятся​​: Sanja For i​​ «конец» End SubДанный​ благодарен тому, кто​ макрос то выдает​​ в B2?​​ и т.д.).​​В поле​​Найти все​

  • ​ в поле​ их с тильда​ и сообщить, помогла​ то по всему​Marat_Mamedov​

support.office.com

Поиск и замена текста

​ нужно фильтровать импортируемый​ только их и​ на удаление Set​ все ячейки в​ = 0 To​

  1. ​ макрос удаляет все​​ подскажет — де​​#ЗНАЧ!​​Если да, то​​Как можно добавить​
    ​Заменить на​.​

    Заменить

  2. ​Найти​​ в поле​​ ли она вам,​ листу​

  3. ​: Проста супеер !​​ список. На листе​​ забрать из текстовго​

  4. ​ dic = CreateObject(«Scripting.Dictionary»)​​ диапазоне A:B которые​​ UBound(iText) iTemp =​ ячейки в диапазоне​ я ошибаюсь?​

  5. ​Пример:​​ так попробуйте:​​ массово знак ‘$’​введите новый текст.​Примечание:​, установите флажок​​Найти​​ с помощью кнопок​

​Гиперссыльный​​ Спасибо всем огромное!​ Результат щелкаете правой​ файла​ For i =​​ не начинаются на​​ dic(iText(i)) Nextобъясните пожалуйста​​ которые начинаются на​​MCH​С учетом регистра

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММПРОИЗВ((Base!$A$2:$A$999=Лист1!$A$2)*(Base!$M$2:$M$999>=Лист1!L1)*(Base!$M$2:$M$999 — макрос не​​1. В ячейке​ перед буквой столбца​Нажимайте кнопку​​ Если поле​ Кнопка ​Ячейка целиком​

support.office.com

Массовая замена значений в excel по маске

​. Например, чтобы найти​ внизу страницы. Для​
​: Я сделал фото​Power Query -​
​ кнопкой также по​
​Sanja​ 0 To UBound(iText)​
​ Анат или Уру​

​ — это наполнение​​ 05056280 или 06056280​
​: У Вас всегда​ работает, выдает​
​ В2 выделите часть​

​ и после нее,​​Найти далее​Заменить на​.​ данные, которые содержат​ удобства также приводим​ Print screen-ом, нигде​ для меня новинка​ смарт-таблице и нажимаете​: Будьте готовы к​

Массовая замена значений в ячейках (Иное/Other)

​ iTemp = dic(iText(i))​​ или Инокен​
​ словаря?​ или 01056280 ,​ так обозначаются контейнеры​#ЗНАЧ!​ формулы B1 и​ и для последующих​, пока не перейдете​недоступно, откройте вкладку​Если вы хотите найти​ «?», вы введите​
​ ссылку на оригинал​ нет опции «​ разбираюсь как он​ обновить. Скрипт вытащит​ тормозам. Если не​ Next Set myRng​Код из примера​И что такое​ подскажите как его​
​ (номер, пробел, страна)?​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММПРОИЗВ((Base!$M$2:$M$999>=Лист1!B1)*(Base!$M$2:$M$999​ нажмите 2 раза​ столбцов аналогично. например​ к вхождению, которое​Заменить​ текст или числа​​~?​​ (на английском языке).​ заменить в выделенной​​ работает, крутая штука​​ из текста только​ актуально форматирование на​ = Intersect(Range(«A:B»), ActiveSheet.UsedRange)​Sub Макрос2() Dim​
​ «flag» — встречался​ модернизировать что бы​»1239420938 Турция»​Gustav​ F4. Должно получиться​ $B$1 и $C$1​

​ вы хотите изменить.​​.​

​ с определенным форматированием,​​как критерии поиска.​Функции поиска и замены​ области»!​ (компания подарила офис​
​ значения подходящие под​ листе, то можно​ flag = False​ iText, iKey, iTemp,​
​ с этими «флагами»,​​ удалили все кроме​​»1239420938 Израиль»​​: Не знаю, у​​ B$1. C C1​

​ одновременно с $D$1​​Нажмите кнопку​При необходимости поиск можно​ нажмите кнопку​Нажмите кнопку​ в Excel используются​Гиперссыльный​ 365 — а​

​ описанное вами условие.​​ переделать на массивах/словарях​​ For Each cl​​ i&, flag As​ но до конца​ 05056280 и 06056280​если да, то​ меня всё работает.​ — аналогично​ и $E$1.​Заменить​
​ отменить, нажав клавишу​Формат​
​Параметры​ для поиска в​:​ я еще в​Если будет образец​Marat_Mamedov​ In myRng For​
​ Boolean Dim myRng​ не понял)) и​ и 01056280 (указать​
​ подойдет формула:​
​ Ввожу Ваши формулы,​
​2. Протяните формулу​Второй вопрос: путем​
​. Чтобы обновить все​ ESC.​и выберите нужные​, чтобы определить дополнительные​
​ книге необходимой информации,​
​Pelena​

​ 2007-2010 завис.) прогресс​​ текстового файла с​​: Программа не выдержала​​ Each iKey In​​ As Range, cl​ If cl.Value Like​ в макросе те​

​=ПСТР(E7;ПОИСК(» «;E7&» «)+1;99)​​ выделяю ячейки, запускаю​
​ в В2 на​ функцией «замена» -​ вхождения, не останавливаясь​Чтобы заменить одно или​
​ параметры в диалоговом​
​ условия поиска при​ например определенного числа​: Дык, Excel по​
​ не стоит на​ парой строк -​

​ , вылет. Подскажите​​ dic.Keys If cl.Value​ As Range, delRng​ «*» & iKey​
​ которые нужно оставить​
​Если список стан​ макрос, после макроса​
​ нужный диапазон.​

​ как сделать массовую​ на каждом из​ все совпадения с​ окне​ необходимости:​ или текстовой строки.​ умолчанию так работает:​ месте​

​ смогу подогнать скрипт​​ о чем речь​ Like «*» &​ As Range Dim​ & «*» Then​ а не удалить​ ограничен, и нужно​ имею в ячейках​​Ну или макрос:​
​ замену с добавлением​
​ них, нажмите кнопку​ введенным текстом, нажмите​​Найти формат​
​Для поиска данных на​

​На вкладке​​ если выделен диапазон,​Макрос автора -​ под него.​ не совсем понимаю.​ iKey & "*"​ dic As Object​ - это, чтобы​
​ т.к. оставить нужно​
​ найти название страны,​ абсолютные формулы:​200?'200px':''+(this.scrollHeight+5)+'px');">Sub replaceRef()​ знака '$'? Т.е.​Заменить все​ кнопку​.​ листе или во​

excelworld.ru

Использование поиска по маске в функции ЕСЛИ

​Главная​​ ищет по нему,​ отработал программа не​Ну и эта,​Jack Famous​

​ Then flag =​

​ iText = Array(«Анат*»,​

​ можно было переменную​

​ порядка 10 масок​ находящееся в любом​200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММПРОИЗВ((Base!$A$2:$A$999=Лист1!$A$2)*(Base!$M$2:$M$999>=Лист1!$L$1)*(Base!$M$2:$M$999​For i =​ скажем задаем такой​

​.​

​Заменить​Совет:​ всей книге выберите​в группе​ если не выделен,​ вылетела.​ если даже по​: тупанул малях))) точно​ True Exit For​ «Уру*», «Инокен*») ‘список​

​ «iKey » (с​​ а удалить намного​

​ месте текстовой страны,​

​Код200?’200px’:»+(this.scrollHeight+5)+’px’);»>=СУММПРОИЗВ((Base!$M$2:$M$999>=Лист1!$B$1)*(Base!$M$2:$M$999 Может, в​​ 65 To 90​ параметр​Совет:​или​

​ Чтобы найти ячейки, точно​​ в поле​Редактирование​ то ищет по​В excel в ячейках​

​ форуме по-копаться, уверен,​

​ — это ж​ End If If​ слов на удаление​ пробелом) потом задать​ больше и количество​ то можно использовать​

​ обрабатываемых этими формулами​​Selection.Replace Chr(i) &​%​ Чтобы найти только вхождения​
​Заменить все​
​ соответствующие определенному формату,​

​Искать​нажмите кнопку​
​ всему листу​

​ столбца указаны промежутки​ что можно найти​ как​ flag Then Exit​ Set dic =​ — в случае​ масок вырастает)​
​ формулу:​

​ ячейках какие-то проблемы,​​ 1, «$» &​

​1 и заменяем на​​ в верхнем или​.​ можно удалить все​вариант​Найти и выделить​Гиперссыльный​ времени в таком​ варианты решения вашей​»cl»​

​ For Next If​​ CreateObject(«Scripting.Dictionary») For i​
​ необходимости?​

​Sanja​​=ПРОСМОТР(2;1/ЕЧИСЛО(ПОИСК({«Турция»:»Израиль»:»Египет»};E7));{«Турция»:»Израиль»:»Египет»})​

planetaexcel.ru

Удаление ячеек по маске

​ какие-нибудь «левые» значения?​​ Chr(i) & «$»​
​ $​ нижнем регистре, нажмите​Microsoft Excel сохраняет параметры​ условия в поле​на листе​
​.​: Просто, я пытался​ виде:​ задачи и на​для​ Not flag Then​ = 0 To​SAS888​: Проверьте Sub Макрос2()​MCH​ Тяжело лечить по​ & 1, xlPart​%​ кнопку​ форматирования, которые можно​Найти​или​Выполните одно из указанных​ сделать как вы​10.00-12.00​ VBA и на​»For each cl in​ If Not delRng​ UBound(iText) iTemp =​: —————————————————-​ Dim iText, iKey,​: очепятка: «…текстовой строки»​ переписке, не видя​Next i​$1. соответственно ко всем​Больше​ определить. Если вы​, а затем выбрать​в книге​ ниже действий.​ говорите: выделил столбец,​11.00-14.00​ SQL. Только как​ rng»​ Is Nothing Then​

​ dic(iText(i)) Next Set​​Sanja​ iTemp, i&, flag​lion9​ «пациента» (файла-примера с​End Sub​ буквам столбцов (до​и установите флажок​ еще раз выполнить​ ячейку с нужным​.​Чтобы найти текст или​ вызвал функцию «найти​и т. п.​ описано в правилах,​спасибо большое!!!​ Set delRng =​ myRng = Intersect(Range(«A:B»),​: Для Jack Famous,​ As Boolean Dim​: Просто офигенно! Спасибо​ этими формулами)…​Срабатывает​ и после) добавляется​Учитывать регистр​ поиск на листе​ форматированием в качестве​Для поиска данных в​ числа, выберите пункт​ и заменить», пытался​Мне нужно поменять​ ищите не вариант​Sanja​ Union(delRng, cl) Else​ ActiveSheet.UsedRange) flag =​Это способ наполнения​ myRng As Range,​ огромное. Функция вообще​lion9​на выделенном диапазоне​ знак ‘$’.​.​ данные и не​ примера. Щелкните стрелку​ строках или столбцах​

​Найти​​ заменить, а он​ формат на следующий:​ решения, который вам​: Можно забирать все​ Set delRng =​ False For Each​
​ словаря уникальными ключами,​ cl As Range,​ ничего не говорит​: Есть таблица со​и​Эта процедура необходима​Совет.​ удается найти символы,​ рядом с кнопкой​ выберите в поле​.​ падла заменяет во​с 10 до 12​ кажется правильным, а​

​ данные в память,​​ cl End If​

​ cl In myRng​​ с пустыми значениями,​
​ delRng As Range​ — никогда ничего​ списком, содержащим в​ищет только​
​ для автоматизации и​Видео не на​ которые вы знаете​Формат​Просматривать​Чтобы найти и заменить​ всем листе, игнорируя​с 11 до 14​ конкретно решение вашей​ обрабатывать (удалять/добавлять/изменять) их​
​ flag = False​ For Each iKey​ без генерации ошибки​ Dim dic As​ подобного не видел​ ячейках номера контейнеров​где вместо знака %​ ухода от ручного​ вашем языке? Попробуйте​ содержал сведения, может​, выберите пункт​вариант​ текст или числа,​ выделенный фрагмент. Чувствую​Пробую сделать это​ изначальной задачи.​

​ в памяти и​​ End If flag​ In dic.Keys If​
​В принципе, в​ Object iText =​ — полез по​ и страну, вида:​ — буквы от​ проставления знака ‘$’​ выбрать​ потребоваться снимите нужные​
​Выбрать формат из ячейки​по строкам​ выберите пункт​ себя полным идиотом​ через поиск и​Sanja​
​ ЗАМЕНЯТЬ новыми данными​
​ = False Next​ cl.Value Like «*»​ данном коде, применение​ Array(«05056280», «06056280», «01056280»)​ мануалам разбираться -​1239420938 Турция​ A до Z.​ к каждой букве​Скрытые субтитры​ параметры форматирования из​, а затем щелкните​или​Заменить​ (((​ замену. Старый формат​: Sub Макрос2() Dim​ старые на листе,​ If Not delRng​ & iKey &​ словаря просто дань​ ‘список слов на​ как же она​или​Digitalizer​ столбца.​.​ предыдущего поиска. В​ ячейку с форматированием,​по столбцам​.​Pelena​ времени находится, если​ iText, i&, k&,​ но при этом​ Is Nothing Then​ «*» Then flag​ моде. Т.к. в​ удаление Set dic​ работает-то хоть :)​1239420938 Израиль​: Nic70y​Nic70y​Нужно массово заменить значения​ диалоговом окне​

​ которое требуется найти.​​.​:)
​В поле​: Приложите файл и​ в графе поиска​ myArr(), newArr() On​ будет утеряно форматирование​ delRng.Delete Shift:=xlShiftUp MsgBox​ = True Exit​ итоге все равно​ = CreateObject(«Scripting.Dictionary») For​MCH​Хотелось бы, чтобы​да вот и​: Ctrl+h не пробовали?​ в ячейках .​Поиск и замена​Выполните одно из указанных​Для поиска данных с​Найти​ поясните что на​ ввести *.*-*.* (*,​ Error Resume Next​ ячеек (цвета шрифтов,​ «ненужные строки удалены!»,​ For End If​ перебираем ключи, а​ i = 0​: ЕЧИСЛО — лишнее:​ в следующем столбце​ приходилось F4 жать​Digitalizer​Пример, в ячейках​перейдите на вкладку​ ниже действий.​ конкретными свойствами выберите​введите текст или​ что Вы хотите​ как я помню,​ iText = Array(«Анат*»,​ курсив и прочее)​ 64, «конец» End​ If flag Then​ их не так​ To UBound(iText) iTemp​=ПРОСМОТР(2;1/ПОИСК({«Турция»:»Израиль»:»Египет»};E8);{«Турция»:»Израиль»:»Египет»})​ по каждой такой​ по 50 раз​: так я и​ значение :​

​Поиск​​Чтобы найти текст или​ в поле​ числа, которые нужно​ поменять​ в маске -​ «Уру*», «Инокен*») ‘список​Marat_Mamedov​ Sub​ Exit For Next​ уж много, и​ = dic(iText(i)) Next​
​Владимир​ ячейке выводилась соответствующая​ :)​ спрашиваю каким образом​1805/7957-6890​и нажмите кнопку​
​ числа, нажмите кнопку​Область поиска​ искать, или щелкните​Serge_007​ это любой знак​ слов на НЕудаление​: «но при этом​Marat_Mamedov​ If Not flag​ можно обойтись обычным​ Set myRng =​: =ЗАМЕНИТЬ(A1;1;НАЙТИ(» «;A1);»»)​ страна. Конструкция вида:​Manyasha​ это можно сделать​

​Нужно заменить на​​Параметры​Найти все​вариант​ стрелку в поле​: Такой «опции» не​

​ или любые несколько​​ myArr = Intersect(Range(«A:B»),​ будет утеряно форматирование​: Просто супер! Спасибо​ Then If Not​

​ массивом.​​ Intersect(Range(«A:B»), ActiveSheet.UsedRange) flag​Marat_Mamedov​=ЕСЛИ(E7=»Турция*»;»Турция»;»Израиль»)​​да да да,​​ в «замене».​​ :​, чтобы открыть параметры​ :D
​или​

​формулы​​Найти​ существует в Excel​ знаков) .​ ActiveSheet.UsedRange).Value ReDim newArr(1​ ячеек (цвета шрифтов,​ большое теперь пойду​ delRng Is Nothing​ЦитатаJack Famous написал:​ = False For​: Здравствуйте!​

​работать не хочет.​​ об этом и​как сделать маску​1805-7957/6890​ форматирования. Щелкните стрелку​Найти далее​,​и нажмите кнопку​ за ненадобностью​Кто подскажет, что​

​ To UBound(myArr, 1),​​ курсив и прочее)»​ на боевых реестрах​

​ Then Set delRng​​ И что такое​ Each cl In​На форме нашел​ Как можно решить​ речь :)​ на те значения​Abram pupkin​ рядом с полем​.​
​значения​ последнего поиска в​Цитата​
​ мне вписать в​ 1 To UBound(myArr,​
​ — такой вариант​ удалять записи там​ = Union(delRng, cl)​ «flag»Если посмотрите выше​ myRng For Each​ макрос который удаляет​ эту задачу? И​спасибо за макрос​ которые не надо​: так ?​Формат​Совет:​
​или​ списке.​Pelena, 26.07.2015 в​ графе «Заменить на»?​ 2)) k =​
​ подходит там вообще​ записей под 1,5​ Else Set delRng​ по коду, то​ iKey In dic.Keys​ ячейки со сдвигом​ каким будет решение,​ ) помогло​ менять.​=ПОДСТАВИТЬ (ПОДСТАВИТЬ (ПОДСТАВИТЬ​и нажмите кнопку​ При нажатии кнопки​примечания​В условиях поиска можно​

​ 14:13, в сообщении​​Орбитальная группировка​ 1 flag =​ нет ничего такого​ млн ячеек (пришлось​ = cl End​ увидите, что это​ If cl.Value Like​ вверх по условию​ если контрагентов будет​Gustav​По типу: Лист1!​ (A2;»/»;»»);»-«;»/»);»»;»-«)​Очистить​Найти все​.​ использовать подстановочные знаки,​ № 2200?’200px’:»+(this.scrollHeight+5)+’px’);»>во всех​: … надо ;##…реш0тки​ False For i​ в формате ячеек​ экспортировать в две​ If flag =​ обычная переменная типа​ «*» & iKey​ :​ не двое, а​: Если только правильно​B​*пробелы убрать​.​, каждого экземпляра условия,​Примечание:​ например вопросительный знак​ версиях НАЙТИ/ЗАМЕНИТЬ работает​ а не звёзды​ = 1 To​

​ , просто текст.​​ колонки что бы​ False End If​
​ Boolean. В коде​ & «*» Then​Sub Макрос2() Dim​ трое? Вообще, поддерживают​ понял задачу, требовалось,​1 в Лист1!$​Полосатый жираф алик​Для поиска текста или​ которые вы ищете​ ​
​ (?) и звездочку​ по выделенному диапазону,​или between or​

planetaexcel.ru

Помогите составить маску для замены в excel

​ UBound(myArr, 2) k​Jack Famous​ поместились ) посмотрю​ Next If Not​
​ она служит индикатором​

​ flag = True​

​ iRange As Range​

​ ли функции Excel​ вероятно, нечто следующее:​

​%​

​: А если без​

​ чисел на листе​ указываются и щелкнув​Формулы​ (*).​ а если активна​Гиперссыльный​ = 1 For​: эт не я​ как себя поведет​ delRng Is Nothing​ выполнения условия If​

​ Exit For End​ Dim iText As​ поиск по маске​

​200?’200px’:»+(this.scrollHeight+5)+’px’);»>Sub io()​​$1​ тупых примеров, а​
​ также можно использовать​

Как настроить НАЙТИ и ЗАМЕНИТЬ только в выделенной области? (Формулы/Formulas)

​ нужное вхождение в​​,​Звездочка используется для поиска​ только одна ячейка,​: В Excel 2010​ j = 1​ писал))​ Excel.​ Then delRng.Delete Shift:=xlShiftUp​ cl.Value Like «*»​ If If flag​ Variant Dim i​ вообще?​Selection.Formula = Application.ConvertFormula(Selection.Formula,​

​Nic70y​​ описать, что действительно​ функции ПОИСК и​ списке сделает ячейки​значения​ любой строки знаков.​ то по всему​ почему-то отсутствует функция​

​ To UBound(myArr, 1)​​PooHkrd​Не смог найти​ MsgBox «ненужные строки​ & iKey &​ Then Exit For​

​ As Long iText​​mouse​

​ xlA1, xlA1, xlAbsolute)​​: Этим средством думаю​ нужно? И по​ НАЙТИ.​ active. Можно сортировать​и​ Например, если ввести​ листуВсе верно, так​

​ НАЙТИ И ЗАМЕНИТЬ​​ For x =​: Я правильно понимаю,​ как настроить умный​ удалены!», 64, «конец»​ «*»ЦитатаJack Famous написал:​ Next If Not​ = Array(«05056280*»,»06056280*»,»01056280*») ‘список​: может так​End Sub​ ни как, перебирайте​ каким адресам расположено​

​С помощью функции «Поиск​​ результаты​примечания​г*д​ и есть во​

​ при выделении столбца​​ 0 To UBound(iText)​ что по факту​ экспор в ексель​
​ End Sub​​ чтобы можно было​ flag Then If​ слов на удаление​=ЕСЛИ(ЕОШ(НАЙТИ(«Турция»;E7));»Израиль»;»Турция»)​P.S. Четвертый параметр​ весь алфавит, выделяя​ то, что будем​ и замена» можно​Найти​доступны только на​, то будут найдены​

excelworld.ru

​ всех версиях​

Функции поиска и замены в Excel используются для поиска в книге необходимой информации, например определенного числа или текстовой строки. Вы можете найти элемент поиска для справки или заменить его другим. Вы также можете найти ячейки, к которым применен определенный формат.

Чтобы найти текст или числа, нажмите клавиши CTRL + Fили перейдите на вкладку главная > редактирование> найти & выберите > найти.

В поле найти введите текст или числа, которые вы хотите найти, или щелкните стрелку в поле найти и выберите в списке последний элемент поиска.

В условиях поиска можно использовать подстановочные знаки, например вопросительный знак (?) и звездочку (*).

Звездочка используется для поиска любой строки знаков. Например, если ввести г*д, то будут найдены слова «год» и «город».

Вопросительный знак заменяет один любой знак. Например, если ввести г?д, то будут найдены слова «гад», «гид» и «год».

) перед ними следует ввести в поле Найти знак тильды. Например, чтобы найти данные, содержащие слово «?», введите в качестве условия поиска строку

? . Для ввода тильды нажмите клавиши SHIFT +

? . Для ввода тильды нажмите клавиши SHIFT +

, где клавиша тильда обычно находится над клавишей TAB.

В поле заменить на введите текст или числа, которые нужно использовать для замены искомого текста.

Нажмите Заменить все или Заменить.

Совет: При нажатии кнопки заменить всевсе вхождения искомого условия будут заменены, в то время как Замена будет обновляться по одному вхождению за раз.

При необходимости нажмите кнопку Параметры , чтобы дополнительно задать условия поиска.

Для поиска данных на листе или во всей книге выберите в поле Искать вариант на листе или в книге.

Для поиска данных в строках или столбцах выберите в поле Просматривать вариант по строкам или по столбцам.

Чтобы найти данные с определенными подробностями, в поле Искать в выберите пункт формулы, значения, заметкиили Примечания.

Примечание: Формулы, значения, заметки и Примечания доступны только на вкладке » Поиск «. на вкладке заменить доступны только формулы .

Для поиска данных с учетом регистра установите флажок Учитывать регистр.

Для поиска ячеек, содержащих только символы, введенные в поле Найти, установите флажок Ячейка целиком.

Если вы хотите найти текст или числа с определенным форматированием, нажмите кнопку Формати выберите необходимые параметры в диалоговом окне Найти формат .

Совет: Чтобы найти ячейки, точно соответствующие определенному формату, можно удалить все условия в поле Найти, а затем выбрать ячейку с нужным форматированием в качестве примера. Щелкните стрелку рядом с кнопкой Формат, выберите пункт Выбрать формат из ячейки, а затем щелкните ячейку с форматированием, которое требуется найти.

Excel сохранит указанные параметры форматирования. Если при повторном поиске данных на листе не удается найти символы, которые вы знаете, возможно, потребуется удалить параметры форматирования из предыдущего поиска. В диалоговом окне Найти и заменить откройте вкладку Найти и нажмите кнопку Параметры, чтобы отобразить параметры форматирования. Затем щелкните стрелку рядом с кнопкой Формат и выберите пункт Очистить формат поиска.

Для поиска текста или чисел на листе также можно использовать функции поиска и поиска .

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community, попросить помощи в сообществе Answers community, а также предложить новую функцию или улучшение на веб-сайте Excel User Voice.

Примечание: Эта страница переведена автоматически, поэтому ее текст может содержать неточности и грамматические ошибки. Для нас важно, чтобы эта статья была вам полезна. Была ли информация полезной? Для удобства также приводим ссылку на оригинал (на английском языке).

Найти и заменить в Excel

Поиск и замена данных – одна из часто применяемых операций в Excel. Используют даже новички. На ленте есть большая кнопка.

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

Далее вызываем Главная → Редактирование → Найти и выделить → Найти (кнопка с рисунка выше). Поиск также можно включить с клавиатуры комбинацией клавиш Сtrl+F. Откроется диалоговое окно под названием Найти и заменить.

В единственном поле указывается информация (комбинация символов), которую требуется найти. Если не использовать подстановочные символы или т.н. джокеры (см. ниже), то Excel будет искать строгое совпадение заданных символов. Для вывода результатов поиска предлагается два варианта: выводить все результаты сразу – кнопка Найти все; либо выводить по одному найденному значению – кнопка Найти далее.

После запуска поиска программа Excel быстро-быстро просматривает содержимое листа (или указанного диапазона) на предмет наличия искомой комбинации символов. Если такая комбинация обнаружена, то в случае нажатия кнопки Найти все Excel вываливает все найденные ячейки.

Если в нижней части окна выделить любое значение и затем нажать Ctrl+A, то в диапазоне поиска будут выделены все соответствующие ячейки.

Если же запуск поиска произведен кнопкой Найти далее, то Excel выделяет ближайшую ячейку, соответствующую поисковому запросу. При повторном нажатии клавиши Найти далее (либо Enter с клавиатуры) выделяется следующая ближайшая ячейка (подходящая под параметры поиска) и т.д. После выделения последней ячейки Excel перепрыгивает на самую верхнюю и начинается все заново. На этом познания о поиске данных в Excel у большинства пользователей заканчиваются.

Поиск нестрогого соответствия символов

Иногда пользователь не знает точного сочетания искомых символов что существенно затрудняет поиск. Данные также могут содержать различные опечатки, лишние пробелы, сокращения и пр., что еще больше вносит путаницы и делает поиск практически невозможным. А может случиться и обратная ситуация: заданной комбинации соответствует слишком много ячеек и цель поиска снова не достигается (кому нужны 100500+ найденных ячеек?).

Для решения этих проблем очень хорошо подходят джокеры (подстановочные символы), которые сообщают Excel о сомнительных местах. Под джокерами могут скрываться различные символы, и Excel видит лишь их относительное расположение в поисковой фразе. Таких джокеров два: звездочка «*» (любое количество неизвестных символов) и вопросительный знак «?» (один «?» – один неизвестный символ).

Так, если в большой базе клиентов нужно найти человека по фамилии Иванов, то поиск может выдать несколько десятков значений. Это явно не то, что вам нужно. К поиску можно добавить имя, но оно может быть внесено самым разным способом: И.Иванов, И. Иванов, Иван Иванов, И.И. Иванов и т.д. Используя джокеры, можно задать известную последовательно символов независимо от того, что находится между. В нашем примере достаточно ввести и*иванов и Excel отыщет все выше перечисленные варианты записи имени данного человека, проигнорировав всех П. Ивановых, А. Ивановых и проч. Секрет в том, что символ «*» сообщает Экселю, что под ним могут скрываться любые символы в любом количестве, но искать нужно то, что соответствует символам «и» + что-еще + «иванов». Этот прием значительно повышает эффективность поиска, т.к. позволяет оперировать не точными критериями.

Если с пониманием искомой информации совсем туго, то можно использовать сразу несколько звездочек. Так, в списке из 1000 позиций по поисковой фразе мол*с*м*уход я быстро нахожу позицию «Мол-ко д/сн мак. ГАРНЬЕР Осн.уход д/сух/чув.к. 200мл» (это сокращенное название от «Молочко для снятия макияжа Гараньер Основной уход….»). При этом очевидно, что по фразе «молочко» или «снятие макияжа» поиск ничего бы не дал. Часто достаточно ввести первые буквы искомых слов (которые наверняка присутствуют), разделяя их звездочками, чтобы Excel показал чудеса поиска. Главное, чтобы последовательность символов была правильной.

Есть еще один джокер – знак «?». Под ним может скрываться только один неизвестный символ. К примеру, указав для поиска критерий 1?6, Excel найдет все ячейки содержащие последовательность 106, 116, 126, 136 и т.д. А если указать 1??6, то будут найдены ячейки, содержащие 1006, 1016, 1106, 1236, 1486 и т.д. Таким образом, джокер «?» накладывает более жесткие ограничения на поиск, который учитывает количество пропущенных знаков (равный количеству проставленных вопросиков «?»).

В случае неудачи можно попробовать изменить поисковую фразу, поменяв местами известные символы, сократив их, добавить новые подстановочные знаки и др. Однако это еще не все нюансы поиска. Бывают ситуации, когда в упор наблюдаешь искомую ячейку, но поиск почему-то ее не находит.

Продвинутый поиск

Мало, кто обращается к кнопке Параметры в диалоговом окне Найти и заменить. А зря. В ней скрыто много полезностей, которые помогают решить проблемы поиска. После нажатия кнопки Параметры добавляются дополнительные поля, которые еще больше углубляют и расширяют условия поиска.

С помощью дополнительных параметров поиск в Excel может заиграть новыми красками в прямом смысле слова. Так, искать можно не только заданное число или текст, но и формат ячейки (залитые определенным цветом, имеющие заданные границы и т.д.).

После нажатия кнопки Формат выскакивает знакомое диалоговое окно формата ячеек, только в этот раз мы не создаем, а ищем нужный формат. Формат также можно не задавать вручную, а выбрать из имеющегося, воспользовавшись специальной командой Выбрать формат из ячейки:

Таким образом можно отыскать, к примеру, все объединенные ячейки, что другим способом сделать весьма проблематично.

Поиск формата – это хорошо, но чаще искать приходится конкретные значения. И тут Excel предоставляет дополнительные возможности для расширения и уточнения параметров поиска.

Первый выпадающий список Искать предлагает ограничить поиск одним листом или расширить его до целой книги.

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

Список Просматривать с выпадающими вариантами по строкам или столбцам, видимо, сохранился от старых версий, когда поиск требовал много ресурсов и времени. Сейчас это не актуально. В общем, я не пользуюсь.

В следующем выпадающем списке находится замечательная возможность поиска по формулам, значениям, а также примечаниям. По умолчанию Excel производит поиск в формулах либо, если их нет, в содержимом ячейки. Например, если искать фамилию Иванов, а фамилия эта есть результат формулы (копируется из соседнего листа), то поиск нечего не даст, т.к. в ячейке нет искомого перечня символов. По той же причине не удастся отыскать число, являющееся результатом работы какой-либо функции. Поэтому бывает смотришь в упор на ячейку, видишь искомое значение, а Excel его почему-то не видит. Это не глюк, это настройка поиска. Измените данный параметр на Значения и поиск будет осуществляться по тому, что отражено в ячейке, независимо от содержимого. Например, если в ячейке содержится результат вычисления 1/6 (как значение, а не формула) и при этом формат отражает только 3 знака после запятой (т.е 0,167), то поиск символов «167» при выборе параметра Формулы эту ячейку не обнаружит (реальное содержимое ячейки — это 0,166666…), а при выборе Значения поиск увенчается успехом (искомые символы совпадают с тем, что отражается в ячейке). И последний пункт в данном списке – Примечания. Поиск осуществляется только в примечаниях. Очень может помочь, т.к. примечания часто скрыты.

В диалоговом окне поиска есть еще две галочки Учитывать регистр и Ячейка целиком. По умолчанию Excel игнорирует регистр, но можно сделать так, чтобы «иванов» и «Иванов» отличались. Галочка Ячейка целиком также может оказаться весьма полезной, если ищется ячейка не с указанным фрагментом, а полностью состоящая из искомых символов. К примеру, как найти ячейки, содержащие только 0? Обычный поиск не подойдет, т.к. будут выдаваться и 10, и 100. Зато, если установить галочку Ячейка целиком, то все пойдет, как по маслу.

Поиск и замена данных

Данные обычно ищутся не просто так, а для каких-то целей. Такой целью часто является замена искомой комбинации (или формата) на другую. Чтобы найти и заменить в выделенном диапазоне Excel одни значения на другие, в окне Найти и заменить необходимо выбрать вкладку Замена. Либо сразу выбрать на ленте команду Главная → Редактирование → Найти и выделить → Заменить.

Еще удобнее применить сочетание горячих клавиш найти и заменить в Excel – Ctrl+H.

Диалоговое окно увеличится на одно поле, в котором указываются новые символы, которые будут вставлены вместо найденных.

По аналогии с простым поиском, менять можно и формат.

Кнопка Заменить все позволяет одним махом заменить одни символы на другие. После замены Excel показывается информационное окно с количеством произведенных замен. Кнопка Заменить позволяет производить замену по одной ячейке после каждого нажатия. Если найти и заменить в Excel не работает, попробуйте изменить параметры поиска.

Напоследок рассмотрим один классный трюк с поиском и заменой. Многие знают, что в ячейку можно вставить разрыв строк с помощью комбинации Alt+Enter.

А как быстро удалить все разрывы строк? Обычно это делают вручную. Однако ловкое использование поиска и замены сэкономит много времени. Вызываем команду поиска и замены с помощью комбинации Ctrl+H. Теперь в строке поиска нажимаем Ctrl+J — это символ разрыва строки — на экране появится точка. В строке замены указываем, например, пробел.

Жмем Ok. Все переносы строк заменились пробелами.

Функция поиска и замены при правильном использовании заменяет часы работы неопытного пользователя. Настоятельно рекомендую использовать все вышеизложенное. Если что-то не ищется в ваших данных или наоборот, выдает слишком много лишних ячеек, то попробуйте уточнить поиск с помощью подстановочных символов «*» и «?» или настраиваемых параметров поиска. Важно понимать, что если вы ничего не нашли, это еще не значит, что там этого нет.

Теперь вы знаете, как в эксель сделать поиск по столбцу, строке, любому диапазону, листу или даже книге.

Excel замена по маске

Условно есть три столбца A , B , C . В первом имена в перемешку, во втором уникальный id , в третьем соответствующее этому id значение.

Всем значениям Вася нужно присвоить 1 , Петя : 2 , Лёша : 3 и т.д — короче присвоить всем значениям соответствующий id из столбца B .

Если нумерация идёт подряд, то можно в столбце D написать формулу

Если не подряд, то

Выделить получившиеся результат и Ctrl + С (не Ctrl + X )

Нажать на стрелочку и выбрать вставку значений:

Удалить лишние данные в столбце D.

Формулы:

Из всех предложенных формульных вариантов самый быстрый ИНДЕКС/ПОИСКПОЗ (INDEX/MATCH), показанный Qwertiy.

Если поменять местами значения столбцов В и С (сначала искомое, правее — число), то достачно

Функция пользователя (UDF)

Alt+F11 — вход в редактор VBA. Слева — окно дерева проекта. Добавить в проект общий модуль (Insert-Module), разместить там код.

В ячейку записать формулу:

где A1 — значение, которому нужно присвоить цифровой код, $B$1:$C$4 — диапазон соответствий.

Протянуть формулу по строкам.

Если нужно заменить значения в первом столбце найденными соответствиями и список соответствий небольшой, можно обойтись штатным инструментом:

1) выделить столбец А

3) НАЙТИ Вася, ЗАМЕНИТЬ 1, Заменить_все, ОК и т.д.

Макрос.

Если диапазоны большие, если работа не разовая — лучше воспользоваться приведенным ниже кодом для замены значений в столбце А. Код разместить в общем модуле. Запускать обработку можно любой фигурой, рисунком etc., назначив им макрос.

Если менять не нужно, но подставить соответствия, массив выгружать в другой столбец (например, с .Range(«D1»))

Подстановочные знаки (символы *, ? и

Рассмотрим применение подстановочных знаков в Excel (символы звездочки «*», тильды «

» и вопросительного знака «?») и их использование при поиске и замене текстовых значений.

Приветствую всех, дорогие читатели блога TutorExcel.Ru.

В начале предлагаю вспомнить определение подстановочных знаков и понять, что же это такое и для каких целей они применяются в Excel. А затем уже разберем применение на конкретных примерах.
Подстановочные знаки — это специальные символы, которые могут принимать вид любого произвольного количества символов, другими словами, являются определенными масками комбинаций символов.
Всего в Excel есть 3 типа подобных знаков:

  • * (звездочка); Обозначает любое произвольное количество символов. Например, поиск по фразе «*ник» найдет слова типа «понедельник», «всадник», «источник» и т.д.
  • ? (вопросительный знак); Обозначает один произвольный символ. К примеру, поиск по фразе «ст?л» найдет «стол», «стул» и т.д.

(тильда) с последующими знаками *, ? или

. Обозначает конкретный символ *, ? или

. Например, поиск по фразе «хор*» найдет все фразы начинающиеся на «хор» («хоровод», «хорошо» и т.д.). Поэтому для точного поиска «хор*» нужно использовать символ «

» и искать по фразе «хор

» гарантирует, что Excel прочитает следующий символ как текст, а не как подстановочный знак.

Использование таких спецсимволов может быть полезно при фильтрации данных, для сравнения текста, при поиске и замене текстовых значений. Давайте подробно остановимся на каждом из основных вариантов применения.

Фильтрация данных

Рассмотрим пример. Предположим, что у нас имеется список сотрудников компании и мы хотим отфильтровать только тех сотрудников, у которых фамилии начинаются на конкретную букву (к примеру, на букву «п»):


Для начала добавляем фильтр на таблицу (выбираем вкладку Главная -> Редактирование -> Сортировка и фильтр или нажимаем сочетание клавиш Ctrl + Shift + L).
Для фильтрации списка воспользуемся символом звездочки, а именно введем в поле для поиска «п*» (т.е. фамилия начинается на букву «п», после чего идет произвольный текст):


Фильтр определил 3 фамилии удовлетворяющих критерию (начинающиеся с буквы «п»), нажимаем ОК и получаем итоговый список из подходящих фамилий:


В общем случае при фильтрации данных мы можем использовать абсолютно любые критерии, никак не ограничивая себя в выборе маски поиска (произвольный текст, различные словоформы, числа и т.д.).
К примеру, чтобы показать все варианты фамилий, которые начинаются на букву «к» и содержат букву «в», то применим фильтр «к*в*» (т.е. фраза начинается на «к», затем идет произвольный текст, потом «в», а затем еще раз произвольный текст).
Или поиск по «п?т*» найдет фамилии с первой буквой «п» и третьей буквой «т» (т.е. фраза начинается на «п», затем идет один произвольный символ, затем «т», и в конце опять произвольный текст).

Применение в функциях

Как уже говорилось выше, подстановочные знаки в Excel могут использоваться в качестве критерия при сравнении текста в различных функциях Excel (например, СЧЁТЕСЛИ, СУММЕСЛИ, СУММЕСЛИМН, ГПР, ВПР и другие).

Повторим задачу из предыдущего примера и подсчитаем количество сотрудников компании, фамилии которых начинаются на букву «п».
Воспользуемся функцией СЧЁТЕСЛИ, которая позволяет посчитать количество ячеек соответствующих указанному критерию.
В качестве диапазона данных укажем диапазон с сотрудниками (A2:A20), а в качестве критерия укажем запись «п*» (т.е. любая фраза начинающаяся на букву «п»):


Как и в первом примере, в результате мы получили ровно 3 фамилии.

Однако не все функции поддерживают применение подстановочных знаков. Некоторые из них (к примеру, функция НАЙТИ) любой символ воспринимают как текст, даже несмотря на то, что он может быть служебным.
С помощью функции НАЙТИ найдем в тексте позицию вхождения вопросительного знака и звездочки:


Обратным примером служит аналогичная функция ПОИСК, в которой мы должно четко указать что ищем именно служебный символ:


Как видим результат у функций получился одинаковым, однако обращение к подстановочным знакам разное.

Инструмент «Найти и заменить»

Подстановочные знаки в Excel также можно использовать для поиска и замены текстовых значений в инструменте «Найти и заменить» (комбинация клавиш Ctrl + F для поиска и Ctrl + H для замены).

Рассмотрим пример. Имеется список продукции магазина, в котором нам нужно найти продукт «молоко».
Предположим, что при вводе данных сделали ошибки из-за чего в списке появились продукты «малоко».

Чтобы несколько раз не искать данные по словам «молоко» или «малоко», при поиске воспользуемся критерием «м?локо» (т.е. вторая буква — произвольная):


При этом не стоит забывать, что с помощью данного инструмента можно не только искать текст, но и заменять его (к примеру, заменить «м?локо» на «молоко»).

Как заменить звездочку «*» в Excel?

Практически наверняка каждый сталкивался со следующей ситуацией — в тексте присутствует символ звездочки, который необходимо удалить или заменить на какой-либо другой текст.
Однако при попытке заменить звездочку возникают трудности — при замене меняются абсолютно весь текст, что естественно и логично, так как Excel воспринимает символ «*» как любой произвольный текст.
Но мы теперь уже знаем как с этим бороться, поэтому в поле Найти указываем текст «


(явно показываем, что звездочка является специальным символом), а в поле Заменить на указываем на что заменяем звездочку, либо оставляем поле пустым, если хотим удалить звездочку:


Аналогичная ситуация и при замене или удалении вопросительного знака и тильды.
Производя замену «


(для тильды — «


») мы также без проблем сможем заменить или удалить спецсимвол.

Поиск и замена в Excel

Поиск и замена в Excel – это достаточно мощный и удобный инструмент, который позволяет находить, а при необходимости и заменять, информацию на рабочем листе. В рамках данного урока Вы научитесь выполнять поиск в заданной области документа Excel, а также изменять найденную информацию на требуемое значение.

При работе с большим количеством данных в Excel, иногда достаточно трудно отыскать какую-то конкретную информацию. И, как правило, такой поиск занимает очень много времени. Excel предлагает прекрасный инструмент поиска. Вы можете с легкостью отыскать любую нужную информацию в рабочей книге Excel с помощью команды Найти, которая к тому же позволяет еще и изменить данные с помощью инструмента Найти и заменить.

Поиск данных в ячейках Excel

В нашем примере мы воспользуемся командой Найти, чтобы отыскать требуемое имя в длинном списке сотрудников.

Если перед использованием команды Найти Вы выделите одну ячейку, то Excel будет выполнять поиск во всем листе. А если диапазон ячеек, то только внутри этого диапазона

  1. На вкладке Главная воспользуйтесь командой Найти и выделить, а затем из раскрывающегося списка выберите пункт Найти.
  2. Появится диалоговое окно Найти и заменить. Введите данные, которые необходимо отыскать. В нашем примере мы введем имя сотрудника.
  3. Нажмите Найти далее. Если данные присутствуют на листе, то они будут выделены.
  4. Если Вы еще раз нажмете на кнопку Найти далее, то увидите следующий вариант поиска. Вы также можете выбрать Найти все, что бы увидеть все варианты, которые для Вас отыскал Excel.
  5. Закончив поиск, воспользуйтесь кнопкой Закрыть, чтобы выйти из диалогового окна Найти и Заменить.

Вы можете получить доступ к команде Найти с помощью комбинации клавиш Ctrl+F на клавиатуре.

Чтобы увидеть дополнительные параметры поиска и замены, нажмите кнопку Параметры в диалоговом окне Найти и заменить.

Замена содержимого ячейки в Excel

Бывают случаи, когда допущена ошибка, повторяющаяся во всей книге Excel. Например, неправильно написано чье-то имя или необходимо изменить определенное слово или фразу на другую. Вы можете воспользоваться инструментом Найти и заменить, чтобы быстро внести исправления. В нашем примере мы воспользуемся командой Заменить, чтобы исправить список адресов электронной почты.

  1. На вкладке Главная нажмите команду Найти и выделить, а затем из раскрывающегося списка выберите пункт Заменить.
  2. Появится диалоговое окно Найти и заменить. Введите текст, который Вы ищете в поле Найти.
  3. Введите текст, на который требуется заменить найденный, в поле Заменить на. А затем нажмите Найти далее.
  4. Если значение будет найдено, то содержащая его ячейка будет выделена.
  5. Посмотрите на текст и убедитесь, что Вы согласны заменить его.
  6. Если согласны, тогда выберите одну из опций замены:
    • Заменить: исправляет по одному значению зараз.
    • Заменить все: исправляет все варианты искомого текста в книге. В нашем примере мы воспользуемся этой опцией для экономии времени.

  • Появится диалоговое окно, подтверждающее количество замен, которые будут сделаны. Нажмите ОК для продолжения.
  • Содержимое ячеек будет заменено.
  • Закончив, нажмите Закрыть, чтобы выйти из диалогового окна Найти и заменить.
  • Проверка текста по маске

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

    Откройте редактор Visual Basic, нажав ALT+F11 или выбрав в меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor), вставьте новый модуль (меню Insert — Module) и скопируйте туда текст этой функции:

    Function MaskCompare(txt As String, mask As String, CaseSensitive As Boolean)
        If Not CaseSensitive Then
            txt = UCase(txt)
            mask = UCase(mask)
        End If
            
        If txt Like mask Then
                MaskCompare = True
            Else
                MaskCompare = False
        End If
    End Function
    

    Закройте редактор Visual Basic и вернитесь в Excel.

    Теперь через Вставка — Функция (Insert — Function) в категории Определенные пользователем (User Defined) можно найти нашу функцию MaskCompare и воспользоваться ей. Синтаксис функции следующий:

    =MaskCompare(txt; mask; CaseSensitive)

    где

    txt — любой текст или ячейка с текстом, которую мы проверяем на соответствие маске

    mask — набор символов, которые ищутся в проверяемом тексте. Набор может содержать спецсимволы подстановки:

    • * — любое количество любых символов
    • ? — один любой символ
    • # — любая цифра (0 — 9)
    • [список_символов] — любой символ из списка
    • [!список_символов] — все символы, кроме содержащихся в списке

    Case_Sensitive — необходимо ли учитывать регистр при проверке:

    • 1 — регистр символов учитывается
    • 0 — регистр символов не учитывается

    Примеры использования функции

    Использование спецсимволов в маске открывает перед пользователем широчайшие возможности. Вот несколько примеров масок:

    • ### — все числа от 0 до 999
    • ????? — все слова из 5 букв
    • м*н — все слова, начинающиеся на «м» и заканчивающиеся на «н»
    • *[аостр]* — все слова, содержащие хотя бы одну из букв а,о,с,т,р
    • *[!abcdefghijklmnopqrstuvwxyz]* — все слова НЕ содержащие английских букв

    Ссылки по теме

    • Поиск ближайшего похожего слова
    • Что такое макросы, куда вставлять код макроса на VBA, как их использовать

    Содержание

    1. Как привести телефонные номера к единому формату?
    2. Как это сделать?
    3. Как это работает?
    4. Проверка текста по маске
    5. Примеры использования функции
    6. Excel маска ввода
    7. Управление форматами ввода данных с помощью масок ввода
    8. В этой статье
    9. Общие сведения о масках ввода
    10. Три компонента маски ввода
    11. Знаки, определяющие маски ввода
    12. Определение маски ввода
    13. Как использовать маску ввода в excel vba?
    14. Использование входной маски
    15. Сводные таблицы Excel
    16. Как использовать маску ввода в Excel VBA?
    17. Использование маски ввода

    Как привести телефонные номера к единому формату?

    Как это сделать?

    В качестве примера, возьмем номер телефона в виде «9264177054», нам нужно добавить код страны и преобразовать этот номер к виду +7 (926) 417-70-54. Как это сделать? Очень просто!

    Для того чтобы создать свой формат данных, переведите курсор в ячейку, к которой вы хотите применить пользовательский формат, и вызовите диалоговое окно Формат ячеек.

    Для вызова этого окна используйте сочетание клавиш «Ctrl+1» или нажмите правую клавишу мышки и в контекстном меню выберите пункт «Формат ячеек. «:

    В открывшемся окне, во вкладке «Число» выберите пункт «все форматы». В появившееся справа поле Тип: введите маску нужного Вам формата. В нашем примере это будет: +7″ «(#)» «000-00-00. Обратите внимание, что в окошке «Образец» данные поменяли свой вид. Если вас устраивает такой вид данных нажмите «Оk». Данные в указанной ячейке примут соответствующий вид +7 (926) 417-70-54.

    Теперь ваш формат сохранен в Excel и его можно использовать для форматирования. Выделите ячейки, к которым надо применить пользовательский формат, и вызовите диалоговое окно Формат ячеек. В списке форматов найдите свой (он будет последним), выделите его и нажмите «Оk».

    Как это работает?

    На самом деле все очень просто. Excel использует несколько спецсимволов в масках форматов:

    0 (ноль) — один обязательный разряд, т.е. это место в маске формата будет заполнено цифрой из числа, которое пользователь введет в ячейку. Если для этого разряда нет числа, то будет выведен ноль. Например, если к числу 23 применить маску 000, то получится 023, а если к дробному числу 23,032016 применить маску 00,000 — получится 23,032.

    # (решетка) — один необязательный разряд, т.е. если для него нет числа, то ничего не выводится.

    [] — в квадратных скобках, перед маской формата, указывает цвет шрифта. Разрешено использовать следующие цвета: черный, белый, красный, синий, зеленый, жёлтый, голубой.

    «» — любой пользовательский текст (млн, уп., м и тому подобные) или любые символы (например, пробелы) — надо обязательно заключать в кавычки.

    Источник

    Проверка текста по маске

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

    Откройте редактор Visual Basic, нажав ALT+F11 или выбрав в меню Сервис — Макрос — Редактор Visual Basic (Tools — Macro — Visual Basic Editor) , вставьте новый модуль (меню Insert — Module) и скопируйте туда текст этой функции:

    Закройте редактор Visual Basic и вернитесь в Excel.

    Теперь через Вставка — Функция (Insert — Function) в категории Определенные пользователем (User Defined) можно найти нашу функцию MaskCompare и воспользоваться ей. Синтаксис функции следующий:

    =MaskCompare(txt; mask; CaseSensitive)

    txt — любой текст или ячейка с текстом, которую мы проверяем на соответствие маске

    mask — набор символов, которые ищутся в проверяемом тексте. Набор может содержать спецсимволы подстановки:

    • * — любое количество любых символов
    • ? — один любой символ
    • # — любая цифра (0 — 9)
    • [список_символов] — любой символ из списка
    • [!список_символов] — все символы, кроме содержащихся в списке

    Case_Sensitive — необходимо ли учитывать регистр при проверке:

    • 1 — регистр символов учитывается
    • 0 — регистр символов не учитывается

    Примеры использования функции

    Использование спецсимволов в маске открывает перед пользователем широчайшие возможности. Вот несколько примеров масок:

    • ### — все числа от 0 до 999
    • . — все слова из 5 букв
    • м*н — все слова, начинающиеся на «м» и заканчивающиеся на «н»
    • *[аостр]* — все слова, содержащие хотя бы одну из букв а,о,с,т,р
    • *[!abcdefghijklmnopqrstuvwxyz]* — все слова НЕ содержащие английских букв

    Источник

    Excel маска ввода

    Управление форматами ввода данных с помощью масок ввода

    Вы можете помочь пользователям правильно вводить данные в классические базы данных Access, подключив маски ввода к полям, имеющим строго определенный формат значений, например номера телефонов.

    Маска влияет только на ввод значений в Access: она не меняет способ их хранения, который записи от типа данных поля и других свойств. Дополнительные сведения о хранении данных в Access см. в статье Введение в типы данных и свойства полей.

    Важно: Эта статья относится только к классическим базам данных Access. Веб-приложения и веб-базы данных Access не поддерживают маски ввода.

    В этой статье

    Общие сведения о масках ввода

    Маска ввода — это строка символов, указывающая формат допустимых значений входных данных. Маски ввода можно использовать в полях таблиц или запросов, а также в элементах управления форм и отчетов. Маска ввода хранится в свойствах объекта.

    Маску ввода рекомендуется использовать, когда вводимые значения должны иметь единый формат, например для полей с номерами телефонов из десяти цифр. Если пользователь введет номер, не указав код города, данные не будут приняты в Access, пока пользователь не добавит код города.

    Три компонента маски ввода

    Маски ввода состоят из одного обязательного и двух необязательных компонентов, разделенных точками с запятой. Назначение каждого из компонентов описано ниже.

    Первый компонент является обязательным. Он представляет собой знак или строку (последовательность знаков) маски с заполнителями и литералами, например круглыми скобками, точками и дефисами.

    Второй компонент не является обязательным и определяет способ хранения встроенных знаков маски в поле. Если для этого компонента задано значение , знаки сохраняются вместе с данными, а если 1, то знаки отображаются без сохранения. Выбрав значение 1, можно сэкономить место для хранения базы данных.

    Третий компонент маски ввода также не является обязательным и определяет знак, используемый в качестве заполнителя. По умолчанию в Access используется знак подчеркивания (_). Чтобы задать другой знак, введите его в третьем компоненте маски.

    Пример маски ввода для телефонных номеров в формате России: (999) 000-00-00;0;-:

    В маске используются два заполнителя — 9 и 0. Заполнитель 9 обозначает необязательные цифры (код города можно не вводить), а 0 — обязательные.

    Значение 0 во втором компоненте маски ввода указывает на то, что знаки маски следует хранить вместе с данными.

    Третий компонент маски ввода указывает на то, что вместо знака подчеркивания (_) в качестве заполнителя будет использоваться дефис ().

    Знаки, определяющие маски ввода

    В приведенной ниже таблице перечислены заполнители и литералы, используемые в масках ввода, и описано их влияние на ввод данных.

    Определение маски ввода

    Если свойство Формат (Format) управляет тем, как данные отображаются в поле таблицы, то свойство Маска ввода (Input Mask) позволяет контролировать ввод данных в таблицу. И не только контролировать, но и упрощать процесс ввода. Маску используют в том случае, когда вводимые данные должны содержать определенные символы в некоторых позициях вводимой строки. Самым простым и ярким примером таких данных являются номера телефонов. Маска ввода должна обеспечить возможность вводить только цифры номера, а остальные символы (скобки вокруг кода города, дефис между цифрами номера) будут добавляться автоматически. Маска задается с помощью символов, приведенных в табл. 2.12.

    Таблица 2.12. Символы для создания масок ввода

    Для того чтобы сформировать маску ввода, можно использовать Мастера масок ввода (Input Mask Wizard). Откройте в режиме Конструктора таблицу «Заказы» (Orders). Выделите поле «Дата размещения». Чтобы ввести маску ввода для этого поля, щелкните мышью по ячейке свойства Маска ввода (Input Mask). Нажмите небольшую кнопку с тремя точками (рис. 2.21), которая появится справа (эта кнопка называется кнопкой Построителя и будет встречаться еще во многих местах), и дальше следуйте указаниям мастера:

      В первом диалоговом окне вы можете выбрать нужную маску из списка (рис. 2.22). Если вы попытаетесь вводить данные в поле Проба (Try It), то сможете увидеть, как будут форматироваться вводимые вами символы. Нажмите кнопку Далее (Next).

    Сформированная символьная строка маски отображается в поле Маска ввода (Input Mask) для поля «ДатаРазмещения» (OrderDate) (рис. 2.22). Маска ввода состоит из трех частей:

    • символьной строки маски;
    • символа 0. Это означает, что введенные в поле данные будут сохраняться вместе со специальными символами. Можно заменить 0 на 1 — тогда специальные символы маски не будут запоминаться в поле;
    • символа заполнителя.

    Как использовать маску ввода в excel vba?

    -2 Cher [2018-04-08 07:54:00]

    ПРОЧИТАЙТЕ ВНИМАТЕЛЬНО ВОПРОС, ПОЖАЛУЙСТА, ЭТО РЕКОМЕНДАЦИИ EXCEL VBA. NOT EXCEL

    Мне была поручена фиксация ввода даты в форме VBA. Текстовое поле должно содержать имя пользователя в виде MM/DD/YYYY .

    Мне нужно использовать маску ввода, не разрешено делать что-то как подтверждение даты после или с использованием календаря. До сих пор я мог использовать упомянутые 2 метода (форматирование формата после использования ISDATE ).

    Тем не менее, теперь стало ясно, что это должна быть маска, поэтому ключи отфильтровываются при вводе, причем маска отображается при вводе даты: __/__/____

    Там, где вы видите символ подчеркивания, он должен иметь возможность вводить числа и всегда находиться на этих позициях

    Есть ли способ сделать это? Я могу найти учебник для маски в Access VBA.

    input vba excel-vba excel masking

    Этот пост может помочь вам.

    Использование входной маски

    . Вы можете задаться вопросом, есть ли способ настроить маску ввода, которая автоматически добавит двоеточие. Хорошая новость — да, есть. Плохих новостей нет, нет. Звук запутанный? Позволь мне объяснить.

    Вы можете настроить пользовательский формат, который отобразит ваше время в любом формате. Например, вы можете использовать следующие шаги:

    1. Выберите ячейки, которые вы хотите использовать для ввода времени.
    2. Выберите » Формат» в меню «Ячейки». Excel отображает диалоговое окно » Формат ячеек «.
    3. Убедитесь, что отображается вкладка » Число «.
    4. В списке «Категория» выберите » Пользовательский».
    5. Замените все, что находится в поле » Тип», с #»:»00 .
    6. Нажмите OK .

    Теперь вы можете ввести свое время, используя только цифры. Проблема (и это плохая новость) заключается в том, что ячейка действительно не содержит времени. Если вы введете 230 (за 2:30), она не будет содержать 2:30 как раз — она содержит двести тридцать. Таким образом, вы не можете напрямую использовать содержимое ячейки непосредственно во времени.

    Чтобы преодолеть это, вы можете использовать другой столбец для отображения введенных цифр, преобразованных во время. Все, что вам нужно сделать, это использовать формулу для преобразования. Например, если введенное время было в ячейке A3 , вы можете использовать следующую формулу в другой ячейке для преобразования:

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

    (Полная статья и многое другое в источнике.)

    Сводные таблицы Excel

    Если вам часто приходится вводить даты и время в ячейки, то вам должна понравиться идея писать их сокращенно, без точек-дробей – просто как число. Чтобы в заданном диапазоне ячеек листа, например, число 250616 после ввода и нажатия клавиши Enter автоматически превращалось в 25.06.2016.

    Как в Excel настроить быстрый ввод даты без разделителей

    Для реализации такого возможны два варианта.

    Первый – использовать функцию преобразования текста в дату ДАТАЗНАЧ (DATEVALUE) и функции извлечения фрагментов из текста ЛЕВСИМВ (LEFT), ПРАВСИМВ (RIGHT) и ПСТР (MID), чтобы разделить шесть введенных чисел по два, добавить к ним точки и составить из них полноценную дату в соседней ячейке.

    Для реализации быстрого ввода даты возможны два варианта

    В англоязычном варианте: =DATEVALUE(LEFT(D1;2)&”.”&MID(D1;3;2)&”.”&RIGHT(D1;2)) .

    Если же хочется выполнять это преобразование прямо в той же ячейке, куда вводятся числа, то без макроса не обойтись. Для этого щелкните по ярлычку листа, куда будут вводиться даты и время, и выберите команду Исходный текст (View Code). В открывшееся окно редактора Visual Basic вставьте следующий код.

    Private Sub Worksheet_Change(ByVal Target As Range) Dim vVal Dim StrVal As String Dim dDate As Date If Target.Cells.Count > 1 Then Exit Sub If Not Intersect(Target, Range(«A2:A10»)) Is Nothing Then With Target StrVal = Format(.Text, «000000») If IsNumeric(StrVal) And Len(StrVal) = 6 Then Application.EnableEvents = False dDate = DateValue(Left(StrVal, 2) & «/» & Mid(StrVal, 3, 2) & «/» & Right(StrVal, 2)) .NumberFormat = «dd/mm/yyyy» .Value = CDate(DateSerial(Year(dDate), Month(dDate), Day(dDate))) End If End With End If Application.EnableEvents = True End Sub

    Диапазон A2:A10 в коде замените на свою область листа, куда подобным образом собираетесь вводить даты.

    Как использовать маску ввода в Excel VBA?

    ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ ВОПРОС, ПОЖАЛУЙСТА, ЭТО НАМЕРЕНИЯ ОТЛИЧАЮТ VBA. НЕ ЭКСКАЛЬНО

    Мне было дано задание зафиксировать ввод даты в форме VBA. В текстовом поле пользователь должен ввести дату в MM/DD/YYYY .

    Я должен использовать маску ввода, не разрешено делать что-либо в качестве даты подтверждения после или с использованием календаря. До сих пор я мог использовать 2 упомянутых метода (форсирование формата после использования ISDATE ).

    Однако теперь стало ясно, что это должна быть маска, поэтому ключи фильтруются при вводе, причем маска отображается при вводе даты: __/__/____

    Где вы видите подчеркивание, он должен иметь возможность только вводить цифры, и / всегда находятся на этих позициях

    Есть ли способ сделать это? Я могу только найти учебник для маски в Access VBA.

    Я гуглил «маску ввода Excel», и 2-й результат был следующим: Использование маски ввода Microsoft Excel, написанной Алленом Уайеттом .

    Использование маски ввода

    . Вы можете задаться вопросом, есть ли способ установить маску ввода, которая автоматически добавит двоеточие. Хорошие новости — да, есть. Плохих новостей нет, нет. Звук сбивает с толку? Позволь мне объяснить.

    Вы можете настроить пользовательский формат, который будет отображать ваше время в любом формате, который вы хотите. Например, вы можете использовать следующие шаги:

    1. Выберите ячейки, которые вы хотите использовать для ввода времени.
    2. Выберите « Формат» в меню «Ячейки». В Excel отобразится диалоговое окно « Формат ячеек ».
    3. Убедитесь, что отображается вкладка Number .
    4. В списке Категория выберите Пользовательский .
    5. Замените все, что находится в поле « Тип #»:»00 .
    6. Нажмите на ОК .

    Теперь вы можете ввести свое время, используя только цифры. Проблема (и это плохие новости) состоит в том, что ячейка не содержит времени. Если вы введете 230 (для 2:30), оно не будет содержать 2:30 как время — оно содержит двести тридцать. Таким образом, вы не можете использовать содержимое ячейки непосредственно в расчетах времени.

    Чтобы преодолеть это, вы можете использовать другой столбец для отображения введенных цифр, преобразованных во время. Все, что вам нужно сделать, это использовать формулу, чтобы сделать преобразования. Например, если время, которое вы ввели, было в ячейке A3 , вы можете использовать следующую формулу в другой ячейке, чтобы выполнить преобразование:

    Отформатируйте ячейку, содержащую приведенную выше формулу, чтобы она отображала один из различных форматов времени, и все готово.

    (Полная статья и многое другое на источнике .)

    Источник

    Подключитесь к эксперту. Учитесь у живых инструкторов.

    Функции поиска и замены в Excel используются для поиска в книге необходимой информации, например определенного числа или текстовой строки. Вы можете либо найти элемент поиска для справки, либо заменить его на что-то другое. В условия поиска можно включить подстановочные знаки, такие как вопросительные знаки, тильды и звездочки, а также цифры. Искать можно по строкам и столбцам, в примечаниях или значениях, а также на листе или во всей книге.

    Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

    Поиск

    Чтобы найти что-то, нажмите клавиши CTRL+F или перейдите в раздел Главная > Редактирование > найти & Выберите > Найти.

    Примечание: В следующем примере мы нажали кнопку Параметры >> , чтобы отобразить все диалоговое окно Поиск. По умолчанию он отображается со скрытыми параметрами.

    Нажмите клавиши CTRL+F, чтобы открыть диалоговое окно "Найти".

    1. В поле Найти что: введите текст или цифры, которые вы хотите найти, или щелкните стрелку в поле Найти что: и выберите последний элемент поиска из списка.

      Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

      • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

      • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

      • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    2. Нажмите кнопку Найти все или Найти далее , чтобы выполнить поиск.

      Совет: При нажатии кнопки Найти все будут перечислены все вхождения условий, которые вы ищете, а щелкнув определенное вхождение в списке, будет выбрана его ячейка. Вы можете отсортировать результаты поиска Найти все , щелкнув заголовок столбца.

    3. Щелкните Параметры>> , чтобы при необходимости определить поиск:

      • В: Чтобы найти данные на листе или во всей книге, выберите Лист или Книга.

      • Поиск: Вы можете выполнить поиск по строкам (по умолчанию) или по столбцам.

      • Посмотрите в: Чтобы найти данные с определенными сведениями, в поле щелкните Формулы, Значения, Заметки или Примечания.

        Примечание:   Формулы, значения, заметки и примечания доступны только на вкладке Найти . На вкладкеЗаменить доступны только формулы.

      • Вариант соответствия . Проверьте это, если вы хотите искать данные с учетом регистра.

      • Сопоставление всего содержимого ячейки . Проверьте это, если вы хотите искать ячейки, содержащие только символы, введенные в поле Найти: .

    4. Если вы хотите найти текст или цифры с определенным форматированием, нажмите кнопку Формат, а затем выберите нужные значения в диалоговом окне Поиск формата .

      Совет: Чтобы найти ячейки, точно соответствующие определенному формату, можно удалить все условия в поле Найти, а затем выбрать ячейку с нужным форматированием в качестве примера. Щелкните стрелку рядом с кнопкой Формат, выберите пункт Выбрать формат из ячейки, а затем щелкните ячейку с форматированием, которое требуется найти.

    Заменить

    Чтобы заменить текст или цифры, нажмите клавиши CTRL+H или перейдите в раздел Главная > Редактирование > Найти & Выберите > Заменить.

    Примечание: В следующем примере мы нажали кнопку Параметры >> , чтобы отобразить все диалоговое окно Поиск. По умолчанию он отображается со скрытыми параметрами.

    Нажмите клавиши CTRL+H, чтобы открыть диалоговое окно Заменить.

    1. В поле Найти что: введите текст или цифры, которые вы хотите найти, или щелкните стрелку в поле Найти что: и выберите последний элемент поиска из списка.

      Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

      • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

      • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

      • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    2. В поле Заменить на введите текст или числа, которые нужно использовать для замены текста поиска.

    3. Нажмите Заменить все или Заменить.

      Совет: При нажатии кнопки Заменить все все вхождения условий, которые вы ищете, будут заменены, в то время как Replace будет обновлять одно вхождение за раз.

    4. Щелкните Параметры>> , чтобы при необходимости определить поиск:

      • В: Чтобы найти данные на листе или во всей книге, выберите Лист или Книга.

      • Поиск: Вы можете выполнить поиск по строкам (по умолчанию) или по столбцам.

      • Посмотрите в: Чтобы найти данные с определенными сведениями, в поле щелкните Формулы, Значения, Заметки или Примечания.

        Примечание:   Формулы, значения, заметки и примечания доступны только на вкладке Найти . На вкладкеЗаменить доступны только формулы.

      • Вариант соответствия . Проверьте это, если вы хотите искать данные с учетом регистра.

      • Сопоставление всего содержимого ячейки . Проверьте это, если вы хотите искать ячейки, содержащие только символы, введенные в поле Найти: .

    5. Если вы хотите найти текст или цифры с определенным форматированием, нажмите кнопку Формат, а затем выберите нужные значения в диалоговом окне Поиск формата .

      Совет: Чтобы найти ячейки, точно соответствующие определенному формату, можно удалить все условия в поле Найти, а затем выбрать ячейку с нужным форматированием в качестве примера. Щелкните стрелку рядом с кнопкой Формат, выберите пункт Выбрать формат из ячейки, а затем щелкните ячейку с форматированием, которое требуется найти.

    Существует два разных метода поиска или замены текста или чисел на компьютере Mac. Во-первых, используется диалоговое окно «Найти & заменить «. Во-вторых, используется панель поиска на ленте.

    Диалоговое окно «Поиск & замена «

    Панель поиска и параметры

    Окно поиска

    1. Нажмите клавиши CTRL+F или выберите Главная > Найти & Выберите > Найти.

    2. В поле Найти: введите текст или цифры, которые нужно найти.

    3. Нажмите кнопку Найти далее , чтобы выполнить поиск.

    4. Вы можете дополнительно определить поиск:

      • В: Чтобы найти данные на листе или во всей книге, выберите Лист или Книга.

      • Поиск: Вы можете выполнить поиск по строкам (по умолчанию) или по столбцам.

      • Посмотрите в: Чтобы найти данные с определенными сведениями, в поле щелкните Формулы, Значения, Заметки или Примечания.

      • Вариант соответствия . Проверьте это, если вы хотите искать данные с учетом регистра.

      • Сопоставление всего содержимого ячейки . Проверьте это, если вы хотите искать ячейки, содержащие только символы, введенные в поле Найти: .

    Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

    • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

    • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

    • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    Параметры поиска

    1. Нажмите клавиши CTRL+F или выберите Главная > Найти & Выберите > Найти.

    2. В поле Найти: введите текст или цифры, которые нужно найти.

    3. Выберите Найти все , чтобы выполнить поиск всех вхождений.

      Поиск всех раскрывающихся дисплеев

      Примечание:  Диалоговое окно разворачивается, чтобы отобразить список всех ячеек, содержащих условие поиска, и общее количество ячеек, в которых оно отображается.

    4. Выберите любой элемент в списке, чтобы выделить соответствующую ячейку на листе.
       

      Примечание: Вы можете изменить содержимое выделенной ячейки.

    1. Нажмите клавиши CTRL+H или перейдите на главную страницу > Найти & выберите > Заменить.

    2. В поле Найти введите текст или цифры, которые требуется найти.

    3. Вы можете дополнительно определить поиск:

      • В: Чтобы найти данные на листе или во всей книге, выберите Лист или Книга.

      • Поиск: Вы можете выполнить поиск по строкам (по умолчанию) или по столбцам.

      • Вариант соответствия . Проверьте это, если вы хотите искать данные с учетом регистра.

      • Сопоставление всего содержимого ячейки . Проверьте это, если вы хотите искать ячейки, содержащие только символы, введенные в поле Найти: .
         

        Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

        • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

        • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

        • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    4. В поле Заменить на введите текст или числа, которые вы хотите использовать для замены текста поиска.

    5. Выберите Заменить или Заменить все.

      Советы: 

      • При нажатии кнопки Заменить все все вхождения ищемого условия будут заменены.

      • При нажатии кнопки Заменить можно заменить один экземпляр за раз, нажав кнопку Далее , чтобы выделить следующий экземпляр.

    1. Выберите любую ячейку для поиска по всему листу или выберите определенный диапазон ячеек для поиска.

    2. Нажмите клавиши COMMAND+F или выберите лупу, чтобы развернуть панель поиска и ввести текст или число, которые нужно найти в поле поиска.

      Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

      • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

      • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

      • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    3. Нажмите клавишу RETURN.

      Примечания: 

      • Чтобы найти следующий экземпляр элемента, который вы ищете, снова нажмите клавишу RETURN или в диалоговом окне Найти и выберите Найти далее.

      • Чтобы указать дополнительные параметры поиска, выберите увеличительное стекло и выберите Поиск на листе или Поиск в книге. Можно также выбрать параметр Дополнительно , который открывает диалоговое окно Поиск .

      Совет: Вы можете отменить выполняемый поиск, нажав клавишу ESC.

    Поиск

    Чтобы найти что-то, нажмите клавиши CTRL+F или перейдите в раздел Главная > Редактирование > найти & Выберите > Найти.

    Примечание: В следующем примере мы щелкнули > Параметры поиска , чтобы отобразить все диалоговое окно Поиск. По умолчанию отображается со скрытыми параметрами поиска.

    Поиск текста или чисел в книге или листе с помощью клавиш CTRL+F

    1. В поле Найти что: введите текст или числа, которые нужно найти.

      Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

      • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

      • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

      • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    2. Нажмите кнопку Найти далее или Найти все , чтобы выполнить поиск.

      Совет: При нажатии кнопки Найти все будут перечислены все вхождения условий, которые вы ищете, а щелкнув определенное вхождение в списке, будет выбрана его ячейка. Вы можете отсортировать результаты поиска Найти все , щелкнув заголовок столбца.

    3. Щелкните > Параметры поиска , чтобы при необходимости дополнительно определить поиск:

      • В: Чтобы найти данные в пределах определенного выделенного фрагмента, нажмите кнопку Выбор. Чтобы найти данные на листе или во всей книге, выберите Лист или Книга.

      • Направление: Вы можете выполнить поиск вниз (по умолчанию) или вверх.

      • Вариант соответствия . Проверьте это, если вы хотите искать данные с учетом регистра.

      • Сопоставление всего содержимого ячейки . Проверьте это, если вы хотите искать ячейки, содержащие только символы, введенные в поле Найти .

    Заменить

    Чтобы заменить текст или цифры, нажмите клавиши CTRL+H или перейдите в раздел Главная > Редактирование > Найти & Выберите > Заменить.

    Примечание: В следующем примере мы щелкнули > Параметры поиска , чтобы отобразить все диалоговое окно Поиск. По умолчанию отображается со скрытыми параметрами поиска.

    Замените текст или числа в книге или листе, нажав клавиши CTRL+H

    1. В поле Найти что: введите текст или числа, которые нужно найти.

      Советы: В критериях поиска можно использовать подстановочные знаки — вопросительный знак (?), звездочку (*), тильду (~).

      • Используйте вопросительный знак (?) для поиска одного символа, например s?t находит «sat» и «set».

      • Используйте звездочку (*), чтобы найти любое количество символов. Например, s*d находит слова «sad» и «started».

      • Используйте тильду (~), за которой следует знак ?, *или ~, чтобы найти вопросительные знаки, звездочки или другие символы тильды, например fy91~? находит «fy91?».

    2. В поле Заменить на введите текст или числа, которые нужно использовать для замены текста поиска.

    3. Щелкните Заменить или Заменить все.

      Совет: При нажатии кнопки Заменить все все вхождения условий, которые вы ищете, будут заменены, в то время как Replace будет обновлять одно вхождение за раз.

    4. Щелкните > Параметры поиска , чтобы при необходимости дополнительно определить поиск:

      • В: Чтобы найти данные в пределах определенного выделенного фрагмента, нажмите кнопку Выбор. Чтобы найти данные на листе или во всей книге, выберите Лист или Книга.

      • Направление: Вы можете выполнить поиск вниз (по умолчанию) или вверх.

      • Вариант соответствия . Проверьте это, если вы хотите искать данные с учетом регистра.

      • Сопоставление всего содержимого ячейки . Проверьте это, если вы хотите искать ячейки, содержащие только символы, введенные в поле Найти .

    Дополнительные сведения

    Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

    Рекомендуемые статьи

    Объединение и отмена объединения ячеек

    ЗАМЕНИТЬ, ЗАМЕНИТЬБ

    Применение проверки данных к ячейкам

    Поиск какого-либо значения в ячейках Excel довольно часто встречающаяся задача при программировании какого-либо макроса. Решить ее можно разными способами. Однако, в разных ситуациях использование того или иного способа может быть не оправданным. В данной статье я рассмотрю 2 наиболее распространенных способа.

    Поиск перебором значений

    Довольно простой в реализации способ. Например, найти в колонке «A» ячейку, содержащую «123» можно примерно так:

    Sheets("Данные").Select
    For y = 1 To Cells.SpecialCells(xlLastCell).Row
        If Cells(y, 1) = "123" Then
            Exit For
        End If
    Next y
    MsgBox "Нашел в строке: " + CStr(y)
    

    Минусами этого так сказать «классического» способа являются: медленная работа и громоздкость. А плюсом является его гибкость, т.к. таким способом можно реализовать сколь угодно сложные варианты поиска с различными вычислениями и т.п.

    Поиск функцией Find

    Гораздо быстрее обычного перебора и при этом довольно гибкий. В простейшем случае, чтобы найти в колонке A ячейку, содержащую «123» достаточно такого кода:

    Sheets("Данные").Select
    Set fcell = Columns("A:A").Find("123")
    If Not fcell Is Nothing Then
        MsgBox "Нашел в строке: " + CStr(fcell.Row)
    End If
    

    Вкратце опишу что делают строчки данного кода:
    1-я строка: Выбираем в книге лист «Данные»;
    2-я строка: Осуществляем поиск значения «123» в колонке «A», результат поиска будет в fcell;
    3-я строка: Если удалось найти значение, то fcell будет содержать Range-объект, в противном случае — будет пустой, т.е. Nothing.

    Полностью синтаксис оператора поиска выглядит так:

    Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SearchFormat)

    What — Строка с текстом, который ищем или любой другой тип данных Excel

    After — Ячейка, после которой начать поиск. Обратите внимание, что это должна быть именно единичная ячейка, а не диапазон. Поиск начинается после этой ячейки, а не с нее. Поиск в этой ячейке произойдет только когда весь диапазон будет просмотрен и поиск начнется с начала диапазона и до этой ячейки включительно.

    LookIn — Тип искомых данных. Может принимать одно из значений: xlFormulas (формулы), xlValues (значения), или xlNotes (примечания).

    LookAt — Одно из значений: xlWhole (полное совпадение) или xlPart (частичное совпадение).

    SearchOrder — Одно из значений: xlByRows (просматривать по строкам) или xlByColumns (просматривать по столбцам)

    SearchDirection — Одно из значений: xlNext (поиск вперед) или xlPrevious (поиск назад)

    MatchCase — Одно из значений: True (поиск чувствительный к регистру) или False (поиск без учета регистра)

    MatchByte — Применяется при использовании мультибайтных кодировок: True (найденный мультибайтный символ должен соответствовать только мультибайтному символу) или False (найденный мультибайтный символ может соответствовать однобайтному символу)

    SearchFormat — Используется вместе с FindFormat. Сначала задается значение FindFormat (например, для поиска ячеек с курсивным шрифтом так: Application.FindFormat.Font.Italic = True), а потом при использовании метода Find указываем параметр SearchFormat = True. Если при поиске не нужно учитывать формат ячеек, то нужно указать SearchFormat = False.

    Чтобы продолжить поиск, можно использовать FindNext (искать «далее») или FindPrevious (искать «назад»).

    Примеры поиска функцией Find

    Пример 1: Найти в диапазоне «A1:A50» все ячейки с текстом «asd» и поменять их все на «qwe»

    With Worksheets(1).Range("A1:A50")
      Set c = .Find("asd", LookIn:=xlValues)
      Do While Not c Is Nothing
        c.Value = "qwe"
        Set c = .FindNext(c)
      Loop
    End With
    

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

    Пример 2: Правильный поиск значения с использованием FindNext, не приводящий к зацикливанию.

    With Worksheets(1).Range("A1:A50")
      Set c = .Find("asd", lookin:=xlValues)
      If Not c Is Nothing Then
        firstResult = c.Address
        Do
          c.Font.Bold = True
          Set c = .FindNext(c)
          If c Is Nothing Then Exit Do
        Loop While c.Address <> firstResult
      End If
    End With
    

    В ниже следующем примере используется другой вариант продолжения поиска — с помощью той же функции Find с параметром After. Когда найдена очередная ячейка, следующий поиск будет осуществляться уже после нее. Однако, как и с FindNext, когда будет достигнут конец диапазона, Find продолжит поиск с его начала, поэтому, чтобы не произошло зацикливания, необходимо проверять совпадение с первым результатом поиска.

    Пример 3: Продолжение поиска с использованием Find с параметром After.

    With Worksheets(1).Range("A1:A50")
      Set c = .Find("asd", lookin:=xlValues)
      If Not c Is Nothing Then
        firstResult = c.Address
        Do
          c.Font.Bold = True
          Set c = .Find("asd", After:=c, lookin:=xlValues)
          If c Is Nothing Then Exit Do
        Loop While c.Address <> firstResult
      End If
    End With
    

    Следующий пример демонстрирует применение SearchFormat для поиска по формату ячейки. Для указания формата необходимо задать свойство FindFormat.

    Пример 4: Найти все ячейки с шрифтом «курсив» и поменять их формат на обычный (не «курсив»)

    lLastRow = Cells.SpecialCells(xlLastCell).Row
    lLastCol = Cells.SpecialCells(xlLastCell).Column
    Application.FindFormat.Font.Italic = True
    With Worksheets(1).Range(Cells(1, 1), Cells(lLastRow, lLastCol))
      Set c = .Find("", SearchFormat:=True)
      Do While Not c Is Nothing
        c.Font.Italic = False
        Set c = .Find("", After:=c, SearchFormat:=True)
      Loop
    End With
    

    Примечание: В данном примере намеренно не используется FindNext для поиска следующей ячейки, т.к. он не учитывает формат (статья об этом: https://support.microsoft.com/ru-ru/kb/282151)

    Коротко опишу алгоритм поиска Примера 4. Первые две строки определяют последнюю строку (lLastRow) на листе и последний столбец (lLastCol). 3-я строка задает формат поиска, в данном случае, будем искать ячейки с шрифтом Italic. 4-я строка определяет область ячеек с которой будет работать программа (с ячейки A1 и до последней строки и последнего столбца). 5-я строка осуществляет поиск с использованием SearchFormat. 6-я строка — цикл пока результат поиска не будет пустым. 7-я строка — меняем шрифт на обычный (не курсив), 8-я строка продолжаем поиск после найденной ячейки.

    Хочу обратить внимание на то, что в этом примере я не стал использовать «защиту от зацикливания», как в Примерах 2 и 3, т.к. шрифт меняется и после «прохождения» по всем ячейкам, больше не останется ни одной ячейки с курсивом.

    Свойство FindFormat можно задавать разными способами, например, так:

    With Application.FindFormat.Font 
      .Name = "Arial" 
      .FontStyle = "Regular" 
      .Size = 10 
    End With
    

    Поиск последней заполненной ячейки с помощью Find

    Следующий пример — применение функции Find для поиска последней ячейки с заполненными данными. Использованные в Примере 4 SpecialCells находит последнюю ячейку даже если она не содержит ничего, но отформатирована или в ней раньше были данные, но были удалены.

    Пример 5: Найти последнюю колонку и столбец, заполненные данными

    Set c = Worksheets(1).UsedRange.Find("*", SearchDirection:=xlPrevious)
    If Not c Is Nothing Then
      lLastRow = c.Row: lLastCol = c.Column 
    Else
      lLastRow = 1: lLastCol = 1
    End If
    MsgBox "lLastRow=" & lLastRow & " lLastCol=" & lLastCol
    

    В этом примере используется UsedRange, который так же как и SpecialCells возвращает все используемые ячейки, в т.ч. и те, что были использованы ранее, а сейчас пустые. Функция Find ищет ячейку с любым значением с конца диапазона.

    Поиск по шаблону (маске)

    При поиске можно так же использовать шаблоны, чтобы найти текст по маске, следующий пример это демонстрирует.

    Пример 6: Выделить красным шрифтом ячейки, в которых текст начинается со слова из 4-х букв, первая и последняя буквы «т», при этом после этого слова может следовать любой текст.

    With Worksheets(1).Cells
      Set c = .Find("т??т*", LookIn:=xlValues, LookAt:=xlWhole)
      If Not c Is Nothing Then
        firstResult = c.Address
        Do
          c.Font.Color = RGB(255, 0, 0)
          Set c = .FindNext(c)
          If c Is Nothing Then Exit Do
        Loop While c.Address <> firstResult
      End If
    End With
    

    Для поиска функцией Find по маске (шаблону) можно применять символы:
    * — для обозначения любого количества любых символов;
    ? — для обозначения одного любого символа;
    ~ — для обозначения символов *, ? и ~. (т.е. чтобы искать в тексте вопросительный знак, нужно написать ~?, чтобы искать именно звездочку (*), нужно написать ~* и наконец, чтобы найти в тексте тильду, необходимо написать ~~)

    Поиск в скрытых строках и столбцах

    Для поиска в скрытых ячейках нужно учитывать лишь один нюанс: поиск нужно осуществлять в формулах, а не в значениях, т.е. нужно использовать LookIn:=xlFormulas

    Поиск даты с помощью Find

    Если необходимо найти текущую дату или какую-то другую дату на листе Excel или в диапазоне с помощью Find, необходимо учитывать несколько нюансов:

    • Тип данных Date в VBA представляется в виде #[месяц]/[день]/[год]#, соответственно, если необходимо найти фиксированную дату, например, 01 марта 2018 года, необходимо искать #3/1/2018#, а не «01.03.2018»
    • В зависимости от формата ячеек, дата может выглядеть по-разному, поэтому, чтобы искать дату независимо от формата, поиск нужно делать не в значениях, а в формулах, т.е. использовать LookIn:=xlFormulas

    Приведу несколько примеров поиска даты.

    Пример 7: Найти текущую дату на листе независимо от формата отображения даты.

    d = Date
    Set c = Cells.Find(d, LookIn:=xlFormulas, LookAt:=xlWhole)
    If Not c Is Nothing Then
      MsgBox "Нашел"
    Else
      MsgBox "Не нашел"
    End If
    

    Пример 8: Найти 1 марта 2018 г.

    d = #3/1/2018#
    Set c = Cells.Find(d, LookIn:=xlFormulas, LookAt:=xlWhole)
    If Not c Is Nothing Then
      MsgBox "Нашел"
    Else
      MsgBox "Не нашел"
    End If
    

    Искать часть даты — сложнее. Например, чтобы найти все ячейки, где месяц «март», недостаточно искать «03» или «3». Не работает с датами так же и поиск по шаблону. Единственный вариант, который я нашел — это выбрать формат в котором месяц прописью для ячеек с датами и искать слово «март» в xlValues.

    Тем не менее, можно найти, например, 1 марта независимо от года.

    Пример 9: Найти 1 марта любого года.

    d = #3/1/1900#
    Set c = Cells.Find(Format(d, "m/d/"), LookIn:=xlFormulas, LookAt:=xlPart)
    If Not c Is Nothing Then
      MsgBox "Нашел"
    Else
      MsgBox "Не нашел"
    End If
    

    Со временем пользователь Excel сталкивается со сложными задачами по фильтрации данных в таблице. Фильтрация данных по нескольким условиям требует больших возможностей чем те, что предоставляет обычный автофильтр. Тогда Excel предоставляет более сложный и функциональный инструмент – расширенный фильтр.

    Использование расширенного фильтра в Excel

    На конкретном примере рассмотрим, как пользоваться расширенным фильтром в Excel. В качестве примера выступит отчет по продажам продуктов в торговых точках:

    Отчет продаж.

    Допустим нам необходимо узнать, как формируется продажа товаров «Виноград» и «Крыжовник» в период с 20-го по 23-е Июля. Для этого:

    1. Выше создадим отдельную, вспомогательную таблицу для ввода критериев фильтрования. Важно чтобы критерии не находились в смежном диапазоне с данными начальной таблицы. Лучше всего если между исходной таблицей и дополнительной таблицей критериев будет хотя-бы одна пустая строка (столбец) разделяя их между собой. Так же следует учитывать порядок и структуру оформления дополнительной таблицы с критериями для расширенного фильтра. Заголовки столбцов и значение критериев должны соответствовать значениям в основной таблице. Иначе программа их просто не найдёт.
    2. Заполните дополнительную таблицу значениями критериев так как показано ниже на рисунке:
    3. Диапазон критериев.

    4. Перейдите на любую ячейку в главной таблице с данными и выберите инструмент: «ДАННЕ»-«Сортировка и фильтр»-«Дополнительно». Появиться диалоговое окно: «Расширенный фильтр» с автоматически заполненным первым полем «Исходный диапазон».
    5. Расширенный автофильтр.

    6. Активируйте второе поле ввода «Диапазон условий:» щелкнув по нему левой кнопкой мышки и выделите весь диапазон дополнительно таблицы с критериями. Выделяя данный диапазон следует охватить как ячейки критериев, так и заголовки столбцов. В поле ввода автоматически сгенерируется ссылка на выделенный диапазон. После чего нажмите на кнопку ОК подтвердив и закрыв диалоговое окно расширенного фильтра.

    Пример расширенного автофильтра.

    В результате скрылись все ненужные строки исходной таблицы. На листе видно только те строки, которые соответствуют критериям для расширенного фильтра. В данном случаи — это информация по двум видам товаров – «Виноград» и «Крыжовник», которые продавались в магазине № 3 в период с 20.07.2017 по 23.07.2017.

    

    Примечание. Не обязательно в критериях указывать полностью название магазина достаточно указать по маске (* для всех символов) и число 3 – это значит любое название магазина, которое заканчивается на число 3. Расширенный фильтр понимает значения по маске.

    Читайте начало статьи: Использование автофильтра в Excel

    Обратите внимание! Если нам нужно изменить критерии фильтрования для основной таблицы нам уже не нужно каждый раз указывать диапазон критериев. Достаточно просто изменить значения в дополнительной таблице и нажать «ДАННЫЕ»-«Дополнительно»-«ОК».

    Темы статей

    Выбрать темы

    Налог на прибыль

    НДС

    РРО

    ЕСВ

    ФЛП

    Увольнение

    Штрафы

    НДФЛ

    Отпуск

    Единый налог

    Больничные

    Все темы

    Редакция БК

    logo journal

    Бухгалтер&Компьютер
    Май, 2012/№ 9

    Статья

    Excel: проверяем текст по маске

    img 1

    В почту нашей редакции периодически поступают вопросы по работе с текстом в программе Excel. Чтобы не перефразировать проблему своими словами, просто приведу цитату из одного такого письма: «Уважаемые сотрудники «Б & K»! В большинстве офисных приложений есть удобная функция для проверки текста на соответствие шаблону. При работе с документом в программе Word такая функция позволяет найти слова, которые содержат определенную комбинацию символов. В программе Excel при обработке баз данных инструментом «Автофильтр» использование шаблонов позволяет отобрать записи по признаку «Содержит». Но все эти функции вызываются через меню. А хотелось бы иметь возможность анализировать текст по шаблону при помощи формул. К сожалению, среди встроенных функций работы с текстом в MS Excel я подходящего варианта не нашел. Подскажите, как можно решить эту проблему?». Что ж, как говорится, задача поставлена, остается самая малость — найти ее решение. Чем мы сейчас и займемся.

    Николай КАРПЕНКО, канд. техн. наук, доцент кафедры прикладной математики и информационных технологий Харьковской национальной академии городского хозяйства

    Работа с шаблонами (или так называемыми масками) — одна из самых полезных функций, когда речь идет о работе с большими базами данных, а критерий поиска информации точно не известен. На практике такая ситуация встречается сплошь и рядом. Элементарный пример. У меня есть реестр выданных (или полученных) налоговых накладных. Реестр большой, несколько тысяч записей. И задача состоит в том, чтобы найти в этом реестре все документы по определенной фирме. Точное название фирмы (как она фигурирует в реестре) я не помню: может это «ООО «Фора»» или «ТОВ «Фора»», как-то так. Но тот факт, что в названии есть слово «Фора», я знаю наверняка. А это означает, что для поиска информации о фирме «Фора» мне нужно использовать не точное название предприятия, а некоторый шаблон. В данном случае он может выглядеть так: «*Фора*». В этом шаблоне на месте символа «*» может стоять любая строка произвольной длины. А сам шаблон описывает названия фирм, где вначале идет любой текст, затем есть слово «Фора», а за ним — снова произвольный текст. Под такой шаблон попадают, например, такие названия: «ТОВ «Фора»», «ООО «Фора»», «Фирма «Фора»», «»Фора», ltd» и т. д. Иными словами, шаблон «*Фора*» задает не точное, а приблизительное название предприятия для поиска его в реестре. А это именно то, что нам нужно. Остается реализовать такой поиск на практике.

    Здесь ситуация такова. В программе Excel (а речь идет именно о ней!) есть разные способы решения этой задачи. Например, поиск и выбор данных можно организовать при помощи автофильтра. В этом случае шаблон для поиска нужно ввести в настройках фильтра, и такая возможность в программе Excel предусмотрена. Другое дело, когда нужно не просто выбрать данные, а еще и обработать их. Для примера, обратимся к базе данных, фрагмент которой показан на рис. 1. Предположим, мы хотим написать формулу, которая просуммирует все значения из колонки «Сумма с НДС» для контрагента «ТОВ «Фора»». Нам известно, что название этого контрагента в базе может отличаться (например, в названии может быть лишний пробел). Но слово «Фора» в нем есть всегда, и оно является ключевым для организации поиска.

    img 2

    В принципе справиться с задачей мы могли бы при помощи сводных таблиц. Но проблема заключается в том, что в них нельзя использовать шаблоны для анализа текстовых строк. Второй вариант — воспользоваться формулами. Но и здесь проблема остается, так как из 24 встроенных текстовых функций MS Excel ни одна не работает с шаблонами. Причем эта ситуация характерна для всех версий программы — начиная от Excel 95 и вплоть до последней редакции Excel 2010.

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

    Создать функцию для сравнения строк совсем несложно, если воспользоваться возможностями языка Visual Basic for Application (VBA) программы MS Excel. Все, что нам придется сделать, — это открыть редактор Visual Basic и написать в нем буквально десяток строк. А в результате мы сможем существенно расширить свои возможности по обработке данных и заодно закрыть довольно-таки большой пробел в работе с текстом, который есть в стандартных средствах MS Excel.

    Создаем функцию проверки текста по шаблону

    Итак, мы решили, что для создания функции сравнения строк нам нужно написать небольшую программу на языке Visual Basic, который входит в состав MS Excel. Разумеется, программирование на VBA не является профильной задачей бухгалтера. Поэтому мы не будем углубляться в тонкости работы программы. Нам достаточно в общих чертах знать, как она выглядит и как вставить ее в документ MS Excel. Кроме того, полный текст функции мы выложим на сайте редакции, где вы сможете скачать его без каких-либо ограничений. Приступим.

    Если вы работаете с Excel 2010, то первое, что нужно сделать для работы с VBA, — это включить вкладку «Разработчик» (по умолчанию эта возможность отключена). Для этого делаем так.

    1. Открываем программу Excel. Загружаем файл с базой данных, как на рис. 1. В нашем примере она называется «РеестрНН.xls».

    2. Вызываем меню «Файл → Параметры» и выбираем раздел «Настройка ленты». Откроется окно, изображенное на рис. 2.

    img 3

    3. В группе параметров «Настройка ленты:» включаем флажок слева от строки «Разработчик» (рис. 2).

    4. В окне настроек нажимаем «ОК». В составе основного меню Excel 2010 появится пункт «Разработчик» (рис. 3).

    img 4

    5. Щелкаем левой кнопкой на разделе «Разработчик» главного меню. Лента примет вид, как на рис. 3.

    6. В группе «Код» щелкаем на иконке «Visual Basic» (рис. 3). Откроется окно, изображенное на рис. 4. Это и есть редактор Visual Basic.

    img 5

    В левой части окна показана структура проекта для текущей рабочей книги. В этот проект нам и нужно добавить текст своей функции.

    Важно! В Excel 2003 для вызова Visual Basic войдите в меню «Сервис → Макрос → Редактор Visual Basic». На экране появится окно, изображенное на рис. 4.

    Теперь наша задача — вставить в документ «РеестрНН.xls» текст функции для сравнения строк. Делаем так.

    1. Заходим на сайт по адресу http://www.bk.factor.ua/ru/publications/14/8/1106.html , скачиваем файл с текстом программы.

    2. Сохраняем результат на жесткий диск.

    3. Открываем скачанный файл в любом текстовом редакторе. Можно воспользоваться программой «Блокнот» или процессором MS Word. Перед вами должен появиться такой текст:

    ′ Функция для сравнения текстовых строк по маске

    Function MskCmp(Tekct As String, Maska As String, Reg As Boolean)

    If Not Reg Then

    Tekct = UCase(Tekct)

    Maska = UCase(Maska)

    End If

    If Tekct Like Maska Then

    MskCmp = True

    Else

    MskCmp = False

    End If

    End Function 

    4. Нажимаем «Ctrl+A» (выделить все).

    5. Комбинацией «Ctrl+C» копируем текст в буфер обмена.

    6. Переходим в окно Visual Basic (рис. 4).

    7. Вызываем меню «Insert → Module». Откроется окно для добавления текста программы.

    8. Нажимаем «Ctrl+V» (вставляем текст из буфера обмена).

    9. Нажимаем кнопку «Сохранить» и закрываем редактор Visual Basic. Функция добавлена.

    Прежде чем идти дальше посмотрим, что мы получили на самом деле. В результате работы с Visual Basic у нас появится дополнительная функция с именем «MskCmp()». У нее три параметра: текст (или ячейка с текстом), который мы будем проверять на соответствие шаблону, второй параметр — это сам шаблон. И, наконец, последний, третий параметр — это признак контроля регистра символов «Reg». Если этот параметр равен «0», то регистр функция контролировать не будет. Если параметр равен «1», то поиск будет выполняться с учетом регистра. То есть синтаксис нашей функции выглядит так: «=MaskCompare(Tekct; Maska; Reg), где «Tekct» — анализируемый текст, «Maska» — шаблон, «Reg» — признак контроля регистра символов. Главным и единственным критерием для поиска данных у функции «MskCmp()» является шаблон «Maska». Он может состоять из любых символов и специальных знаков (или так называемых символов подстановки). К таким символам относятся:

    «*» — означает, что на месте этого знака может находиться произвольное количество любых символов;

    «?» — на месте этого знака может стоять один символ;

    «#» — на месте этого символа может находиться любая цифра (от «0» до «9»);

    «[Список_символов]» — такая запись в шаблоне заменяет любой символ из указанного списка;

    «[!Список_символов]» — означает, что в строке могут находиться любые символы, кроме перечисленных в списке.

    Вот примеры нескольких шаблонов, которые можно использовать в функции «MskCmp()»:

    «###» — числа от 0 до 999;

    «?????» — слова из 5 букв;

    «м*н» — слова, которые начинаются на «м» и заканчиваются на «н»;

    «*[аостр]*» — все слова, содержащие хотя бы одну из букв «а», «о», «с», «т», «р»;

    «*[abcdefghijklmnopqrstuvwxyz]*» — все слова, в которых есть английские буквы.

    Применяем функцию MskCmp() для обработки базы данных

    Функция для проверки текста у нас есть. Можно использовать ее для решения нашей задачи. Напомню, что мы хотим в базе данных на рис. 1 посчитать итоговые значения для контрагентов, в названии которых есть слово «Фора». Делаем так.

    1. Открываем документ с базой «РеестрНН.xls» (рис. 1).

    2. Перед началом базы данных добавляем рабочую строку. Она будет первой на рабочем листе.

    3. Заполняем ячейки рабочей строки, а именно: в «B1» вводим текст «Фирма:». В ячейку «C1» вводим название контрагента, для которого нужно посчитать итоговые значения в базе данных. В нашем примере — это фирма «Фора».

    4. Становимся на ячейку «J2», вводим название заголовка «Пр». В этой колонке мы напишем признак суммирования.

    5. Становимся на ячейку «J4», щелкаем на значке «fx». Откроется окно «Мастер функций», изображенное на рис. 5.

    img 6

    6. В этом окне щелкаем на списке «Категория:», выбираем значение «Определенные пользователем». В списке «Выберите функцию:» появится список доступных функций пользователя для текущего документа.

    7. В этом списке выбираем вариант «MskCmp» и нажимаем «ОК». Откроется окно «Аргументы функции», изображенное на рис. 6.

    img 7

    8. В нем заполняем параметры, как показано на рисунке. Здесь адрес «E4» — это ссылка на ячейку с наименованием предприятия. Формула «»*»&$C$1&»*»» формирует маску для поиска, используя название контрагента из ячейки «C1». Сейчас в «C1» записано значение «Фора». Поэтому формула «»*»&$C$1&»*»» сформирует маску «*Фора*», которая выберет все предприятия, в названии которых встречается текст «Фора». Регистр при поиске мы не проверяем, поэтому параметр «Reg» вводим равным «0».

    9. В окне «Аргументы функции» нажимаем «ОК». В ячейке «J4» появится формула «=MskCmp(E4;»*»&$C$1&»*»;0)», а ее значение в ячейке «J4» будет «Истина». Все верно: в «E4» записано название «ТОВ «Фора»» и функция «MskCmp()» это правильно определила.

    10. Копируем формулу вниз по колонке «J» на всю высоту базы данных.

    Все, что нам остается, — добавить формулы суммирования с учетом значений в колонке «J». Сделать это можно при помощи функции «Сумм если()». Делаем так.

    1. Становимся на ячейку «G1».

    2. Вводим формулу выборочного суммирования: «=Суммесли($J4:$J10000;ИСТИНА;G4:G10000)». Эта формула просматривает значения блока «$J4:$J1000» (считаем, что в базе будет не более 1000 записей). Если в какой-то ячейке блока она находит значение «Истина», формула берет содержимое из соответствующей ячейки блока «G4:G10000» и добавляет его к общей сумме. В результате эта формула посчитает сумму значений из колонки «G», которые отмечены в столбце «J» как «Истина». Для примера на рис. 7 мы таким образом получим итоги по контрагенту «Фора».

    3. Копируем содержимое «G1» в буфер обмена и вставляем содержимое из буфера в ячейки «H1» и «I1». Результат нашей работы показан на рис. 7.

    img 8

    Что мы получили на самом деле? В ячейке «C1» нашей таблицы записано приблизительное название контрагента. Мы использовали это название для формирования маски. В колонке «Пр» записана функция «MskCmp()», которая сверяет названия предприятий из колонки «E» с маской для поиска. Если текст из «C1» содержится в названии предприятия, в соответствующей ячейке колонки «Пр» появится значение «ИСТИНА». В противном случае там будет «ЛОЖЬ». Теперь, имея такой признак, получить итоги уже не составит труда.

    Функцию «MskCmp()» можно с успехом использовать для анализа и проверки правильности данных. Такая задача очень актуальна при работе с большими таблицами, к которым планируется применить инструменты обработки данных и подведения итогов. Вот всего пара ситуаций, которые часто встречаются в практической работе.

    Пример 1. В реестре, изображенном на рис. 7, нужно проверить правильность наименований в колонке «E». Мы хотим убедиться, что все названия предприятий набраны русскими буквами. Дело в том, что визуально текст «ТОВ «Фора»» и «ТОВ «Фopа»» выглядит одинаково. Но во втором случае буквы «o» и «p» введены в латинице. И, разумеется, при подведении итогов, при сортировке или другой обработке данных эти отличия компьютер «увидит». И при обработке базы будет получен неверный результат. Решить проблему можно так.

    1. Находим свободный столбец. Пусть это будет колонка «К». Озаглавим ее как «Контроль».

    2. В ячейку «K2» вводим формулу «=MaskCompare(E4;»*[A-z]*»;0)» и копируем ее на всю высоту таблицы. Теперь все как на ладони. Все строки, помеченные в колонке «K» значением «Истина», содержат в названии предприятия латинские символы.

    Пример 2. В базе данных на рис. 2 нужно проверить, чтобы все коды ИНН содержали только числа. Сделать такую проверку для содержимого ячейки «F4» поможет формула «=MaskCompare(F4;»*[0123456789]»;0)». Далее копируем ее на всю высоту таблицы — и задача решена. Все строки, которые будут отмечены значением «ЛОЖЬ», содержат ошибку в коде ИНН.

    Пример 3. Лишние пробелы в названиях и других ключевых полях базы данных всегда являются источником ошибок. Чтобы проверить наличие двух пробелов в колонке «Наименование» реестра налоговых накладных, можно воспользоваться формулой «=MaskCompare(E4;»* *»;0)». В этой формуле маска «»* *»» — это символ «*», затем идут два пробела, а после них опять символ «*». Заполняем этой формулой рабочую колонку и смотрим на результат. Строки, где в рабочей колонке появятся значения «Истина», содержат в названии предприятия лишний пробел.

    Как видите, использование масок и шаблонов со специальными символами открывает широчайшие возможности по обработке данных в программе Excel. Все зависит от фантазии и творческого подхода к решению проблемы.

    А у меня на сегодня все. Успешной работы! Жду ваших писем, предложений и замечаний на bk@id.factor.ua, nictomkar@rambler.ru или на форуме редакции.

    Like this post? Please share to your friends:
  • Масло моторное q8 formula excel 5w40 отзывы
  • Маска номера телефона для excel
  • Масло моторное q8 formula excel 5w40 купить
  • Маска для поиска всех файлов word
  • Масло моторное q8 formula excel 5w40 артикул