Массовое редактирование формул excel

Всем привет!

Прошерстил приемы и поиск по темам по запросу «именован». Не нашел того, что хотел. Суть проблемы.

В книге используется несколько сотен именованных диапазонов похожих друг на друга (формула везде одна и та же, отличаются только названия листов, на которых эта формула подбирает диапазон). И во всех есть одна проблема — ссылка на другую книгу:

=OFFSET(Sheet1!$H$182,,,,VLOOKUP(Sheet1!$E$5,’C:UsersusernameDocuments[file.xlsx]Sheet1′!$I$2:$J$13,2,)*2+2);Sheet1!$AH$182

Вопрос. Как быстро во всех диапазонах убрать отсылку к другой книге? Я понимаю, что, скорее всего, это сделать можно только макросом. С макросами сталкивался очень поверхностно, но очень хочу научиться. Код VBA видел и даже писал на нем макросы, интуитивно понимая что надо подправить и выполняя пошаговую отладку. Осознанным кодом это назвать было нельзя. Я сначала в визарде создавал макрос, а потом смотрел, как он реализовался в виде кода, и уже этот код правил, там где видел нестыковки. У меня математическое образование и с алгоритмами я знаком. Так что интуитивно там было понятно что к чему. Попробовал и в этом случае так сделать, но не получилось. Пожалуйста, помогите с кодом.

P.S. Я за третий день создаю третью тему. Тут так принято? Один вопрос — одна тема?

Финансы в Excel

Редактирование формул

Подробности
Создано 09 Октябрь 2012
Содержание
Редактирование формул
Мастер функций
Редактор формул в ячейке
Область редактора формул
Автозавершение названия функции
Выбор диапазонов
Структурные выражения
Комментарии к формуле
Отладка формул
Разложение формулы на составляющие
Вычисления внутри формулы
Влияющие значения
Активизация редактора формул
Использование кнопок зависимостей формулы
Принудительное выделение влияющих ячеек

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

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

Ограничения на сложность формул стали еще менее строгими при изменении формата файла Excel на xlsx (версия 2007 и более поздние):

  XLS XLSX
Длина формулы
1000  8000
Уровни вложенности
7  64

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

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

Редактирование формул

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

  • Мастер функций
  • Редактор формул непосредственно в ячейке
  • Редактор формул в отдельной области главного окна

У каждого метода есть свои достоинства и недостатки. Разберем их в контексте создания сложных формул.

Мастер функций

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

alt

Мастер функций, безусловно, может быть полезен начинающим пользователям, но, как ни странно, мы настоятельно не рекомендуем его использование, особенно если вы стремитесь освоить Excel на профессиональном уровне. Главный недостаток этого интерфейса – это неудобство работы со сложными формулами – формально имеется возможность построения многоуровневых выражений, но на практике это выглядит совсем не наглядно и не удобно. Изучайте список функций через справочную систему или файлы-примеры. Главное – запомнить названия часто используемых функций (достаточно даже запомнить несколько первых букв в названиях). Современные версии Excel отображают список параметров в виде всплывающих подсказок в редакторе формул.

Редактор формул в ячейке

Параметры Excel по умолчанию установлены таким образом, что при вводе формулы с клавиатуры (нажатии кнопки «=») редактирование выражения осуществляется непосредственно в активной ячейке:

alt

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

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

Область редактора формул

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

alt

alt

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

Автозавершение названия функции

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

alt

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

Выбор диапазонов

Если в качестве параметров функций используются ячейки или диапазоны ячеек, то в большинстве случаев для их выбора проще использовать выделение мышью непосредственно в области рабочего листа. Это очень удобный и наглядный способ работы, и осваивается он довольно быстро. Другое дело, что многие пользователи после этого остаются в уверенности, что только так и можно указывать параметры функции. Это не так. Возможность выделения при помощи мыши всего лишь интерфейсное средство, облегчающее ввод с клавиатуры. То есть, если ввести выражение «A1:A1000» – это будет равносильно выделению мышью тысячи ячеек первого столбца. Очевидно, что это не очень просто – требуется прокрутка видимой области выделения (скроллинг) с точным поиском тысячной строки. В некоторых случаях просто ввести адрес с клавиатуры даже быстрее: в примере набирается «a1:a1000» (регистр не важен), это 8 нажатий клавиш.

