excelのセル内の計算式を比較する関数についてですが


あるセルとあるセルの計算式が同じかどうかの
チェックをしたいのですが行数が膨大で、ひとつ関数で作成しそれを各行コピーするよう
なイメージを考えていますが、そのような関数ありますか?
計算結果の比較ではなく、計算式そのものの比較です。宜しくお願いいたします。

回答の条件
  • URL必須
  • 1人3回まで
  • 登録:2009/06/13 15:37:22
  • 終了:2009/06/14 09:45:00

回答(6件)

id:pahoo No.1

pahoo回答回数5960ベストアンサー獲得回数6332009/06/13 16:17:58

ポイント28pt

標準関数だけで実現する方法が思いつかなかったので、代替案として、下記のユーザー関数(VBA)を標準モジュールに登録する方法を回答します。

ユーザー関数を追加する手順は「Excelでユーザー定義のワークシート関数を追加する」を参考にしてください。

Function getFormula(obj As Range) As String
    getFormula = obj.Formula
End Function

セルA1とB1の式を比較したいのであれば、比較結果を入れるセルに下記の式を記述してください。

=IF(getFormula(A1)=getFormula(B1),"同じ","違う")
id:HALSPECIAL No.2

HALSPECIAL回答回数407ベストアンサー獲得回数862009/06/13 18:42:17

ポイント27pt

VBAのFormulaを使い

標準モジュールに関数を自作します。


Option Explicit

Public Function CompareFormula(ByVal range1 As Range, ByVal range2 As Range) As Boolean
    If range1.Formula = range2.Formula Then
        CompareFormula = True
    Else
        CompareFormula = False
    End If
End Function

ワークシートのセルには、作成した関数を記述します。

=CompareFormula(A1,A2)  '引数に、比較するセルを指定します。数式が同じならTrue,異なればFalseを返します



その他、

[ツール]-[オプション]-[表示]タブより[ウィンドウオプション]の[数式]をチェックオンにすると、シート上の数式がすべて目視できます。




Formulaについてはこちらを参考

セルに数式を入力/取得する(Formula/FormulaR1C1プロパティ)

id:SALINGER No.3

SALINGER回答回数3454ベストアンサー獲得回数9692009/06/13 18:22:56

ポイント20pt

関数でExcelの数式を取得するために4.0マクロ関数を使います。

比較するセルをA列とB列、結果をC列とした場合。


1 C1を選択して、メニューの[挿入]→[名前]→[定義]で、名前を「数式1」

参照範囲を「=GET.CELL(6,A1)&LEFT(NOW(),0)」としてOK。


2 C1を選択して、メニューの[挿入]→[名前]→[定義]で、名前を「数式2」

参照範囲を「=GET.CELL(6,B1)&LEFT(NOW(),0)」としてOK。


3 C1の数式を

=IF(数式1=数式2,"TRUE","FALSE")

として、下にコピーすればA列とB列の数式が同じかどうかをC列に表示します。

http://q.hatena.ne.jp/

id:Koonies No.4

Koonies回答回数125ベストアンサー獲得回数82009/06/13 18:51:06

ポイント21pt

ダミー

標準のEXCEL関数のみで実現するのは難しそうなので、マクロです。


Public Function ExactFomula(rngX As Range, rngY As Range) As Boolean
    ExactFomula = (rngX.Formula = rngY.Formula)
End Function

ツール→マクロ→VisualBasicでVBEのウィンドウが立ち上がるので

使いたいbook名のところで右クリック→挿入→標準モジュールを選択すれば

Module1というのが追加されますので、そこに上記のコードをコピーすればOKです。


そしてセルの方で

=ExactFomula(A1,B1)

のようにして使って下さい。

id:kn1968 No.5

kn1968回答回数17ベストアンサー獲得回数02009/06/13 19:05:54

そんな関数は無い。

http://q.hatena.ne.jp/1244875040

id:koji88 No.6

koji88回答回数56ベストアンサー獲得回数12009/06/13 23:37:22

ポイント16pt

例えばA列とB列を比較するのであれば、C1セルに=if(A1=B1,"○","×")

と入力して、あとはオートフィルで下へコピーしていけばよいです。

C列に○/×判定が表示されることになります。

http://q.hatena.ne.jp/answer

  • id:Mook
    単純に数式といってもセルを参照しているような場合、参照先はそれぞれ異なっていないのでしょうか。

    参照セルの相対位置が同じであれば、Range の FormulaR1C1 の方が比較しやすいかと思います。
  • id:SALINGER
    ユーザー定義関数が許容範囲ならば、過去の遺物である4.0マクロ関数は使う必要はないですね。
    これを使うとブックを開くたびにメッセージが出たりとわずらわしいですから。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません