セル形式の置き換え(Microsoft Excel)
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以降)のリボンインターフェイス用のこのヒントのバージョンは、次の場所にあります。