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

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

  1. Нажмите Ctrl + H. Excel отображает вкладку «Заменить» диалогового окна «Найти и заменить».

  2. При необходимости нажмите кнопку «Параметры», чтобы увеличить диалоговое окно.

(См. Рис. 1.)

  1. Нажмите кнопку «Форматировать» справа от строки «Найти». Excel отображает диалоговое окно «Найти формат».

  2. Убедитесь, что отображается вкладка Число. (См. Рис. 2.)

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

  4. Нажмите ОК, чтобы закрыть диалоговое окно «Найти шрифт».

  5. Нажмите кнопку «Формат» справа от строки «Заменить на». Excel отображает диалоговое окно «Заменить формат».

  6. Убедитесь, что отображается вкладка Число.

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

  8. Нажмите OK, чтобы закрыть диалоговое окно «Заменить шрифт».

  9. Используйте раскрывающийся список Внутри, чтобы выбрать книгу.

  10. Щелкните «Заменить все».

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

Sub FormatGeneral()

Dim iSht As Integer     Dim rng As Range

For iSht = 1 To Sheets.Count         Set rng = Worksheets(iSht).UsedRange         With rng             .NumberFormat = "General"

End With     Next End Sub

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

Sub CurrencyToGeneral()

Dim iSht As Integer     Dim rng As Range     Dim c As Range

For iSht = 1 To Sheets.Count         For Each c In Worksheets(iSht).UsedRange.Cells             If c.NumberFormat = "$#,##0.00" Then                 c.NumberFormat = "General"

End If         Next c     Next End Sub

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

Public Sub UpdateFormats()

Dim rFind As Range     Dim rReplace As Range     Dim rNextCell As Range     Dim sNewFormat As String     Dim sOldFormat As String     Dim ws As Worksheet

On Error Resume Next

' Determine the old format     Do         Set rFind = Application.InputBox( _           prompt:="Select a cell that uses the format " & _           "for which you want to search", _           Type:=8)



If rFind Is Nothing Then             If MsgBox("Do you want to quit?", vbYesNo) = vbYes Then                 Exit Sub             ElseIf InStr(1, rFind.Address, ":", vbTextCompare) > 0 Then                 MsgBox "Please select only one cell."

Set rFind = Nothing             End If         End If     Loop Until Not rFind Is Nothing     sOldFormat = rFind.NumberFormat

' Determine the new format     Do         Set rReplace = Application.InputBox( _           prompt:="Select a cell using the new format", _           Type:=8)



If rReplace Is Nothing Then             If MsgBox("Do you want to quit?", vbYesNo) = vbYes Then                 Exit Sub             ElseIf InStr(1, rReplace.Address, ":", vbTextCompare) > 0 Then                 MsgBox "Please select only one cell."

Set rReplace = Nothing             End If         End If     Loop Until Not rReplace Is Nothing     sNewFormat = rReplace.NumberFormat

' Do the replacing     For Each ws In ActiveWorkbook.Worksheets         For Each rNextCell In ws.UsedRange             If rNextCell.NumberFormat = sOldFormat Then                 rNextCell.NumberFormat = sNewFormat             End If         Next rNextCell     Next ws     MsgBox "The selected format has been changed."

End Sub

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

Этот совет (9865) относится к Microsoft Excel 97, 2000, 2002 и 2003. Вы можете найти версию этого совета для ленточного интерфейса Excel (Excel 2007 и новее) здесь:

link: / excelribbon-Replacing_Cell_Formats [Замена форматов ячеек].