Davidは、マルチワークシートワークブックで特定のセル形式が出現するたびに見つけて変更する必要があります。たとえば、Currencyとしてフォーマットされているすべてのセルを検索し、そのフォーマットをGeneralに変更する必要がある場合があります。彼はその仕事をどのように達成するのか疑問に思います。

このタスクを実行するための最良の方法は、使用しているExcelのバージョンによって異なります。 Excel 2003を使用している場合は、Excelの検索と置換ツールを使用して変更を加えることができます。次の手順に従ってください:

。 Ctrl + Hを押します。 Excelは、[検索と置換]ダイアログボックスの[置換]タブを表示します。

。必要に応じて、[オプション]ボタンをクリックして、ダイアログボックスを拡大します。

(図1を参照)

。 [検索する文字列]の右側にある[フォーマット]ボタンをクリックします。 Excelに[形式の検索]ダイアログボックスが表示されます。

。 [番号]タブが表示されていることを確認します。 (図2を参照)

。ダイアログボックスのコントロールを使用して、検索する形式を指定します。

。 [OK]をクリックして、[フォントの検索]ダイアログボックスを閉じます。

。 [置換]行の右側にある[フォーマット]ボタンをクリックします。 Excelは、[フォーマットの置換]ダイアログボックスを表示します。

。 [番号]タブが表示されていることを確認します。

。ダイアログボックスのコントロールを使用して、置換として使用する形式を指定します。

。 [OK]をクリックして、[フォントの置換]ダイアログボックスを閉じます。

。 [範囲内]ドロップダウンリストを使用して、[ワークブック]を選択します。

。 [すべて置換]をクリックします。

古いバージョンの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_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(9865)は、Microsoft Excel 97、2000、2002、および2003に適用されます。Excel(Excel 2007以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。