• 締切済み

EXCELで数式を比較する方法

既に過去例があるかもしれませんが見つけられず投稿します。よろしくお願いします。 たとえば、 2つのセルR1C1、R1C2があって、各々に数式が入っているとします。 この2つの数式自体が一致しているか否かを判定するにはどうすればよいのでしょうか? ちなみに、 =IF (R1C1=R1C2,"○","×") という条件式だと、数式の比較ではなくR1C1、R1C2に入っている数値(計算式に基づいた計算結果)の比較を行ってしまいます(当たり前だと思いますが)。 数値の比較ではなく、数式の比較をしたいのですが、どうすればいいのでしょうか?

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.5

#2です。参考までに。 また質問に対する、疑問の追加をします。 関数では不可能なんですが、ユーザー定義関数を作ると式が、出せます。 VBEの標準モジュールに If a.HasFormula Then siki = a.FormulaLocal Else siki = "" End If End Function を貼り付け たとえばB1に=A1+A2と式が入っているとして どこかの空きセルに=SIKI(B1)とすると =A1+A2が入ります A6に=SUM(A1:A5)があれば=SIKI(A6)と入れると =SUM(A1:A5) となります。 ----- ただし >数式自体が一致しているか についてそう簡単ではないのではないですか。 (1)完全一致 たとえば両セルの式が=A1+A2 (2)パターンが一致 =SUM(A1:A5)と=SUM(C1:C5) (1)は式を複写したセルは普通は番地(の一部)が変わるので、同じケース(2つのセル)は経験上あまり起こらない。 (2)は一番外枠の関数は同じでも、ネスとした関数が別なども考えられるので、同じかどうかは、判定解析が、プログラムを組む上で難物であると思う。 同じ様式の2つのシートの式を、誤って変えていないかののケースのチェックぐらいしか、現実問題は思いつかないのですが。 具体例はどんなものですか。

noname#11660
noname#11660
回答No.4

 少々面倒ですが、以下の方法ではいかがでしょうか。  当該シートで、  「ツール」→「オプション」の  「表示」タブで、「数式」にチェックを入れる。  「全般」タブで、「R1C1 参照形式を使用する」にチェックを入れる。  「ファイル」→「名前を付けて保存..」で「テキスト(タブ区切り)(*.txt)」で保存する。  保存したファイルを改めてExcelから開く。この時、「テキスト ファイル ウイザード」で、(比較したいセルの入った)「列のデータ形式」を「文字列」にする。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 Ctrl を押しながら、Shift キーを押して @ で、 目視で比較したらいかがですか? 同じ式といっても、R1C1 方式だとは思いますが。 そうでないのでしたら、単に文字列比較ですが、セルポインターを、R1C3 に置き、 [挿入]-[名前]-[定義] 「名前の定義」ダイアログボックスで、 名前(W) 「siki1」 (任意) 参照範囲 「=GET.FORMULA(!RC[-2])& LEFT(NOW(),0)」  「追加」 名前(W) 「siki2」 (任意) 参照範囲 「=GET.FORMULA(!RC[-1])& LEFT(NOW(),0)」  「追加」 ただしく入ったか、確認してから、  「OK」 R1C3 に =IF(siki1 = siki2, "○", "×") 入れ、後は、フィルハンドルで、ドラッグコピーします。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

関数式は式の「値」を問題にするものです。CELL関数以外は、値しか問題(代入・比較・演算など)にできません。 それとそのセルに別の式を設定すると、もとの式はこわれてしまいます。 そのため関数で2つのセルの式の形の比較はできないと思います。 エクセルは当セルに式の表示はしてくれますので、目で見て比べろというのが、主義でしょう。 (1)VBAだと、範囲に式があるかはIf (Range).HasFomula Then で聞ける(HasFormulaプロパティがあり)、 (2)関数式を知るには FormulaLocal FormulaR1C1、 FormulaR1C1Local がありますので、比較できます。 (3)プログラムするとき、2つのセルをどう指定させる(取り込むか)が 難しく、Inputboxなどで聞いていると、スムーズな自動化にならない。 Sheet1とSheet2が同じ位置のセルは、同じ式が入っているはず とかの問題なら、10行内外の簡単なVBAコードで済みます。 何がしたいかという点を勘案して、よく考えてみてください。

noname#36485
noname#36485
回答No.1

少々面倒な作業になるかもしれませんが、比較したい数式の入力されたセルの表示形式を文字列に変換してから、IF関数等で比較するマクロを組めば比較出来るはずです。

関連するQ&A