Еще одним способом является смешанный тип ввода, когда сначала выделяется начало диапазона при помощи мыши, а правильный размер вводитсья с клавиатуры. В предыдущем примере, можно выделить A1:A10 (десять видимых ячеек), потом сразу же ввести с клавиатуры «00» — получится искомый диапазон A1:A1000. Выражение будет работать верно, но скроллинг при помощи мыши при этом не требуется.

Абсолютная и относительная адресация диапазонов задается только при помощи клавиатуры одним из нескольких доступных способов:

  • При работе в A1-адресации явным указателем признака абсолютной адресации является символ «$» (доллар) ввод с клавиатуры «$a$1:$a$1000».
  • При работе в R1C1-адресации абсолютные ссылки указываются без использования квадратных скобок – ввод с клавиатуры «R1C1:R1C1000».
  • Выделение диапазона, а затем последовательное нажатие клавиши F4 для подбора нужного типа адресации. В примере адрес будет меняться следующим образом:
    1. $A$1:$A$1000
    2. A$1:A$1000
    3. $A1:$A1000
    4. A1:A1000 (исходное состояние)

Способ с использованием F4 на практике оказывается обычно быстрее для ввода абсолютных ссылок, закрепленных и по горизонтали, и по вертикали. Для ввода смешанных ссылок на диапазон проще указать мышью нужную область, а затем расставить символы «$» в нужные позиции выражения.

Структурные выражения

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

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

alt

Теперь обратите внимание ту же формулу, но записанную в многострочном варианте:

alt

Очевидно, что второй вариант более понятен по смыслу выполняемых расчетов.

При вводе многострочных выражений используется сочетание клавиш Alt+Enter для принудительного переноса строки.

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

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

 

=ЕСЛИ($BD11=0;
  "";
  СУММ(
    ЕСЛИ(Доходы!$I$6:$I$503=$BD11;
        ЕСЛИ(Доходы!$H$6:$H$503=C$7;
          Доходы!$K$6:$K$503;
          0
        );
        0
    )
  )
+
  ЕСЛИ($BG110;
    0;
    СУММ(
      ЕСЛИ($BF12:$BF$59=$BD11;
        D12:D$59;
        0
      )
    )
  )
)
 

Комментарии к формуле

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

Существует способ написания комментариев внутри формулы. Для этого используется любая функция, преобразующая текст в число, например: ДЛСТР, КОДСИМВ; затем это число прямо в формуле умножается на ноль, а результат прибавляется в конец формулы.

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

alt

Отладка формул

Даже опытные пользователи Excel зачастую «пугаются» при взгляде на слишком сложные формулы, написанные в одну строку. Кажется, что разобраться в этом выражении настолько сложно, что легче написать заново. Что, кстати, иногда верно, особенно если вам известен альтернативный способ решения задачи. Разберем несколько интерфейсных методов работы, которые могут облегчить понимание сложных формул. Эти же методы используются для поиска ошибок и проверки вычислений.

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

Разложение формулы на составляющие

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

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

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

Есть противопоказания к применению этого метода.

  • Если формула содержит функции вычисляемой адресации (СМЕЩ, СТРОКА, ЧИСЛСТОЛБ, ДВССЫЛ), то применять метод разложения с использованием других ячеек некорректно. Надо четко отслеживать изменения в адресах при перемещении составляющих формулы в другие ячейки, что не всегда удобно.
  • Если в сложной формуле используется обработка массивов, то надо четко понимать, какие промежуточные ячейки требуют такой обработки (вводятся через Ctrl+Shift+Enter), а какие нет. При обратной сборке формулы это также надо учитывать.

Вычисления внутри формулы

Это, пожалуй, самый полезный способ отладки формул. Excel позволяет проводить вычисления выражений внутри сложной формулы. Для этого в редакторе формул выделяется блок текста, который должен быть вычислен, и нажимается клавиша F9 – в результате выделенный блок будет заменен на рассчитанное значение. Можно выделить другой блок, и повторить расчет, не покидая редактор формул.

alt

alt

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

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

