Одновременная замена в таблицах и комментариях (Microsoft Excel)
Ученики Дороти настраивают книгу моделирования чековой книжки, заменяя имя по умолчанию своим собственным. Например, она хочет, чтобы они выполнили поиск по запросу «Джейсон Андерсон» и заменили имя на «Сью Смит».
«Джейсон Андерсон» встречается 22 раза в текстовых полях на восьми вкладках рабочего листа и еще несколько на самих рабочих листах.
Дороти задается вопросом, как она может найти и заменить все вхождения на листе и все вхождения комментариев одновременно.
Это невозможно сделать без макроса. Макросу нужно будет просмотреть каждую ячейку в книге, каждый комментарий и каждое текстовое поле, чтобы увидеть, нужно ли внести изменения. Ниже приводится пример того, как это можно сделать:
Sub ReplaceNames() Dim sDefaultName As String Dim sNewName As String Dim sht As Worksheet Dim cmt As Comment Dim wks As Worksheet Dim sCmt As String Dim shp As Shape sDefaultName = "Jason Anderson" sNewName = InputBox("Enter your first and last name.", _ "Name Replacement") ' Replace cell text For Each sht In ActiveWorkbook.Worksheets sht.Cells.Replace what:=sDefaultName, _ Replacement:=sNewName, LookAt:=xlPart, _ SearchOrder:=xlByRows, MatchCase:=False, _ SearchFormat:=False, ReplaceFormat:=False Next sht ' Replace comment text For Each wks In ActiveWorkbook.Worksheets For Each cmt In wks.Comments sCmt = cmt.Text If InStr(sCmt, sDefaultName) <> 0 Then sCmt = Application.WorksheetFunction. _ Substitute(sCmt, sDefaultName, sNewName) cmt.Text Text:=sCmt End If Next cmt Next wks Set wks = Nothing Set cmt = Nothing ' Replace text box text On Error Resume Next For Each wks In ActiveSheet.Parent.Worksheets For Each shp In wks.Shapes With shp.TextFrame.Characters .Text = Application.WorksheetFunction.Substitute( _ .Text, sDefaultName, sNewName) End With Next shp Next wks End Sub
Макрос предлагает пользователю ввести новое имя, а затем выполняет поиск в ячейках, комментариях и текстовых полях, чтобы увидеть, есть ли какие-либо вхождения имени по умолчанию («Джейсон Андерсон»). Если да, то производится соответствующая замена.
Если вы не хотите использовать макросы для поиска, возможно, будет полезна реструктуризация книги. Например, вы можете создать «лист ввода данных», в который вводится общая информация, такая как имя человека. На других листах имя из рабочего листа ввода данных указывается с помощью формул. Таким образом, одно изменение в листе ввода данных, и имя изменяется во всех остальных листах.
Используя этот подход, можно также работать с комментариями. Вы можете выбрать комментарий или фигуру и на панели формул ввести ссылочную формулу, например:
=MyName
Это предполагает, что имя пользователя на листе ввода данных связано с именованным диапазоном MyName. Если в комментарии или фигуре должна быть дополнительная информация, вы можете построить этот текст в ячейке на листе ввода данных, а затем назначить содержимое этой ячейки комментарию или фигуре, как указано для именованного диапазона MyName.
_Примечание: _
Если вы хотите узнать, как использовать макросы, описанные на этой странице (или на любой другой странице на сайтах ExcelTips), я подготовил специальную страницу, содержащую полезную информацию.
link: / excelribbon-ExcelTipsMacros [Щелкните здесь, чтобы открыть эту специальную страницу в новой вкладке браузера]
.
ExcelTips — ваш источник экономичного обучения Microsoft Excel.
Этот совет (2614) применим к Microsoft Excel 2007, 2010, 2013 и 2016.