1

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

=Sheet1!D38-Sheet1!E38

и хотел бы добавить =IFERROR чтобы это выглядело так:

=IFERROR(Sheet1!D38-Sheet1!E38, 0%)

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

Есть ли простой способ добавить новую функцию в существующие формулы, не просматривая их все по одной?

Представленный пример является случайным; Возможно, мне придется сделать это с более длинными и более сложными формулами, такими как =COUNTIFS

Быстрое исправление, которое я пробовал раньше, состояло в

  1. Найдите и замените все = в начале формулы на # - это преобразует формулу в простой текст
  2. Скопируйте и вставьте в каждую ячейку вторую часть новой формулы, которая будет идти в конце. В этом случае это будет , 0%)
  3. Замените # на =IFERROR( чтобы получить формулу обратно, с дополнительной информацией, которую я хотел

Но это не очень эффективный способ сделать это.

4 ответа4

1

Вы можете заменить в 2 шага, без ручного редактирования:
1 - поиск и замена = с =IFERROR(
(это приведет к большому количеству ошибок)
2 - поиск и замена конца строки на ,0%)
Введите следующие 2 нажатия клавиш для конца строки:
Control-M
Control-J

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

0

Временное решение для демонстрации возможного исправления; см. изображение Но оговорки на мой комментарий.

Скопируйте / вставьте формулу, нажмите и удерживайте метод.

0

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

Он предоставляет функции поиска / замены, а также функции листа с регулярными выражениями.

В вашем примере вам нужно

  • искать: =(.*)
  • заменить на: =iferror($1,0%)

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

0

Скажем, у нас есть группа ячеек, которую мы редактируем в массовом порядке:



Мы выбираем ячейки и запускаем этот короткий макрос:

Sub FixFormula()
'
'   hi-light the cells you wish to process
'
    Dim r As Range, rngF As Range, s As String

    Set rngF = Selection.Cells.SpecialCells(xlCellTypeFormulas)
    For Each r In rngF
        s = "(" & Mid(r.Formula, 2) & ")"
        r.Formula = "=IFERROR(" & s & ","""")"
    Next r
End Sub

и все формулы будут преобразованы из:

=A1/B1

чтобы:

=IFERROR((A1/B1),"")

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .