[[20100827113945]] 『セルの内容の違い』(マル) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

 『セルの内容の違い』(マル)
 Excel2002

 お世話になります。
 毎回更新していくファイルがあるのですが、
 元ファイルと比べて、新ファイルとどこが違い、更新されているのかを知りたいです。
 変わっている部分に、解りやすく、色を付ける方法、
 もしくは、元ファイルと新ファイルの違いを知る方法はありますでしょうか?
 ご教授、よろしくお願いいたします。


 「ツール」―「変更履歴の記録」ではどうでしょうか?
 (独覚)

 独覚さん。
 教えて頂き、有難うございました!
 こんな機能があるとは知らず、早速試してみました。
 私の説明不足で、ちょっとしたい事とは違ったのですが、
 便利な機能を教えて頂き、有難うございました。
 今後に役立ちそうです。

 毎日、ファイルをコピーして作成しています。
 そのファイルを、その日の日付で保存するのですが、
 後日、内容に違いがあるかを確認しています。
 Z3:AX3までデータが入っており、変更がない場合もありますし、
 内容が更新されて変更されている場合もあります。
 今まで、目視で数値を確認していたのですが、
 データが多いので、何か良い方法はあるのかと思って、
 この度、相談させて頂きました。

 また、別件で、他の人が作ったファイルと、自分が作ったファイルの内容が、
 本来同じであるべきなので、ちゃんと同じに出来ているかと言う、
 確認作業も含めて、このように違いを見つける事が出来るものなのか、
 教えて頂きたく、もし良い方法がありましたら、お願いできますでしょうか?
 よろしくお願いいたします。(マル)


 >Z3:AX3までデータが入っており、変更がない場合もありますし、
 >内容が更新されて変更されている場合もあります。
 >今まで、目視で数値を確認していたのですが、

 どうせ目視で確認するならば、同じシートの別の場所にデータを
 コピーして貼り付け、条件付き書式で色をつけるなどして
 確認すればどうでしょうか。

 同じシートが都合悪ければ別シートでもできますが、
 条件の設定に若干工夫が必要になります。
 通常、条件付き書式では別シートのセルは参照できませんが、
 INDIRECT関数を使うなどすれば可能です。
 (sato)


 satoさま
 ご教授、有難うございます。
 上記の、条件付き書式と、INDIRECT関数を使った方法を、
 よろしければ、再度、詳しい手順を教えて頂けないでしょうか?
 例えば、sheet1とsheet2にデータが入っており、
 両シート間で、セルの内容の違いを見付けたい場合、どのように処理を行えばよろしいでしょうか?
 初心者なもので、せっかく教えて頂いたのに、理解できなくて、すみません。(マル)

 回答が遅くなり申し訳ありません。

 Sheet1のA1に、条件付き書式で

 =INDIRECT("Sheet2!"&CHAR(64+COLUMN(A1))&ROW(A1))

 の条件でセルに色をつけるなどすればよいでしょう。
 そのセルを必要分だけ書式のみコピー貼り付けして下さい。

 ただし、これはA列からZ列までの場合です。
 AA列以降も比較する場合はさらに工夫が必要です。
 (sato)


 satoさま
 お忙しい中、有難うございました。
 上記、sheet1 sheet2のA1:A30に数値を入れて検証してみました。
 同じ数値と違う数値を、それぞれのシートに入力して、A1:A30に条件付き書式で、
 数式が=INDIRECT("Sheet2!"&CHAR(64+COLUMN(A1))&ROW(A1))で、赤色を設定してみたのですが、
 同じ数値も違う数値も、Sheet1の数値がA1:A30全て赤色になります。
 何か手順に不備があったのかも知れませんが、どうしてでしょうか?
 また、式の意味も出来ましたら教えて頂けないでしょうか?何度も恐れ入ります。
 >AA列以降も比較する場合はさらに工夫が必要です。
 実際は、>Z3:AX3までデータが入っておりますが、今回のケース以外にも、
 目視で違いを見つける作業をしておりますので、両パターンを教えて頂けると助かります。
 初心者で、理解が悪くて、何度もすみません。
