6

Очень похоже на этот вопрос:как найти и заменить символ «*» в Excel

Но мне нужно оставить формулы нетронутыми. У меня около 50+ листов с двумя типами ячеек с "*"

Содержимое случая 1 - значение ячейки может быть: «*** 1,43»

Содержание варианта 2 - значение ячейки может быть: "= 100 * B3"

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

Спасибо!

2 ответа2

3

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

Sub SetStarsBlank()

    For Each ws In ThisWorkbook.Worksheets
        For Each c In ws.UsedRange
            If Not Application.WorksheetFunction.IsFormula(c) Then
                c.Value = Replace(c.Value, "*", "")
            End If
        Next
    Next

End Sub
2

Сначала сделайте копию вашего файла, на случай, если что-то пойдет не так.

Затем создайте следующую подпрограмму VBA:

Sub StillLearning1()

    For Each c In Range("A1:Z100")
        If Not c.HasFormula Then
            temp = WorksheetFunction.Substitute(c.Value, "*", "")
            If Left(temp, 1) = "=" Or Left(temp, 1) = "'" Then
                temp = "'" & temp
            End If
            c.Value = temp
        End If
    Next c

End Sub

См. Как добавить VBA в MS Office? для получения общей информации о том, как использовать VBA в Excel и других приложениях Microsoft Office.  StillLearning1 - это просто произвольное имя подпрограммы; используйте любое имя, которое вы хотите.  Измените A1:Z100 на диапазон, в котором вы хотите произвести замену.  Надеюсь, все остальное само за себя

  • For Each c ... Next c - это цикл, который выполняется 2600 раз (для диапазона выборки A1:Z100 ; 26 столбцов × 100 строк), причем c идет в каждую ячейку в этом диапазоне.
  • c.HasFormula - это логическое значение, которое сообщает, содержит ли ячейка c формулу.  Это немного более надежно, чем проверка того, является ли первый символ = , потому что ячейка, содержащая '=== является строковым (текстовым) значением, но будет выглядеть как === , и поэтому будет казаться, что начинается с = .

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

  • Проверьте результат замены, чтобы увидеть, начинается ли он с = или ' .  Если это произойдет, назначение его непосредственно ячейке приведет к тому, что Excel будет интерпретировать этот первый символ нежелательным образом, поэтому защитите его, добавив ' .

Затем запустите подпрограмму.

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