一部の数式を数式の結果に置き換える(Microsoft Excel)
ブライアンは、他の人に配布する前にワークシートを処理する必要があります。彼が必要としているのは、ワークシート内のすべてではありませんが、ほとんどの数式を削除することです。彼は、選択したセル範囲内のすべてのセルをステップスルーし、セルに数式が含まれている場合は、その数式を確認したいと考えています。数式に現在のブック内の別のワークシートへの参照(任意の参照)が含まれている場合、数式は無視されます。数式にそのような参照が含まれていない場合、マクロは数式を数式の結果に置き換える必要があります。
これは比較的簡単な作業です。あなたがする必要があるのは、セルをマクロステップで調べ、セルに数式が含まれているかどうかを確認することだけです。含まれている場合は、数式に感嘆符が含まれているかどうかを確認します。感嘆符は、次のような数式参照で使用されます。
=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の古いメニューインターフェイス用のこのヒントのバージョンは、次の場所にあります:
link一部の数式を数式の結果に置き換える。