Excel vba маска ввода

Обновлено: 06.07.2024

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

Макрос - это запрограммированная последовательность действий (программа, процедура), записанная на языке программирования Visual Basic for Applications (VBA). Мы можем запускать макрос сколько угодно раз, заставляя Excel выполнять последовательность любых нужных нам действий, которые нам не хочется выполнять вручную.

Способ 1. Создание макросов в редакторе Visual Basic

Для ввода команд и формирования программы, т.е. создания макроса необходимо открыть специальное окно - редактор программ на VBA, встроенный в Microsoft Excel.

macro1.jpg

  • В старых версиях (Excel 2003 и старше) для этого идем в меню Сервис - Макрос - Редактор Visual Basic(Toos - Macro - Visual Basic Editor).
  • В новых версиях (Excel 2007 и новее) для этого нужно сначала отобразить вкладку Разработчик (Developer) . Выбираем Файл - Параметры - Настройка ленты (File - Options - Customize Ribbon) и включаем в правой части окна флажок Разработчик (Developer) . Теперь на появившейся вкладке нам будут доступны основные инструменты для работы с макросами, в том числе и нужная нам кнопка Редактор Visual Basic(Visual Basic Editor)

    :

К сожалению, интерфейс редактора VBA и файлы справки не переводятся компанией Microsoft на русский язык, поэтому с английскими командами в меню и окнах придется смириться:

macro2.jpg

Макросы (т.е. наборы команд на языке VBA) хранятся в программных модулях. В любой книге Excel мы можем создать любое количество программных модулей и разместить там наши макросы. Один модуль может содержать любое количество макросов. Доступ ко всем модулям осуществляется с помощью окна Project Explorer в левом верхнем углу редактора (если его не видно, нажмите CTRL+R). Программные модули бывают нескольких типов для разных ситуаций:

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

macro3.jpg

macro4.jpg

macro5.jpg

Обычный макрос, введенный в стандартный модуль выглядит примерно так:

macro6.jpg

Давайте разберем приведенный выше в качестве примера макрос Zamena:

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

Способ 2. Запись макросов макрорекордером

Макрорекордер - это небольшая программа, встроенная в Excel, которая переводит любое действие пользователя на язык программирования VBA и записывает получившуюся команду в программный модуль. Если мы включим макрорекордер на запись, а затем начнем создавать свой еженедельный отчет, то макрорекордер начнет записывать команды вслед за каждым нашим действием и, в итоге, мы получим макрос создающий отчет как если бы он был написан программистом. Такой способ создания макросов не требует знаний пользователя о программировании и VBA и позволяет пользоваться макросами как неким аналогом видеозаписи: включил запись, выполнил операци, перемотал пленку и запустил выполнение тех же действий еще раз. Естественно у такого способа есть свои плюсы и минусы:

  • Макрорекордер записывает только те действия, которые выполняются в пределах окна Microsoft Excel. Как только вы закрываете Excel или переключаетесь в другую программу - запись останавливается.
  • Макрорекордер может записать только те действия, для которых есть команды меню или кнопки в Excel. Программист же может написать макрос, который делает то, что Excel никогда не умел (сортировку по цвету, например или что-то подобное).
  • Если во время записи макроса макрорекордером вы ошиблись - ошибка будет записана. Однако смело можете давить на кнопку отмены последнего действия (Undo) - во время записи макроса макрорекордером она не просто возрвращает Вас в предыдущее состояние, но и стирает последнюю записанную команду на VBA.

Чтобы включить запись необходимо:

  • в Excel 2003 и старше - выбрать в меню Сервис - Макрос - Начать запись(Tools - Macro - Record New Macro)
  • в Excel 2007 и новее - нажать кнопку Запись макроса (Record macro) на вкладке Разработчик (Developer)

Затем необходимо настроить параметры записываемого макроса в окне Запись макроса:

