ブライアンは、他の人に配布する前にワークシートを処理する必要があります。彼が必要としているのは、ワークシート内のすべてではありませんが、ほとんどの数式を削除することです。彼は、選択したセル範囲内のすべてのセルをステップスルーし、セルに数式が含まれている場合は、その数式を確認したいと考えています。数式に現在のブック内の別のワークシートへの参照(任意の参照)が含まれている場合、数式は無視されます。数式にそのような参照が含まれていない場合、マクロは数式を数式の結果に置き換える必要があります。

これは比較的簡単な作業です。あなたがする必要があるのは、セルをマクロステップで調べ、セルに数式が含まれているかどうかを確認することだけです。含まれている場合は、数式に感嘆符が含まれているかどうかを確認します。感嘆符は、次のような数式参照で使用されます。

=Sheet2!A1

したがって、数式に感嘆符が含まれている場合は、無視してかまいません。感嘆符が含まれていない場合は、その値に置き換えることができます。

Sub ConvertFormulas1()

Dim c As Variant     Dim frm As String

On Error Resume Next

For Each c In Selection         If c.HasFormula Then             frm = c.Formula             If InStr(1, frm, "!") = 0 Then                 c.Value = c.Value             End If         End If     Next c End Sub

このアプローチには1つの欠点があります。感嘆符は、他のブックにあるものも含め、現在のワークシートの外部にあるすべての数式に表示されます。数式を現在のブック内の他のワークシートに置き換えるだけで、他のブック内のシートを参照する数式を無視したい場合は、ロジックを追加する必要があります。 Excelがこれらの他のブックをどのように参照するかを見ると、ロジックが明らかになります。

=[OtherWorksheet.xls]Sheet1'!$C$9

他のワークブックの名前は角かっこで囲まれていることに注意してください。

したがって、感嘆符(参照が別のワークシートへの参照であることを通知する)をテストした後、左角かっこが存在するかどうかを確認する必要があります。左角かっこがある場合、参照は現在のブック内のセルではありません。

Sub ConvertFormulas2()

Dim c As Variant     Dim OtherSheet As Boolean     Dim frm As String

On Error Resume Next

For Each c In Selection         If c.HasFormula Then             frm = c.Formula             OtherSheet = False             If InStr(1, frm, "!") Then                 OtherSheet = True                 If InStr(1, frm, "[") Then                     OtherSheet = False                 End If             End If             If Not OtherSheet Then                 c.Value = c.Value             End If         End If     Next c End Sub

このマクロで使用される式を変更して、離れるときにすべての外部参照を削除するのは比較的簡単であることに注意してください。現在のワークシートへの参照はそのままです。実際、必要なのは、角かっこをチェックしてから、OtherSheet変数をチェックする構造内の「Not」キーワードを削除することだけです。

Note:

このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。 。

_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。

このヒント(12158)は、Microsoft Excel 2007、2010、2013、および2016に適用されます。

Excelの古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります: