[[20080604205809]] 『相違部分検索』(相違文字) ページの最後に飛ぶ

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

 

『相違部分検索』(相違文字)

 下記のようにA〜K列まで使用のデーターがあります。(シート1)
 ┌─┬────┬────┬────┬────┬────
 │  │   A    │   B    │   C    │   D    │   K    │
 ├─┼────┼────┼────┼────┼────┤
 │1 │  東京  │季節    │晴れ    │ 1-1    │  100   │
 ├─┼────┼────┼────┼────┼────┤
 │2 │  上野  │季節    │曇り    │ 2-2    │        │
 ├─┼────┼────┼────┼────┼────┤
 │3 │  渋谷  │季節    │雨     │ 3-2    │  100   │
 ├─┼────┼────┼────┼────┼────┤
 │4 │  練馬  │季節    │晴れ    │ 4-2    │        │
 ├─┼────┼────┼────┼────┼────┤
 │5 │  新宿  │季節    │雨     │ 5-2    │  100   │
 ├─┼────┼────┼────┼────┼────┤

  (シート2)       ↓
 ┌─┬────┬────┬────┬────┬────
 │  │   A    │   B    │   C    │   D    │   K    │
 ├─┼────┼────┼────┼────┼────┤
 │1 │  東京  │季      │晴れ    │ 1-1    │  101   │←B1とK1が上記と相違
 ├─┼────┼────┼────┼────┼────┤
 │2 │  上野  │季節    │曇り    │ 2-2    │        │←すべて同じ
 ├─┼────┼────┼────┼────┼────┤
 │3 │  渋    │季節    │雨     │ 3-1    │  100   │←A3とD3が上記と相違
 ├─┼────┼────┼────┼────┼────┤
 │4 │  練馬  │季節    │晴れ    │ 4-2    │  11    │←K4が上記と相違
 ├─┼────┼────┼────┼────┼────┤
 │5 │  新   │季     │雨     │ 5-     │  10    │←A5〜K5すべて相違
 ├─┼────┼────┼────┼────┼────┤

 上記のようにセルの相違文字があればシート1とシート2のM列に"○"を付ける
 ようにしたいのですが??
 出来れば”セルの色””文字の色”も同様に違えば"○"を・・・・
 ○だけだと後で何処が違うのかを見るのが大変そうなのですが
 何かよい方法があれば教えていただけないでしょうか。
 データーは数万とあります。(泣)マクロが???
 (相違文字)


 この様な方法でどうでしょう。
 ただし、Sheet1,Sheet2の同じ行、同じ列
(同じ場所に有るセル)の状態を比べる場合です。

 >○だけだと後で何処が違うのかを見るのが大変そうなのですが
 は、確かにそう思いますので、Sheet3を作ります。
 Sheet3のフォントは、「MSゴシック」等、等幅フォントを指定して下さい。

 Sheet3のA1セルを選択した状態で
 メニュー・挿入(I)→名前(N)→定義(D)と進み

  背景色1
=GET.CELL(63,Sheet1!A1)+NOW( )*0
  背景色2
=GET.CELL(63,Sheet2!A1)+NOW( )*0
  文字色1
=GET.CELL(24,Sheet1!A1)+NOW( )*0
  文字色2
=GET.CELL(24,Sheet2!A1)+NOW( )*0

 ↑4つの名前を定義します。
 ○○1 と ○○2の違いは、シート名のみです。

 A1セルに ↓2行で一つの式です。
=IF(Sheet1!A1=Sheet2!A1," ","デ")&"-"&IF(文字色1=文字色2," ","文")&"-"&
IF(背景色1=背景色2," ","背")
 を入力したら、このセルを必要箇所にコピーしてください。
 M1セルに
=5-COUNTIF(A1:K1," - - ")
 と、入れてこのセルを必要行コピーしてください。

 Sheet2のM列には
=IF(Sheet3!M1,"○","")
 を入力します。

 以下、Sheet2とSheet3の結果図です。
 Sheet2	[A]	[B]	[C]	[D]	・・・・	[K]	[L]	[M]
[1]	東京	季	晴れ	1-1		101		○
[2]	上野	季節	曇り	2-2				
[3]	渋	季節	雨	3-1		100		○
[4]	練馬	季節	晴れ	4-2		11		○
[5]	新	季	雨	5-		10		○

 Sheet3	[A]	[B]	[C]	[D]	・・・・	[K]	[L]	[M]
[1]	 - - 	デ- - 	 -文- 	 - - 		デ- - 		3
[2]	 - - 	 - - 	 - - 	 - - 		 - - 		0
[3]	デ- - 	 - - 	 - - 	デ- - 		 - - 		2
[4]	 -文- 	 - - 	 - -背	 - - 		デ-文- 		3
[5]	デ- -背	デ-文- 	 - - 	デ- - 		デ- - 		4

 例えば、B1セルは データが違い、C1セルは 文字色が違います。
 A5セルは、データと背景色が違います。

 セルの色・文字の色等を変更して 確認する場合は
 [ F9 ]キーをおして、再計算を行ってください。
 色を変更しただけでは、Sheet3の内容は変わりません。

 (HANA)

  ありがとうございます。
 難しすぎて・・・・マクロなどでは出来ないのでしょうか??(相違文字)


 どこが分かりませんか?
 名前の定義の部分ですかね・・・?

 もしも各表がA1セルから始まっていなくても
 名前の定義をするときは、Sheet3のA1セルを選択した状態で
 上記式にて設定して下さい。

 あるいは、気になるようで有れば
 たとえばB5セルを選択して名前の定義を行うなら
 各式の
=GET.CELL(63,Sheet1!A1)+NOW( )*0>0
                    ~~この部分も、B5セルにして下さい。

 他の所で躓いて居られるとは思えないので・・・。

 (HANA) 

 (wisemac21)さん(HANA) さんありがとうございます。
 何とかできたのですが、時間がかかり過ぎてしまいマクロを希望しました。
 Sub Macro1()
  ActiveWindow.SmallScroll Down:=-12
    Range("A:K,M:W").Select
     Range("M1").Activate
      Selection.ColumnDifferences(ActiveCell).Select
        With Selection.Interior
        .Pattern = xlSolid
        .PatternColorIndex = xlAutomatic
        .Color = 65535
        .TintAndShade = 0
        .PatternTintAndShade = 0
    End With
    Range("L9").Select
    ActiveWindow.SmallScroll Down:=-9
 End Sub
 記録で行いましたが駄目でした・・・・(泣)(相違文字)


 結果は何処にどの様に出るのが良い事に成りましたか?
 当初の様に
 >シート1とシート2のM列に"○"を付ける
 だけで良いでしょうか?

 結果を見て・・・何をするのか私には分かりませんが・・・
 何かをなさるのでしょうから、どの様な結果が出れば
 その後の処理が簡単に出来るのかは、そちらで考えて
 希望結果図を載せて下さい。

 表形式は、エクセルから直接貼り付けると
 簡単に記入出来ると思います。
(当初投稿なさったような線は入りませんけどね・・・。)

 ただ、マクロにしても1セルずつ見ていくので
 時間はかかると思いますよ。

 (HANA)

 そうですね。。当初に希望いたしましたM列に"○"
 で相違がある場合シート1シート2のN列〜X列を使用して一番最初の例だと
 N1に"B1と相違" O1に"K1と相違"などと何処が違うのかを表示できればと思います。
 こんな感じをマクロに出来たらなんて・・・(相違文字)


 >N列〜X列を使用
 するならN1には、A1の結果が表示されるはず?
 ・・・あぁ、前詰めって事ですね。

 あと 「何の相違か」って所までは表示されなくて良いのですね?

 (HANA)

 (wisemac21)さん
 相違文字さんが記録した手順は、貴方のアドバイスに従った物ですから
 その部分を消されると、話がおかしくなりますよ?

 と言う事で、戻しても宜しいですかね?

 (HANA)

 「何の相違か」まで表示されればありがたいです。
 最初から自分でしたい事を提示すればと反省しています。(相違文字)


 でしたら、どの様に表示されれば良いのですか?

 ご自身が作ろうと思ったときに、
 先に決めて於かなくてはいけない事でしょ?
 それは、先に決めて 意思表示をして於いて下さい。

 最初に載せて頂いたデータで良いので、(色はそちらで適当に変更してもらって)
 そのデータを使ったらM列〜X列にはどの様に表示されるか
 サンプルを作って載せて下さい。

 上でも書きましたが、言葉での説明だけではなく
 【希望結果図を載せて下さい。】

 そうして頂けると、先に何を決めておかなければならないか
 分かると思います。

 (HANA)

 シート1													
	A	B	C	D	・・	K	・・	M	N	O	P	Q	X
1	東京	季節	晴れ	1-1	・・	100	・・	○		○			○
2	上野	季節	曇り	2-2	・・		・・						
3	渋谷	季節	雨	3-2	・・	100	・・	○	○			○	
4	練馬	季節	晴れ	4-2	・・		・・	○					○
5	新宿	季節	雨	5-2	・・	100	・・	○	○	○	○	○	○
シート2													
	A	B	C	D	・・	K	・・	M	N	O	P	Q	Y
1	東京	季	晴れ	1-1	・・	101	・・	○		○			○
2	上野	季節	曇り	2-2	・・		・・						
3	渋	季節	雨	3-1	・・	100	・・	○	○			○	
4	練馬	季節	晴れ	4-2	・・	11	・・	○					○
5	新	季	雨	5-	・・	10	・・	○	○	○	○	○	○

 上記のようにしたいと思います。
 M列は前回同様にシート1とシート2の行セルに相違があれば"○"を
 A	B	C	D	E	F	G	H	I	J
↓	↓	↓	↓	↓	↓	↓	↓	↓	↓
N	O	P	Q	R	S	T	U	V	W

 N1には、A1の結果と言う具合で・・相違があれば"○"を・・・・
 後は文字の相違等は目で見て判断いたします。
 おそらくそんなには無いと思うので・・・
 何度も申し訳ございません。。(相違文字)


 Sub test()
 Dim x As Long
 With Sheets("sheet1").Range("a1").CurrentRegion.Resize(,10)
     x = .Rows.Count
     .Range("m1").Resize(.Rows.Count, 10).Formula = _
     "=if(sheet1!a1<>sheet2!a1,sheet1!a1&""/""&sheet2!a1,""○"")"
     Sheets("sheet2").Range("m1").Resize(.Rows.Count, 10).Formula = _
     "=if(sheet2!a1<>sheet1!a1,sheet2!a1&""/""&sheet2!a1,""○"")"
 End With
 End Sub
 とか?
 (seiya)

 ありがとうございます。しかし試してみましたが全部○に
 なってしまいます。??。。(相違文字)


 処理にかかる時間はどうですか?
 問題ない早さですか?

 (HANA)

 全然、問題ございません。数秒です。(相違文字)


 でも、セルには数式が入りますよね?
 これで問題無いのなら、最初に私が載せた方法でも
 問題なさそうに思いますが、あちらでは時間がかかるのですか?

 ・・・・まぁ、文字色と背景色も見てるから重かったのかな・・・?

 (HANA)

 全部○ですか?
 なぜでしょう?
 数式を一部変更しました。

 Sub test()
 With Sheets("sheet1").Range("a1").CurrentRegion.Resize(,10)
     .Range("m1").Resize(.Rows.Count, 10).Formula = _
     "=if(sheet1!a1<>sheet2!a1,sheet1!a1&""/""&sheet2!a1,""○"")"
     Sheets("sheet2").Range("m1").Resize(.Rows.Count, 10).Formula = _
     "=if(sheet2!a1<>sheet1!a1,sheet2!a1&""/""&sheet1!a1,""○"")"
 End With
 End Sub
 (seiya)

 seiyaさん
 数式の事なら、最初ので合っていると思いますよ。
 あ、勿論2回目のもです。

 (HANA)

 とりあえず、不要部分を削除しておきました。
 (seiya)

 やはり全部N〜○で・・何度もためしてみましたが・・(相違文字)


 各セルに入った数式はどのようになっていますか?
 (seiya)

 申し訳ございません。K列で試してました。
 KはXに結果を追加できますでしょうか?(相違文字)

 > 申し訳ございません。K列で試してました。
 > KはXに結果を追加できますでしょうか?
 意味がわかりません...
 (seiya)

 説明不足で申し訳ございません。
 しかしM列"○"ですがシート1シート2共に同じでも○が・・・表示されてしまいます?
  Sub test()
 With Sheets("sheet1").Range("a1").CurrentRegion.Resize(,11)
     .Range("m1").Resize(.Rows.Count, 11).Formula = _
     "=if(sheet1!a1<>sheet2!a1,sheet1!a1&""/""&sheet2!a1,""○"")"
     Sheets("sheet2").Range("m1").Resize(.Rows.Count, 11).Formula = _
     "=if(sheet2!a1<>sheet1!a1,sheet2!a1&""/""&sheet1!a1,""○"")"
 End With
 End Sub
 K列は10を11にしたら表示されました。(相違文字)


 >  しかしM列"○"ですがシート1シート2共に同じでも○が・・・表示されてしまいます?
 そのような仕様えはないのですか?
 数式は
 Sheet1/sheet2が同じなら○、そうでなければ両方の値を表示
 ということにしてありますが?
 (seiya)

 名前の定義に関する式を少し変更しました。

 (HANA)

コメント返信:

[ 一覧(最新更新順) ]


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