(マル)


 すみません、
 =A1<>INDIRECT("Sheet2!"&CHAR(64+COLUMN(A1))&ROW(A1))
  ~~~~
 これが抜けていました。

 Z3に設定するときは、
 =Z3<>INDIRECT("Sheet2!"&CHAR(64+COLUMN(Z3))&ROW(Z3))

 AA3に設定するときは、
 =AA3<>INDIRECT("Sheet2!A"&CHAR(64+COLUMN(A3))&ROW(A3))
 です。                ~~~
 AA3のものはAZ列までコピーできます。

 CHAR(64+ROW(A1))
 =CHAR(64+1)
 =CHAR(65))   となって、これは"A"という文字になります。

 従って、
 =INDIRECT("Sheet2!"&CHAR(64+COLUMN(A1))&ROW(A1))
 =INDIRECT("Sheet2!"&"A"&1))
 =INDIRECT("Sheet2!A1")

 のようになります。(sato)


 satoさま
 早速有難うございました! おかげ様でひと目で解るようになりました!
 とても解りやすいです。
 初歩的な質問ばかりで申し訳ありませんが、さらに教えて頂けないでしょうか?

 @今回は、Sheet間の違いで質問しましたが、Book間の違いの場合、
 "Sheet2!"この部分はどのように設定すれば良いのでしょうか?

 A<>の意味を教えて頂けないでしょうか?

 BCHAR関数の65がAを表すとの事ですが、
 何故、=INDIRECT("Sheet2!A1")として、
 違いが見つけられるのでしょうか?
 また、何故、初めから65やAを指定せず、
 このような数式を組み立てるのでしょうか?

 C64+COLUMN(A1)が、Aになり、&ROW(A1))が1になり、

 >CHAR(64+ROW(A1))
 >=CHAR(64+1)
 >=CHAR(65))   となって、これは"A"という文字になります。
 との事ですが、COLUMNは、何故必要なのでしょうか?

 DAA列以降は、"Sheet2!A"左記のAが追加されていますが、
 何故、AA列以降は、このAが必要なのでしょうか?

 無知なため、的はずれな質問をしているかもしれません m(__)m
 今後、自分で理解して、使えるようになりたいので、
 再度、ご教授頂けますでしょうか?
 こんなに便利な方法を教えて頂き、感謝しております。有難うございます。(マル)


 何度も間違えてすみません。

 説明で書いた
 CHAR(64+ROW(A1))
 =CHAR(64+1)
 =CHAR(65))   となって、これは"A"という文字になります。

 この1行目は
 CHAR(64+COLOMN(A1)の間違いでした。
 これを踏まえて回答します。

 1. Book1のSheet1のA1を参照する場合の条件
 =A1<>INDIRECT("[Book1.xls]Sheet1!"&CHAR(64+COLUMN(A1))&ROW(A1))
 ただし、Book1を開いておく必要があります。

 2. <>の意味は、=ではないという意味です。

 3. なぜ最初からとしないのか。
  別のセルにコピーしたときに、修正しないでそのまま使えるようにするためです。

    また、この式はSheet2のA1セルを参照しているだけです。
    違っているかどうかは、 =A1<>=INDIRECT("Sheet2!A1") この部分で判断しています。
                           ~~~~~~~
 4.COLUMN()はA列では1、B列では2になります。
  3.で回答したように、右にコピーするとA,B,C,Dとなるようにするためです。

 5.AA列を参照するためです。
  "Sheet1!" & CHAR(64+COLOMN(A1) は、"Sheet1!A1"    ですが、
  "Sheet1!A" & CHAR(64+COLOMN(A1) は、"Sheet1!AA1"     です。

 以上、またどこか間違えているところがあるかもしれませんが、
 分からないことがあれば御質問下さい。
(sato)


 satoさま
 お礼が遅くなり、申し訳ございません。
 詳しい説明を有難うございました!大変、解りやすかったです!
 助かりましたm(__)m

 恐れ入りますが、もう一点、追加で教えて頂きたいのですが、よろしいでしょうか?

 比較する元のデータが、#DIV/0!の場合は、データが更新されて、数値が入っても、
 設定した条件書式が反映されません。
 データが更新され、#DIV/0!→数値になった場合にも、色を付ける方法はあるのでしょうか?
 よろしくお願いいたします。(マル) 


 名前定義を利用する案

 1.両方のブックを開いておきます。

 2.Book1のSheet1のA1セルをクリックします。

 3.Ctrlキーを押しながら、F3キーを押して名前定義ダイアログを出します。
  (1) 名前欄に「変化セル」とでも入力します。
  (2) 参照範囲に下式を入力して「OK」ボタンをクリックします。

     =IF(TYPE(Sheet1!A1)<>TYPE([Book2.xls]Sheet1!A1),TRUE,Sheet1!A1<>[Book2.xls]Sheet1!A1)

 4.条件付き書式で、条件を以下に設定します。
   =変化セル

 (半平太) 2010/09/07 15:45

 エラーだったセルがエラーでなくなる、エラーでないセルがエラーになる、は区別しますが異なるエラーは区別しない
 (「#DIV/0!」が「#N/A」になったとしても色が変わらない)でもよければ。

 まずZ3セルからAX3セルを選択して
 「セルの値が」「次の値に等しくない」「=INDIRECT("[Book1.xls]"&ADDRESS(ROW(),COLUMN(),,,"Sheet1"))」
 と設定して書式ボタンで色を設定、その後「追加」ボタンを押して
 「数式が」「=ISERROR(Z3)<>ISERROR(INDIRECT("[Book1.xls]"&ADDRESS(ROW(),COLUMN(),,,"Sheet1")))」
 と設定して書式ボタンで色を設定、としてみてください。
 (独覚)


 違うエラーの場合にも色を変える場合です。
 
 条件1で

「数式が」「=IF(ISERROR(Z3),"ERROR"&ERROR.TYPE(Z3),Z3)<>IF(ISERROR(INDIRECT("[Book1.xls]"&ADDRESS(ROW(),COLUMN(),,,"Sheet1"))),"ERROR"&ERROR.TYPE(INDIRECT("[Book1.xls]"&ADDRESS(ROW(),COLUMN(),,,"Sheet1"))),INDIRECT("[Book1.xls]"&ADDRESS(ROW(),COLUMN(),,,"Sheet1")))」

 と設定してみてください。
 (独覚)

 半平太さま 独覚さま
 ご回答、有難うございました!
 色々な方法があるんですね。

 先に半平太さんの数式で検証してみました。
 名前の定義の参照範囲には、下記のように表示されています。

 Book名とSheet名を実際の名前に変更しました。
 実際の名前:変更前Book,気温sheet 
      変更後Book,気温sheet

 変更後BooKに、名前の定義を作成しました。
 ="IF(TYPE(気温!A1)<>TYPE([変更前.xls]気温!A1),TRUE,気温!A1<>[変更前.xls]気温!A1)"

 変更後BooKに、条件付き書式で、フォントを赤色に設定しました。
 数式が、="変化セル"

 上記を設定してみたのですが、条件付き書式が、反映されません。
 手順に不備があるかもしれません。
 再度、ご教授をお願いできますでしょうか?
 よろしくお願いします。

 独覚さんの数式も、後ほど、試してみます。(マル)

 > 変更後BooKに、名前の定義を作成しました。
 > ="IF(TYPE(気温!A1)<>TYPE([変更前.xls]気温!A1),TRUE,気温!A1<>[変更前.xls]気温!A1)"
   ↑                                                                             ↑

 両端のダブルクォーテーション(")は付けないでください。

 (半平太) 2010/09/08 09:49

 半平太さま
 ご回答有難うございます!

 変更後BOOKの気温シートのA1の場所で、 教えて頂いたように、""をはずし、名前の定義に、下記数式を登録しました。

 =IF(TYPE(気温!A1)<>TYPE([変更前.xls]気温!A1),TRUE,気温!A1<>[変更前.xls]気温!A1)

 とりあえず、変更後BOOKの気温シートの、A1のセルに、下記の条件付き書式を設定し、
 数式が、="変化セル" フォント 赤色

 その後A列にコピーしてみたり、
 A列を初めから選択して、条件付書式を設定したり、
 全選択をして条件付書式を設定してみたのですが、
 まだ書式が反映されません。

 また、手順に間違いがありましたら、教えていただけますでしょうか?
 何度も恐れ入りますが、よろしくお願いいたします。(マル)


 >数式が、="変化セル" フォント 赤色
      ↑    ↑
 この両端の(")もハズしてください。

 (半平太) 2010/09/08 11:06

 半平太さま
 有難うございます。
 おかげ様で、ついにバッチリ出来ました!
 初めから、そのように教えてくれていたのに、
 初歩的なミスばかりで、すみませんでしたm(__)m

 TYPE関数を見た事がなく、調べたら、
 TYPE関数はデータ型に対応した数値を返します。
 返される答えは、 
 @数値は「1」 
 A文字列は「2」 
 B論理値は「4」 
 Cエラー値は「16」 
 D配列は「64」 

 と出てきたのですが、
 この関数で、どうして違いが導き出されるのでしょうか?
 =IF(TYPE(気温!A1)<>TYPE([変更前.xls]気温!A1),TRUE,気温!A1<>[変更前.xls]気温!A1)

 <>の意味は、=ではないという意味です。とsatoさんから教えて頂いたのですが、
 TYPE関数が、理解出来ないので、教えて頂けないでしょうか?

 TYPE(気温!A1)<>TYPE([変更前.xls]気温!A1)
 真の場合、TRUE
 偽の場合、気温!A1<>[変更前.xls]気温!A1

 お手数をおかけしますが、よろしくお願いいたします。(マル)

 独覚さま

 独覚さんの数式も、下記で設定したところ、
 バッチリできました。有難うございました!
 =INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温"))
 =ISERROR(A1)<>ISERROR(INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温")))

 追加で教えて頂いた、下記で、条件付き書式で赤色を設定したところ、
 BOOKとシート名を実際の名前に変えたので、数式のどこかに不備があるかもしれませんが、
 変更ありもなしも、全て赤色に変更されました。
 でも、教えて頂いた、上記の式で、思うと通りに反映されていましたので、大変助かりました。

 =IF(ISERROR(A1),"ERROR"&ERROR.TYPE(A1),A1)<>IF(ISERROR(INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温"))),
 "ERROR"&ERROR.TYPE(INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温"))),INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温")))

 ADDRESS関数の使い方
 ADDRESS関数は指定した行番号と列番号に対応するセルの参照を文字列で返します。
 行番号、列番号に負の数、又は0を指定した場合エラー値#VALUE!が返されます。
 と調べたら出て来たのですが、この関数も使用した事がありません。
 よろしければ、この数式の意味も教えていただけないでしょうか?

 =INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温"))
 =ISERROR(A1)<>ISERROR(INDIRECT("[変更前.xls]"&ADDRESS(ROW(),COLUMN(),,,"気温")))

 何度も恐縮ですが、よろしくお願いいたします。

・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・

 (お礼)
 satoさま、半平太さま、独覚さま
 皆さん、ご親切に有難うございました!
 色々な方法を教えて頂き、本当に助かり、勉強になりました。
 まだ、勉強不足で、不本意な質問をしてしまうかもしれませんが、
 また何かありましたら、今後ともよろしくお願いいたします。(マル)


 >この数式の意味も教えていただけないでしょうか?
 実際にセルに
 =ADDRESS(ROW(),COLUMN(),,,"気温"))
 と入力して右や下へコピーしてみるとこの関数がどのような値を返すかがわかるかと。
 (「気温!$A$1」と入力したセルに対応した文字列を返します)

 ROW関数およびCOLUMN関数の引数を省略した場合、入力したセルの行番号、列番号を返すためADDRESS関数にそのセルの行番号、列番号を指定することになり、シート名も指定しているため
「気温」シートの対応するセル番地の文字列を返します。

 で、そのままではブック名が足りないため「"[変更前.xls]"&」を頭に付けて
 [変更前.xls]気温!$A$1
 というセル番地の文字列を作ってINDIRECT関数へ渡しています。

 あと、エラーの場合の判断をISERROR関数をつかって別に判断しているのはEXCELではどちらか片方がエラーの比較は
 結果もエラーとなってしまい条件付き書式では条件が成り立たないものとみなされるためISERROR関数で
 いったん「TRUE」「FALSE」に変換してから比較することでエラーになるのを回避しています。
 (独覚)

 独覚さん
 早速、丁寧な解りやすい回答を、有難うございました!

 @=ADDRESS(ROW(),COLUMN(),,,"気温")をコピーしてみました。
  この,,,は、参照の型、参照の形式を省略しているから、,,,が表示されているのでしょうか?

 A>で、そのままではブック名が足りないため「"[変更前.xls]"&」を頭に付けて
 [変更前.xls]気温!$A$1というセル番地の文字列を作ってINDIRECT関数へ渡しています。

 とありますが、ADDRESS関数だけで、番地を指定しているのに??
 何故、さらに、INDIRECT関数へ渡して対応するのでしょうか?
 試しにINDIRECT関数を省いてみたら、もちろん出来なかったのですが、
 ADDRESS関数とINDIRECT関数のつながりが、まだ理解できずm(__)m
 解りずらい質問ですみません。

 B空白セルから0に変更になっても、条件書式が反映されませんが、(特に反映されなくても大丈夫なの ですが、)
 空白セルと0は、同じ意味なのでしょうか?
 何度も恐れ入ります。(マル)


 >この,,,は、参照の型、参照の形式を省略しているから、,,,が表示されているのでしょうか?
 はい、そうです。

 >何故、さらに、INDIRECT関数へ渡して対応するのでしょうか?
 これはADDRESS関数が返すのはあくまでもセル参照をあらわす文字列でしかないためです。
 なのでINDIRECT関数でその文字列を実際のセル参照へ変換しています。

 例えばセルに
 =A1
 と入力するとA1セルの内容が表示されますが
 ="A1"
 と入力すると「A1」と表示されます。
 ADDRESS関数の結果はこの「"」でくくった「A1」とおなじ意味のものです。

 でINDIRECT関数で
 =INDIRECT("A1")
 とするとA1セルの内容が表示されるようにINDIRECT関数の中にADDRESS関数を置くことでセル参照に変換しています。

 >空白セルと0は、同じ意味なのでしょうか?
 すみません、考慮不足でした。

 A1セルが空白の時に他のセルに「=A1」と入力してみてください。
 「0」と表示されます。
 このように空白セルは皮革などの際「""」と一致しますが「0」とも一致します。
 なので今回の場合、チェックから漏れたのかと。
 (独覚)

 独覚さん
 とても解りやすいご説明を有難うございました。
 よく解りました。
 今回は、0と空白の違いのチェックは不要ですが、
 もし、今後必要になった場合、その違いもチェック出来る方法はあるのでしょうか?
 もし何か良い方法がありましたら、
 今後の参考に、教えて頂けないでしょうか?

 半平太さんに教えて頂いた方法でも、空白と0の区別はないようでした。(マル)

 色々としている間に、疑問が次から次に出てきてしまい、
 何度もお手間を掛けてしまい、
 すみませんm(__)m (マル)


 一番単純なのは(A1セルとB1セルを比較するとして)

 =IF(A1&"" = B1&"","一致","不一致")
 と両方の内容の後ろに「""」を付けて文字列にすることです。
 空白セルは「""」に、「0」は文字列の「0」になるため区別できます。

 ただ、この場合A1セルが数値の「1」で、B1セルが文字列の「1」の場合、おなじと判断します。
 (A1 = B1 の場合は数値の「1」と文字列の「1」は別と判断する)
 (独覚)

 独覚さん
 解りやすく、有難うございます!

 上記、試してみたら、0と空白の区別が出来ました。
 今、変更Bookの変更前sheetと変更後sheetの同一Book内のsheetの内容の違いを比べているのですが、
 変更後のsheetに、独覚さんに教えて頂いた、数式を変更して入れました。

 「セルの値が」「次の値に等しくない」
 =INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前"))
「数式が」
 =ISERROR(A1)<>ISERROR(INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前")))

 この二つの条件付き書式に、
 今教えて頂いた、=IF(A1&"" = B1&"","一致","不一致")を3つ目に加えるには、
 どのような数式を設定すれば良いのでしょうか?

 よろしくお願いいたします。(マル)

 「セルの値が」「次の値に等しくない」
 =INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前"))
 こちらの方を

 「数式が」
 =A1&""<>INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前"))&""
 としてみてください。

 「数式が」
 =ISERROR(A1)<>ISERROR(INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前")))
 こちらはそのままで。
 (独覚)

 独覚さま
 最後まで、教えて頂き有難うございました!
 おかげさまで、解決しました。
 私には、まだまだ難しくて、コピーして使うだけで精一杯ですが、
 今回、皆様に教えて頂いた事を、改めて勉強して、
 役立てたいです。
 長らくお付きい頂き、有難うございました!(マル)
 

 お世話になっております。
 前回は、有難うございました!

 変更Bookの変更前sheetと変更後sheetの同一Book内のsheetの内容の違いを比べている のですが、

 以前、皆様に教えて頂き、解決したのですが、
 今、EXACT関数の勉強をしておりまして、
 皆様に教えて頂いた手順を参考に、
 EXACT関数でも、違いを見つけられるのか、
 同様のファイルで試してみたところ、
 下記の数式で、内容の違いと空白と0の違いも認識されました。

 =(IF(EXACT(変更前!A1,変更後!A1),0,1))

 下記手順で行いました。 

 名前定義を利用する案(半平太さんに教えて頂いた方法の数式変更)

 1.変更後SheetのA1セルをクリックします。

 2.Ctrlキーを押しながら、F3キーを押して名前定義ダイアログを出します。
  (1) 名前欄に「変化セル」とでも入力します。
  (2) 参照範囲に下式を入力して「OK」ボタンをクリックします。

 =(IF(EXACT(変更前!A1,変更後!A1),0,1))

 3.条件付き書式で、条件を以下に設定します。
   =変化セル

 これだけでは、
 比較する元のデータが、#DIV/0!の場合は、データが更新されて、数値が入っても、
 設定した条件書式が反映されないので、 

 独覚さんに教えて頂いた、
 「数式が」
 =ISERROR(A1)<>ISERROR(INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前")))
 を条件付き書式に設定しているのですが、

 こちらも、半平太さんに教えて頂いた、名前定義を利用して、
 さらに、独覚さんに教えて頂いた、ISERRORを使い、
 EXACT関数を使用して、
 比較する元のデータが、#DIV/0!の場合は、データが更新されて、数値が入ったら、
 設定した条件書式が反映される方法はあるのでしょうか?

 色々な方法を勉強したくて、この度、似たような質問をして恐れ入りますが、
 もし、このような方法がありましたら、
 再度、ご教授をお願い出来ないでしょうか?

 よろしくお願いいたします。(マル)

 「何を以って、変化したと判定すれば満足か?」を明確にしないとなかなか終われません。

 いままで明らかになっているのは、以下のケース(その反対方向も) です。
  数値 →  別の数値
  数値 →  文字列
  エラー → エラーじゃない
  未入力セル→0

 変化と認定するかどうか曖昧なもの
  数値(1)              → 数字("1")
  未入力セル           → 長さゼロの文字列("")
  あるエラー(#DIV/0!) → 別種のエラー(#N/A)

 こちらをクリアーしていただけませんか?

 (半平太) 2010/09/17 14:54

 半平太さま
 前回はお世話になりました。
 以前、独覚さんに教えて頂いた、

  「数式が」
 =A1&""<>INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前"))&""
 としてみてください。

 「数式が」
 =ISERROR(A1)<>ISERROR(INDIRECT("[変更.xls]"&ADDRESS(ROW(),COLUMN(),,,"変更前")))

 で、運用しておりまして、大変便利になり、非常に助かっております。
 今のところ、下記の違いだけ、解れば、十分なのですが、

 数値 →  別の数値
 数値 →  文字列
 エラー → エラーじゃない
 未入力セル→0

 今回、さらに質問させて頂いたのは、
 私以外の初心者がこのファイルを見た時に、
 少しでも、数式が短い方が理解しやすいのでは?
 と指摘がありましたので、
 もっと短い関数で出来るのか、調べていた時に、、
 EXACT関数も違いを見つけられると言う事が解り、
 前に教えて頂いた数式同様に、内容の違いが見つけられるのかと思ったのですが、
 自分では解決できず、また、ご伝授頂ければと思い、
 相談させて頂いた次第です。

 =(IF(EXACT(変更前!A1,変更後!A1),0,1))だと、
 数式が、少しでも短いと思ったのですが、
 これだけだと、
 比較する元のデータが、#DIV/0!の場合は、データが更新されて、
 数値が入っても、解らないので、
 この部分の数式を、もっと短くする方法が、あるのかと思って相談させて頂きました。

 解りにくい質問で、何度も失礼しましたm(__)m (マル)


 「変化セル」の参照範囲
  =IF(ISERROR([変更前.xls]Sheet1!A1),NOT(ISERROR(A1)),IF(ISERROR(A1),1,NOT(EXACT([変更前.xls]Sheet1!A1,A1))))

 <式の構造>

  変更前がエラーなら
    変更後がエラーじゃなければ成立(TRUE)
  変更前がエラーじゃなければ
    変更後がエラーなら成立(1)
     変更後がエラーじゃなければ
        EXACTじゃなければ成立(TRUE)

 これが、初心者レベルの人に理解されるかは自信ありません。

 (半平太) 2010/09/17 16:25

 半平太さま
 何度も有難うございました!

 後ほど、確認してみます。
 お世話になりました!(マル)

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.