macro7.jpg

  • Имя макроса - подойдет любое имя на русском или английском языке. Имя должно начинаться с буквы и не содержать пробелов и знаков препинания.
  • Сочетание клавиш - будет потом использоваться для быстрого запуска макроса. Если забудете сочетание или вообще его не введете, то макрос можно будет запустить через меню Сервис - Макрос - Макросы - Выполнить(Tools - Macro - Macros - Run) или с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или нажав ALT+F8.
  • Сохранить в. - здесь задается место, куда будет сохранен текст макроса, т.е. набор команд на VBA из которых и состоит макрос.:
    • Эта книга - макрос сохраняется в модуль текущей книги и, как следствие, будет выполнятся только пока эта книга открыта в Excel
    • Новая книга - макрос сохраняется в шаблон, на основе которого создается любая новая пустая книга в Excel, т.е. макрос будет содержаться во всех новых книгах, создаваемых на данном компьютере начиная с текущего момента
    • Личная книга макросов - это специальная книга Excel с именем Personal.xls, которая используется как хранилище макросов. Все макросы из Personal.xls загружаются в память при старте Excel и могут быть запущены в любой момент и в любой книге.

    После включения записи и выполнения действий, которые необходимо записать, запись можно остановить командой Остановить запись (Stop Recording) .

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

    Управление всеми доступными макросами производится в окне, которое можно открыть с помощью кнопки Макросы (Macros) на вкладке Разработчик (Developer) или - в старых версиях Excel - через меню Сервис - Макрос - Макросы (Tools - Macro - Macros) :

    macro8.jpg

    • Любой выделенный в списке макрос можно запустить кнопкой Выполнить(Run) .
    • Кнопка Параметры(Options) позволяет посмотреть и отредактировать сочетание клавиш для быстрого запуска макроса.
    • Кнопка Изменить(Edit) открывает редактор Visual Basic (см. выше) и позволяет просмотреть и отредактировать текст макроса на VBA.

    Создание кнопки для запуска макросов

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

    Кнопка на панели инструментов в Excel 2003 и старше

    Откройте меню Сервис - Настройка (Tools - Customize) и перейдите на вкладку Команды (Commands) . В категории Макросы легко найти веселый желтый "колобок" - Настраиваемую кнопку (Custom button) :

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

    Кнопка на панели быстрого доступа в Excel 2007 и новее

    Щелкните правой кнопкой мыши по панели быстрого доступа в левом верхнем углу окна Excel и выберите команду Настройка панели быстрого доступа (Customise Quick Access Toolbar) :

    macro11.jpg

    Затем в открывшемся окне выберите категорию Макросы и при помощи кнопки Добавить (Add) перенесите выбранный макрос в правую половину окна, т.е. на панель быстрого доступа:

    macro12.jpg

    Кнопка на листе

    Этот способ подходит для любой версии Excel. Мы добавим кнопку запуска макроса прямо на рабочий лист, как графический объект. Для этого:

    • В Excel 2003 и старше - откройте панель инструментов Формы через меню Вид - Панели инструментов - Формы (View - Toolbars - Forms)
    • В Excel 2007 и новее - откройте выпадающий список Вставить (Insert) на вкладке Разработчик (Developer)

    Выберите объект Кнопка (Button) :

    macro13.jpg

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

    Создание пользовательских функций на VBA

    Создание пользовательских функций или, как их иногда еще называют, UDF-функций (User Defined Functions) принципиально не отличается от создания макроса в обычном программном модуле. Разница только в том, что макрос выполняет последовательность действий с объектами книги (ячейками, формулами и значениями, листами, диаграммами и т.д.), а пользовательская функция - только с теми значениями, которые мы передадим ей как аргументы (исходные данные для расчета).

    Чтобы создать пользовательскую функцию для расчета, например, налога на добавленную стоимость (НДС) откроем редактор VBA, добавим новый модуль через меню Insert - Module и введем туда текст нашей функции:

    macro14.jpg

    Обратите внимание, что в отличие от макросов функции имеют заголовок Function вместо Sub и непустой список аргументов (в нашем случае это Summa). После ввода кода наша функция становится доступна в обычном окне Мастера функций (Вставка - Функция) в категории Определенные пользователем (User Defined) :

    macro15.jpg

    После выбора функции выделяем ячейки с аргументами (с суммой, для которой надо посчитать НДС) как в случае с обычной функцией:

    Текстовое поле на пользовательской форме

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

    Если с помощью текстового поля требуется вводить заранее известную информацию, элементы которой можно сгруппировать в список, то в этом случае удобнее вместо элемента управления TextBox использовать ListBox или ComboBox.

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

    Иногда, если на пользовательской форме используется только одно текстовое поле и кнопка «OK» (или кнопки «OK» и «Отмена»), для ввода информации такую форму можно заменить функцией InputBox, а для вывода информации, когда не требуется редактирование отображаемого текста, – функцией MsgBox.

    Свойства текстового поля

    Свойство Описание
    AutoSize* Автоподбор размера текстового поля. True – размер автоматически подстраивается под длину размещаемой строки. False – размер элемента управления определяется свойствами Width и Height.
    AutoTab Включение автоматической табуляции – передачи фокуса следующему элементу управления при достижении максимального числа символов при значениях свойства MaxLenght > 0. True – автоматическая табуляция включена, False – выключена.
    ControlSource Ссылка на источник данных для поля TextBox.
    ControlTipText Текст всплывающей подсказки при наведении курсора на TextBox.
    Enabled Возможность ввода, редактирования, копирования, вставки, удаления текста. True – все перечисленные опции включены, False – выключены (цвет текста в поле становится серым).
    Font Шрифт, начертание и размер текста в поле.
    Height Высота текстового поля.
    Left Расстояние от левого края внутренней границы пользовательской формы до левого края текстового поля.
    Locked Запрет ввода, редактирования, удаления текста. True – перечисленные опции запрещены (разрешено выделение и копирование текста), False – перечисленные опции разрешены.
    MaxLenght Максимальная длина строки. По умолчанию – 0, что означает – ограничений нет.
    Multiline Устанавливает многострочный (True) или однострочный (False) режим ввода-вывода текста.
    PasswordChar Задает символ, который будет отображаться при вводе знаков пароля.
    TabIndex Определяет позицию элемента управления в очереди на получение фокуса при табуляции, вызываемой свойством AutoTab или нажатием клавиш «Tab», «Enter». Отсчет начинается с 0.
    Text** Текстовое содержимое (значение) поля (=Value).
    TextAlign Выравнивание текста: 1 (fmTextAlignLeft) – по левому краю, 2 (fmTextAlignCenter) – по центру, 3 (fmTextAlignRight) – по правому краю.
    Top Расстояние от верхнего края внутренней границы пользовательской формы до верхнего края текстового поля.
    Value** Текстовое содержимое (значение) поля (=Text).
    Visible Видимость текстового поля. True – TextBox отображается на пользовательской форме, False – TextBox скрыт.
    Width Ширина текстового поля.
    WordWrap Актуально при Multiline = True. Переход на новую строку при достижении границы текстового поля. True – переход включен, False – переход выключен.

    * При использовании свойства AutoSize в значении True следует учитывать, что автоматическое изменение размеров поля при вводе текста может нарушить дизайн пользовательской формы.
    ** Text и Value — это два обозначения одного и того же свойства. Если в окне Properties элемента управления TextBox в поле свойства Text начать ввод строки, в поле Value ввод будет дублироваться. И наоборот, при вводе текста в поле свойства Value, дублирование произойдет в поле Text.

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

    Свойства BackColor, BackStyle, BorderColor, BorderStyle отвечают за внешнее оформление текстового поля и его границ. Попробуйте выбирать доступные значения этих свойств в окне Properties, наблюдая за изменениями внешнего вида элемента управления TextBox на проекте пользовательской формы.

    Привязка текстового поля к ячейке

    Привязать элемент управления TextBox к ячейке на рабочем листе можно двумя способами.

    1. В окне Properties элемента управления TextBox в поле свойства ControlSource необходимо указать адрес ячейки:

    Метод Application.InputBox предназначен в VBA Excel для вывода диалогового окна с более расширенными возможностями, чем диалоговое окно, отображаемое функцией InputBox. Главным преимуществом метода Application.InputBox является возможность автоматической записи в поле ввода диапазона ячеек (в том числе одной ячейки ) путем его выделения на рабочем листе книги Excel и возвращения различных данных, связанных с ним, а также проверка соответствия возвращаемого значения заданному типу данных.

    Синтаксис метода

    Application.InputBox ( Prompt , Title , Default , Left , Top , HelpFile , HelpContextID , Type )

    Обязательным параметром метода Application.InputBox является Prompt, если значения остальных параметров явно не указаны, используются их значения по умолчанию.

    Обратите внимание на то, что

    • оператор InputBox вызывает функцию InputBox, а
    • оператор Application.InputBox вызывает метод InputBox.

    Чтобы не было путаницы, метод InputBox пишут как метод Application.InputBox, в том числе и в справке разработчика.

    Параметры метода

    * Параметры Left и Top учитываются при отображении диалогового окна методом Application.InputBox в Excel 2003, а в последующих версиях Excel 2007-2016 уже не работают.
    **При первом запуске горизонтальное выравнивание устанавливается по центру, при последующих — форма отобразиться в том месте, где ее последний раз закрыли.
    ***При первом запуске вертикальное расположение приблизительно равно 1/3 высоты экрана, при последующих — форма отобразиться в том месте, где ее последний раз закрыли.
    **** Если будут указаны параметры HelpFile и HelpContextID, в диалоговом окне появится кнопка справки.

    Возвращаемые значения

    Диалоговое окно, созданное методом Application.InputBox, возвращает значение типа Variant и проверяет соответствие возвращаемого значения типу данных, заданному параметром Type. Напомню, что тип значений Variant является универсальным контейнером для значений других типов, а в нашем случае для возвращаемых в зависимости от значения параметра Type.

    Аргументы параметра Type и соответствующие им типы возвращаемых значений:

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

    Синтаксис

    выражения. InputMask

    выражение Переменная, представляющие объект TextBox.

    Заметки

    Свойство InputMask может содержать до трех разделов, разделенных запятой (;).

    Section Описание
    Первый Указывает сам входной маски; Например! (999) 999-9999. Список символов, которые можно использовать для определения маски ввода, см. в следующей таблице.
    Секунды Указывает, сохраняет ли Microsoft Access буквальные символы отображения в таблице при вводе данных. Если для этого раздела используется 0, все буквальные символы отображения (например, скобки в маске ввода номера телефона) сохраняются со значением; Если введите 1 или оставьте этот раздел пустым, сохраняются только символы, введите в управление.
    Третий Указывает символ, отображаемый в Access для пространства, в котором необходимо ввести символ в маске ввода. В этом разделе можно использовать любой символ; чтобы отобразить пустую строку, используйте пространство, заключенное в кавычках ("").

    В Visual Basic для этого свойства используется строковая экспрессия. Например, ниже указана маска ввода для управления текстовым полем, используемого для ввода номера телефона.

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

    Маску ввода можно определить с помощью следующих символов.

    При установке свойства InputMask на слово "Пароль" создается управление вводом пароля. Любой символ, введите его, хранится в качестве символа, но отображается как звездочка (*). Для предотвращения отображения вводимых символов на экране используется маска ввода пароля.

    При вводе данных в поле, для которого определена маска ввода, данные всегда вводимы в режиме Overtype. Если для удаления символа используется клавиша Backspace, он заменяется пустым пространством.

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

    Только символы, вводимые непосредственно в поле управления или комбо, влияют на маску ввода. Доступ игнорирует любые входные маски при импорте данных, запуске запроса действий или вводе символов в области управления путем установки свойства Text управления в Visual Basic или с помощью действия SetValue в макрос.

    Если вы определили маску ввода и задали свойство Format для того же поля, свойство Format имеет приоритет при отобраии данных. Это означает, что даже если вы сохранили маску ввода, маска ввода игнорируется при отформатировании и отобралении данных. Данные в самой таблице не изменены; Свойство Format влияет только на отображение данных.

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

    Поддержка и обратная связь

    Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.

    ​Смотрите также​​ или строки; замена​ 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)​: Спасибо огромное! Работает.​

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

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

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

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

    ​ то не только​​ замены!​​ их.​Чтобы заменить текст или​; на вкладке "​Вопросительный знак заменяет один​​ оперативнее обеспечивать вас​​ книги. Как настроить​ 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​: Добрый день!​​Главная​​ для замены в​" доступны только​ если ввести​​ на вашем языке.​​ ТОЛЬКО в выделенном​

    ​ 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 а как​​ что Вам просто​​ столбца к столбцу​

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

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

    ​ после нажатия выполнить​ 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; следующая​

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

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

    Советы

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

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

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

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

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

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

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

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

    С учетом регистра

    ​Гиперссыльный​​ Спасибо всем огромное!​ Результат щелкаете правой​ файла​ 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. В ячейке​ перед буквой столбца​Нажимайте кнопку​​ Если поле​ ​Ячейка целиком​

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

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


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

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

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

    ?​​ (на английском языке).​ заменить в выделенной​​ работает, крутая штука​​ из текста только​ актуально форматирование на​ = 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​

    ​ описанное вами условие.​​ переделать на массивах/словарях​​ 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()​ знака '$'? Т.е.​Заменить все​ кнопку​.​ листе или во​

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

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

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

    ​ порядка 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​
    ​ необходимости?​

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

    ​ какие-нибудь "левые" значения?​​ 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​

    ​Найти​​ заменить, а он​ формат на следующий:​ решения, который вам​: Можно забирать все​ 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="Турция*";"Турция";"Израиль")​​да да да,​​ в "замене".​​ :​, чтобы открыть параметры​
    ​или​

    ​работать не хочет.​​ об этом и​как сделать маску​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​ ячейки со сдвигом​ каким будет решение,​ ) помогло​ менять.​=ПОДСТАВИТЬ (ПОДСТАВИТЬ (ПОДСТАВИТЬ​и нажмите кнопку​ При нажатии кнопки​примечания​В условиях поиска можно​

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

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

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

    ​ 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​ ни как, перебирайте​ каким адресам расположено​

    Читайте также: