Дэвид задается вопросом, можно ли использовать «Найти и заменить» для поиска и изменения текста в текстовых полях или метках в диаграммах. Короткий ответ: это невозможно, но есть несколько обходных путей, которые вы можете попробовать.

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

  1. Скопируйте текст из каждого текстового поля в диапазон ячеек на листе. (В этом примере предположим, что вы скопировали содержимое десяти текстовых полей в диапазон Z1: Z10.)

  2. Выделите первое текстовое поле (то, которое соответствует ячейке Z1) и избавьтесь от содержимого текстового поля.

  3. Не снимая выделения с текстового поля, введите в строку формул следующее: = Z1. Когда вы нажимаете Enter, текстовое поле должно отражать все, что находится в ячейке Z1.

  4. Повторите шаги 2 и 3 для каждого из ваших текстовых полей, используя соответствующую ссылку на ячейку для каждого на шаге 3.

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

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

Sub TextBoxReplace()

Dim shp As Shape     Dim sOld As String     Dim sNew As String

'Change as desired     sOld = "Old string"

sNew = "New string"

On Error Resume Next     For Each shp In ActiveSheet.Shapes         With shp.TextFrame.Characters             .Text = Application.WorksheetFunction.Substitute( _               .Text, sOld, sNew)

End With     Next End Sub

Этот макрос проходит через все фигуры на листе (текстовые поля — это фигуры), а затем заменяет все, что находится в переменной sOld, тем, что находится в переменной sNew. Применение той же техники к меткам диаграмм немного сложнее, как показано в следующем макросе:

Sub ChartLabelReplace()

Dim Cht As ChartObject     Dim Ser As Series     Dim scPt As Point     Dim sOld As String     Dim sNew As String

'Change as desired     sOld = "Old String"

sNew = "New String"

On Error Resume Next     For Each Cht In ActiveSheet.ChartObjects         For Each Ser In Cht.Chart.SeriesCollection             For Each scPt In Ser.Points                 With scPt.DataLabel                     .Text = Application.WorksheetFunction.Substitute( _                       .Text, sOld, sNew)

End With             Next         Next     Next End Sub

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

_Примечание: _

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

link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера].

ExcelTips — ваш источник экономичного обучения Microsoft Excel.

Этот совет (9264) применим к Microsoft Excel 2007, 2010, 2013, 2016, 2019 и Excel в Office 365. Вы можете найти версию этого совета для старого интерфейса меню Excel здесь:

link: / excel-Finding_and_Replacing_in_Text_Boxes [Поиск и замена в текстовых полях].