Влияющие значения

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

Отобразить влияющие ячейки можно несколькими способами.

Активизация редактора формул

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

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

Использование кнопок зависимостей формулы

Другим популярным методом работы с влияющими ячейками является использование специальных кнопок интерфейса Excel:

alt

alt

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

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

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

Неприятным недостатком этого метода отладки формул является сброс возможности отмены операций после любого нажатия на кнопку графических зависимостей (не работает Ctrl+z).

Принудительное выделение влияющих ячеек

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

Для проведения операции в Excel 2007/2010 выберите на ленте «Главная Найти и выделить Выделение групп ячеек»; в открывшемся диалоге отметьте пункт «Влияющие ячейки» (только верхнего или всех уровней) и нажмите «Ок».

Можно использовать последовательную комбинацию клавиш (русская раскладка): Ctrl+п, Alt+в, в, Enter (работает и в предыдущих версиях Excel). Если Windows настроен по умолчанию в английскую раскладку клавиатуры (см. региональные настройки), то для этих же целей доступна комбинация клавиш Ctrl+[ (Ctrl+] для зависимых ячеек).

Еще один вариант выделения влияющих ячеек это двойной клик мыши на анализируемой ячейке. Эта функция работает верно, только если выключен параметр Excel «Разрешить редактирование в ячейках». Если данный параметр включен, то будет произведен переход в режим редактора формул.

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

Смотри также

» Преимущества нового формата рабочей книги

Начиная с версии 2007, Excel позволяет использовать новый формат рабочей книги (XLSX). По сравнению с прошлым форматом (XLS), поддерживающимся,…

» Проблемы Excel

Большинство статей на нашем сайте прямо или косвенно описывают возможности и достоинства Excel. Это программа используется ежедневно…

» Основные принципы оптимизации работы в электронных таблицах

Знание специальных приемов работы в электронных таблицах Excel позволяет в разы сократить время разработки моделей, повысить…

» Надстройки Excel

Те, кто программирует на VBA для Excel, в определенный момент задумываются над распространением своих приложений в качестве независимых…

» Автоматизация в Excel

Создание программного кода для автоматизации определенных процедур открывает практически безграничные возможности по развитию и…

Возможно, вас интересует: функция ЗАМЕНИТЬ в Excel.

  • «Найти и заменить» в Excel
    • Горячие клавиши
    • Процедура «Найти и заменить» не работает
    • Подстановочные знаки, или как найти “звёздочку”
  • Замена нескольких значений на несколько
    • Массовая замена с помощью функции “ПОДСТАВИТЬ”
    • Файл-шаблон с формулой множественной замены
  • Заменить несколько значений на одно
    • С помощью функции «ПОДСТАВИТЬ»
    • С помощью регулярных выражений
  • Массовая замена в !SEMTools
    • Пример: замена символов по вхождению
    • Пример: замена списка слов на другой список слов

Процедура поиска и замены данных — одна из самых востребованных в Excel. Базовая процедура позволяет заменить за один заход только одно значение, но зато множеством способов. Рассмотрим, как эффективно работать с ней.

Горячие клавиши

Сочетания клавиш ниже заметно ускорят работу с инструментом:

  • Для запуска диалогового окна поиска — Ctrl + F.
  • Для запуска окна поиска и замены — Ctrl + H.
  • Для выделения всех найденных ячеек (после нажатия кнопки «найти всё») — Ctrl + A.
  • Для очистки всех найденных ячеек — Ctrl + Delete.
  • Для ввода одних и тех же данных во все найденные ячейки — Ввод текста, Ctrl + Enter.

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

Находим все пустые ячейки в диапазоне и заполняем их нулями или одним значением с помощью горячих клавиш

Процедура «Найти и заменить» не работает

Я сам когда-то неоднократно впадал в ступор в этой ситуации. Уверен и видишь своими глазами, что искомый паттерн в данных есть, но Excel при выполнении процедуры поиска сообщает:

Не удалось ничего найти по вашему запросу

или при замене:

Мы не нашли ничего, что нужно было заменить

Так вот, совет нажать кнопку “Параметры” в обоих этих сообщениях действительно полезен — там наверняка активен чекбокс “Учитывать регистр” или “Ячейка целиком”, которые мешают Excel найти искомое. Excel, в свою очередь, сохраняет конфигурацию последнего поиска.

Статус опций “Учитывать регистр” и “Ячейка целиком” виден после нажатия кнопки “Параметры”.

Подстановочные знаки, или как найти “звёздочку”

Сухая официальная справка по Excel сообщает:

— что можно использовать подстановочные символы “*” и “?”;
— что “*” и “?” означают несколько символов, включая их отсутствие, и один любой символ;
— что их можно использовать для соответствующих процедур поиска.

Чего не говорит справка, так это того, что в комбинации с опцией “ячейка целиком” эти символы позволяют, не прибегая к помощи расширенного фильтра и процедуры поиска группы ячеек:

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

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

В примере ниже мы находим все двузначные числа, затем числа, заканчивающиеся и начинающиеся на 7, и, наконец, все непустые ячейки. Напомню, выделить все результаты поиска помогает горячее сочетание клавиш Ctrl + A.

Так а как найти звёздочку?

Действительно, забыл. Чтобы найти «звёздочку», нужно в окошке поиска ставить перед ней знак ~ (тильда), он находится обычно под клавишей Esc. Это позволяет экранировать “звездочку”, как и вопросительный знак, и не воспринимать их как служебные символы.

Замена нескольких значений на несколько

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

Тем не менее, если очень нужно, любую задачу можно решить. В зависимости от того, на что вы хотите заменить, могут помочь комбинации функций, регулярные выражения, а в самых сложных случаях — надстройка !SEMTools.

Эта задача более сложная, чем замена на одно значение. Как ни странно, функция «ЗАМЕНИТЬ» здесь не подходит — она требует явного указания позиции заменяемого текста. Зато может помочь функция «ПОДСТАВИТЬ».

Массовая замена с помощью функции “ПОДСТАВИТЬ”

Используя несколько условий в сложной формуле, можно производить одновременную замену нескольких значений. Excel позволяет использовать до 64 уровней вложенности — свобода действий высока. Например, вот так можно перевести кириллицу в латиницу:

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

Но у решения есть и свои недостатки:

  • Функция ПОДСТАВИТЬ регистрозависимая, что заставляет при замене одного символа использовать два его варианта — в верхнем и нижнем регистрах. Хотя в некоторых случаях, как, например, на картинке выше, это и преимущество.
  • Максимум 64 замены — хоть и много, но все же ограничение.
  • Формально процедура замены таким способом будет происходить массово и моментально, однако длительность написания таких формул сводит на нет это преимущество. За исключением случаев, когда они будут использоваться многократно.

Файл-шаблон с формулой множественной замены

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

Файл доступен по ссылке, но можно и не скачивать его, а просто скопировать текст формулы ниже и вставить ее в любую ячейку, кроме диапазона A1:B64. Формула заменяет в ячейке C1 значения в столбце A стоящими напротив в столбце B.

функция для замены нескольких букв
Формула в файле-шаблоне для множественной замены на примере транслитерации

А вот и она сама (тройной клик по любой части текста = выделить всю формулу): обращается к ячейке D1, делая 64 замены по правилам, указанным в ячейках A1-B64. При этом в столбцах можно удалять значения — это не нарушит её работу.

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(D1;$A$1;$B$1);$A$2;$B$2);$A$3;$B$3);$A$4;$B$4);$A$5;$B$5);$A$6;$B$6);$A$7;$B$7);$A$8;$B$8);$A$9;$B$9);$A$10;$B$10);$A$11;$B$11);$A$12;$B$12);$A$13;$B$13);$A$14;$B$14);$A$15;$B$15);$A$16;$B$16);$A$17;$B$17);$A$18;$B$18);$A$19;$B$19);$A$20;$B$20);$A$21;$B$21);$A$22;$B$22);$A$23;$B$23);$A$24;$B$24);$A$25;$B$25);$A$26;$B$26);$A$27;$B$27);$A$28;$B$28);$A$29;$B$29);$A$30;$B$30);$A$31;$B$31);$A$32;$B$32);$A$33;$B$33);$A$34;$B$34);$A$35;$B$35);$A$36;$B$36);$A$37;$B$37);$A$38;$B$38);$A$39;$B$39);$A$40;$B$40);$A$41;$B$41);$A$42;$B$42);$A$43;$B$43);$A$44;$B$44);$A$45;$B$45);$A$46;$B$46);$A$47;$B$47);$A$48;$B$48);$A$49;$B$49);$A$50;$B$50);$A$51;$B$51);$A$52;$B$52);$A$53;$B$53);$A$54;$B$54);$A$55;$B$55);$A$56;$B$56);$A$57;$B$57);$A$58;$B$58);$A$59;$B$59);$A$60;$B$60);$A$61;$B$61);$A$62;$B$62);$A$63;$B$63);$A$64;$B$64)

Заменить несколько значений на одно

С помощью функции «ПОДСТАВИТЬ»

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

=ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(ПОДСТАВИТЬ(A1;"1";"");"2";"");"3";"");"4";"");"5";"");"6";"");"7";"");"8";"");"9";"");"0";"")

С помощью регулярных выражений

Важно: регулярные выражения не поставляются в Excel “из коробки”, но формулы ниже доступны бесплатно, если установить надстройку !SEMTools.

Регулярные выражения (RegEx, регулярки) — наиболее удобное решение, когда нужно заменить несколько символов на один. Все эти несколько символов обычным способом безо всяких разделителей нужно перечислить внутри квадратных скобок. Примеры формул:

=regexreplace(A1;"d";"#")
=regexreplace(A1;"w";"#")
=regexreplace(A1;"а-яА-Я";"#")
=regexreplace(A1;"s";"_")

Первая заменяет на символ “#” все цифры, вторая — все английские буквы, а третья — все кириллические символы в верхнем и нижнем регистре. Четвёртая заменяет любые пробелы, в том числе табуляцию и переносы строк, на нижнее подчеркивание.

замена регулярными выражениями
Массовая замена символов регулярными выражениями при установленной надстройке !SEMTools

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

Массовая замена в !SEMTools

Надстройка для Excel !SEMTools позволяет в пару кликов производить замены на всех уровнях:

  • символов и их сочетаний,
  • паттернов регулярных выражений,
  • слов,
  • целых ячеек (в некоторой степени аналог ВПР).
Массовая замена в Excel с !SEMTools
Меню инструментов массовой замены в !SEMTools

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

Пример: замена символов по вхождению

Аналог обычной процедуры замены без учета регистра заменяемых символов, по вхождению. С одним отличием: здесь замена массовая и можно выбрать сколько угодно строк с парами «заменяемое-заменяющее» значение.

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

Массовая замена символов по вхождению на примере Leet Language (некоторые английские буквы заменяются на похожие цифры)

Пример: замена списка слов на другой список слов

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

замена списка слов на одно и то же слово
Замена списка слов на другой список в !SEMTools

С версии !SEMTools 9.18.18 появилась опция: при замене списка слов не учитывать пунктуацию в исходных предложениях, а регистр слов теперь сохраняется.

замена списка слов на другой список в Excel

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

Скачивайте надстройку !SEMTools и делайте массовую замену символов, слов или целых списков в Excel!


Смотрите также по теме поиска и замены данных в Excel:

  • Найти заглавные/строчные буквы в ячейке;
  • Найти латиницу или кириллицу в тексте;
  • Найти числа в текстовых ячейках;
  • Обнаружить текстовые символы;
  • Функция НАЙТИ в Excel;
  • Функция ПОИСК в Excel;
  • Функция ЗАМЕНИТЬ в Excel;
  • Найти определенные символы в ячейках Excel.

0 / 0 / 0

Регистрация: 23.09.2011

Сообщений: 61

1

03.09.2012, 00:55. Показов 28846. Ответов 15


Студворк — интернет-сервис помощи студентам

Доброго времени суток !
Вот столкнулся с такой пробелмой, ищу помощи..

На листе Excel 2003 имеет несколько тысяч формул типа

Код

='C: Budget- 2013[Co-Financing17.xls]1.1'!$AR$10
='C: Budget- 2013[Co-Financing17.xls]1.1'!$AА$10
='C: Budget- 2013[Co-Financing17.xls]1.1'!$AB$10
='C: Budget- 2013[Co-Financing17.xls]1.1'!$AC$105
='C: Budget- 2013[Co-Financing17.xls]1.1'!$AC$109

итд.

Нужно через автозамену (заменить все) заменить последнюю цифру во всех формулах, которые заканчиваются на 10 — в даном примере на 14 например, однако через автозамену это сделать не получается, так как $105, $109 также меняется на $145, $149, так как присутствует $10. Как сделать, чтобы замена не происходила в тех числах, которые состоят «визуально» в т.ч. и из заменяемого числа.

Благодарю и низко кланяюсь..



0



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

03.09.2012, 08:58

2

Несколько тысяч ссылок!!!
Не стал бы такого делать никогда
заменить можно макросом

Visual Basic
1
2
3
4
5
Sub AVTOZAM()
    For Each c In UsedRange.Cells
        If Right(c.Formula, 2) = 10 Then c.Formula = Replace(c.Formula, "10", "14")
    Next
End Sub



2



Апострофф

Заблокирован

03.09.2012, 10:08

3

Alex77755, 3-я строка

Visual Basic
1
If Right(c.Formula, 2) = 10 Then c.Formula = Left$(c.Formula, Len(c.Formula) - 2) & 14

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

=’C: Budget- 2010[Co-Financing10.xls]1.1′!$AR$10

Результат
=’C: Budget- 2014[Co-Financing14.xls]1.1′!$AR$14



2



11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

03.09.2012, 10:10

4

Согласен



1



0 / 0 / 0

Регистрация: 23.09.2011

Сообщений: 61

03.09.2012, 13:00

 [ТС]

5

Здорово..А можно было бы кнопку сделать де указываем число, которое надо заменить и число на которое надо сделать замену ?

Добавлено через 32 минуты

Цитата
Сообщение от Pandora12
Посмотреть сообщение

Здорово..А можно было бы кнопку сделать де указываем число, которое надо заменить и число на которое надо сделать замену ?

P.S.не запускается макрос, требует объект «object required»



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

03.09.2012, 13:11

6

Visual Basic
1
For Each c In ActiveSheet.UsedRange.Cells

Добавлено через 5 минут
Можно оптимизировать:

Visual Basic
1
2
3
4
5
6
7
Sub AVTOZAM()
    Dim c As Object, s$
    For Each c In Cells.SpecialCells(xlCellTypeFormulas)
        s = c.Formula
        If Right$(s, 2) = "10" Then Mid(s, Len(s) - 1) = "14": c.Formula = s
    Next
End Sub



1



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

03.09.2012, 13:24

7

Visual Basic
1
2
3
4
5
6
7
8
9
Sub AVTOZAM()
 
s = InputBox("Введите через запятую что на что менять", "", "10,14")
    For Each c In ActiveSheet.UsedRange.Cells
        If Right(c.Formula, Len(Trim(Split(s, ",")(0)))) = Trim(Split(s, ",")(0)) Then
            c.Formula = Left$(c.Formula, Len(c.Formula) - Len(Trim(Split(s, ",")(0)))) & Trim(Split(s, ",")(1))
        End If
    Next
End Sub

Добавлено через 4 минуты
Или так:

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub AVTOZAM()
Dim K, N
 
s = InputBox("Введите через запятую что на что менять", "", "10,14")
If s = "" Then Exit Sub
K = Trim(Split(s, ",")(0))
N = Trim(Split(s, ",")(1))
    For Each c In ActiveSheet.UsedRange.Cells
        If Right(c.Formula, Len(K)) = K Then
            c.Formula = Left$(c.Formula, Len(c.Formula) - Len(K)) & N
        End If
    Next
End Sub



0



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

03.09.2012, 14:32

8

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



1



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

03.09.2012, 14:43

9

Казанский,
Справедливо.
Может тогда так?

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Sub AVTOZAM()
Dim K, N
 
s = InputBox("Введите через запятую что на что менять", "", "10,14")
If s = "" Then Exit Sub
K = Trim(Split(s, ",")(0))
N = Trim(Split(s, ",")(1))
    For Each C In ActiveSheet.UsedRange.Cells
    If C.Text <> C.Formula Then
        If Right(C.Formula, Len(K)) = K Then
            C.Formula = Left$(C.Formula, Len(C.Formula) - Len(K)) & N
        End If
    End If
    Next
End Sub



0



Казанский

15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

03.09.2012, 14:51

10

Проще

Visual Basic
1
If C.HasFormula Then

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

Visual Basic
1
For Each c In Cells.SpecialCells(xlCellTypeFormulas)



2



0 / 0 / 0

Регистрация: 23.09.2011

Сообщений: 61

03.09.2012, 15:37

 [ТС]

11

Не работает кнопка в моем Excel 2003. Выдает ошибку типа нарушения в » Advanced Find and Replace» Able bits.com и предлагает купить эту программку и инсталлировать ее… Как этот скрипт переписать в просто в макрос.. без кнопки тогда ? Действительно, как написал товрищ, скрипт меняет в том числе и то, что менять НЕ требуется, как раз, как в примере, который он привел.. И еще на один момент обратил внимание..если надо заменить ОДНОЗНАЧНОЕ число например 9 на 13,то замена не производится .. Скрипт начинает считать и довольно быстро завершается, но ошибку не выдает, может что-то и меняет (сразу не определишь -большой массив), но полноценной замены не производится..во всех тех местах, где это требуется..



0



Alex77755

11482 / 3773 / 677

Регистрация: 13.02.2009

Сообщений: 11,145

03.09.2012, 15:53

12

Проверял в своём 2003.

как написал товрищ, скрипт меняет в том числе и то, что менять НЕ требуется

Проверяет и меняет только последние символы в количестве равном количесву символов в первом числе на второе число. Меняет только в формулах. Переделать в макрос? Легко!

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Sub Макрос()
Dim K, N
 
s = InputBox("Введите через запятую что на что менять", "", "10,14")
If s = "" Then Exit Sub
K = Trim(Split(s, ",")(0))
N = Trim(Split(s, ",")(1))
    For Each C In ActiveSheet.Cells.SpecialCells(xlCellTypeFormulas)
        If Right(C.Formula, Len(K)) = K Then
            C.Formula = Left$(C.Formula, Len(C.Formula) - Len(K)) & N
        End If
    Next
End Sub



1



Dmitrii

2617 / 547 / 109

Регистрация: 21.03.2012

Сообщений: 1,051

03.09.2012, 16:36

13

Регулярные выражения должны сработать быстрее, чем строковые функции. Пример:

Visual Basic
1
2
3
4
5
6
Set objRegExp = CreateObject("VBScript.RegExp")
objRegExp.Pattern = "10$"
For Each c In Cells.SpecialCells(xlCellTypeFormulas)
    c.Formula = objRegExp.Replace(c.Formula, "14")
Next
Set objRegExp = Nothing



1



15136 / 6410 / 1730

Регистрация: 24.09.2011

Сообщений: 9,999

03.09.2012, 17:12

14

И что, если заменять нечего, все равно присваивать формулу? Тогда уж .Test допишите.



1



0 / 0 / 0

Регистрация: 23.09.2011

Сообщений: 61

03.09.2012, 18:23

 [ТС]

15

Рябята..вроде зработало..Щас еще поизучаю и наишу.. респект и уважуха..!!!!!!



0



2617 / 547 / 109

Регистрация: 21.03.2012

Сообщений: 1,051

03.09.2012, 22:48

16

Казанский, это лишь пример.



0



This macro will convert every formula in an entire workbook into its respective value. This is basically a quick way to replace to do a copy-paste values except that nothing is moved or re-arranged. Just make sure to remember that this one will not only work on the active sheet, but on the entire open workbook. This is a good thing to use if you are distributing your workbook and you don’t want the recipients to know how you did something or where certain numbers came from.

Where to install the macro:  Module

Replace Formulas with Values (Entire Workbook)

Sub FormulasToValues_EntireWorkbook()

'This Macro will replace all formulas from an entire workbook
'with their respective values. It will just changes all
'formulas to values.

WCount = Worksheets.Count
For i = 1 To WCount
If Worksheets(WCount - i + 1).Visible Then
Worksheets(WCount - i + 1).Select
RCount = ActiveCell.SpecialCells(xlLastCell).Row
CCount = ActiveCell.SpecialCells(xlLastCell).Column
For j = 1 To RCount
For k = 1 To CCount
Worksheets(WCount - i + 1).Cells(j, k) = Worksheets(WCount - i + 1).Cells(j, k).Value
Next k
Next j
End If
Next i

End Sub


Excel VBA Course

Excel VBA Course — From Beginner to Expert

200+ Video Lessons
50+ Hours of Instruction
200+ Excel Guides

Become a master of VBA and Macros in Excel and learn how to automate all of your tasks in Excel with this online course. (No VBA experience required.)

View Course

Similar Content on TeachExcel

Print Preview Screen Display for The Entire Workbook in Excel

Macro: This free Excel macro allows you to quickly and easily display the print preview windo…

Using Formulas with Tables in Excel

Tutorial:
Easy way to reference data tables and make formulas within a data table. This allows you …

Stop Formula Calculation in Excel — Increase Worksheet Performance

Tutorial:
I’ll show you how to stop formulas and functions from performing their calculations and u…

Print Entire Workbook in Excel

Macro: This free excel macro allows you to print the entire workbook in Excel. You can easil…

List all Conditional Formatting Formulas in Excel

Tutorial: List all conditional formatting formulas in a worksheet in Excel.
This allows you to quick…

Email the Entire Workbook as a PDF Attachment

: How to convert the entire Excel workbook into a PDF and email it as an attachment….

How to Install the Macro

  1. Select and copy the text from within the grey box above.
  2. Open the Microsoft Excel file in which you would like the Macro to function.
  3. Press «Alt + F11» — This will open the Visual Basic Editor — Works for all Excel Versions.
     Or For other ways to get there, Click Here.
  4. On the new window that opens up, go to the left side where the vertical pane is located. Locate your Excel file; it will be called VBAProject (YOUR FILE’S NAME HERE) and click this.
  5. If the Macro goes in a Module, Click Here, otherwise continue to Step 8.
  6. If the Macro goes in the Workbook or ThisWorkbook, Click Here, otherwise continue to Step 8.
  7. If the Macro goes in the Worksheet Code, Click Here, otherwise continue to Step 8.
  8. Close the Microsoft Visual Basic Editor window and save the Excel file. When you close the Visual Basic Editor window, the regular Excel window will not close.
  9. You are now ready to run the macro.

Перейти к содержанию

На чтение 2 мин Опубликовано 13.01.2020

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

Как изменить формулу в Excel

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

  1. Выделите ячейку, формулу в которой необходимо изменить. В нашем примере мы выбрали ячейку B3.Редактирование формул в Excel
  2. Щелкните по Строке формул, чтобы приступить к редактированию формулы. Вы также можете дважды щелкнуть по ячейке, чтобы посмотреть и отредактировать формулу прямо в ней.Редактирование формул в Excel
  3. Все ячейки, на которые ссылается формула, будут выделены разноцветными границами. В нашем примере, мы изменим вторую часть формулы, чтобы ссылка вела на ячейку B2 вместо C2. Для этого выделите в формуле адрес, который необходимо отредактировать, а затем выберите мышью требуемую ячейку или измените адрес вручную.Редактирование формул в Excel
  4. По окончании нажмите Enter на клавиатуре или воспользуйтесь командой Ввод в Cтроке формул.Редактирование формул в Excel
  5. Формула обновится, и Вы увидите новое значение.Редактирование формул в Excel

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

Чтобы показать все формулы в электронной таблице Excel, вы можете воспользоваться комбинацией клавиш Ctrl + ` (апостроф). При нажатии этой комбинации еще раз, все вернется к нормальному виду. Вы также можете использовать команду Показать формулы, которая находится в группе команд Зависимости формул на вкладке Формулы.

Оцените качество статьи. Нам важно ваше мнение:

Понравилась статья? Поделить с друзьями:
  • Мастер писем в word 2007
  • Мастер диаграмм в excel 2013
  • Массовое редактирование карточек wildberries через excel
  • Мастер настройки в excel
  • Мастер диаграмм в excel 2010 это