[[20051227155734]] 『2つのセル内の文字列を比較し、相違場所を抽出す』(BIT) ページの最後に飛ぶ

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

 

『2つのセル内の文字列を比較し、相違場所を抽出する』(BIT)
先程、『1つのセル内にある文字列を一文字ずつセルに分ける』の題名で、

質問させていただき、さっそくご返答頂きました。

また、新たな質問なのですが、例えば、

A1=×○○× B1=○○○○

というようなデータがあったとします。それぞれセル内の文字数は同じで、文字の種類は2種類です。
一つのセルに100近い文字が入力されています。
双方のセルを比較し、相違のある文字の場所(上記の場合は1、4列目)を抽出することはできますでしょうか。

先程の質問で頂いた回答(区切り位置)を使い、文字ごとにセルを区切った上で、
IF関数を使い、TRUEとFALSEでわけようかと思ったのですが、データの量が多く、
効率のよい方法はないかと思い、本日2度目ではありますが質問させて頂きました。

ご回答頂ければと思います。宜しくお願い致します。


 回答ではありません。
 もしかして、スレッド内容を消していませんか?
 (MARBIN)

すいません、何かプログラムのようなものが並んでいたので、
削除してしまったのですが。。。。
これって、いけないことだったでしょうか。
そうであったなら、お詫びいたします。
以降、文字は残しておくようにします。

 [seiya]さんの書き込みでした。 復活しておきます。
 (みやほりん)(-_∂)b 2005/12/28 11:50

 ユーザー定義関数です。

 Function bit(val1, val2) As String
 Dim i As Long, x As Long, i As Long
 x = Application.Min(Len(val1), Len(val2))
 y = Application.Max(Len(val1), Len(val2))
 For i = 1 To x
     If Mid$(val1, i, 1) <> Mid$(val2, i, 1) Then _
         bit = bit & i & ", "
 Next
 If x <> y Then
     For i = x + 1 To y
         bit = bit & i & ", "
     Next
 End If
 If Len(bit) = 0 Then
     bit = "Perfect!"
 Else
     bit = Left(bit, Len(bit) - 2)
 End If
 End Function
 (seiya)

みやほりんさん、どうもありがとうございました!
また、[seiya]さん、せっかくご回答頂いたのに大変申し訳ございませんでした。
以降、絶対同じ事は致しません。
ご迷惑おかけいたしました。
<BIT>

 解決したのかしら?
 >何かプログラムのようなものが並んでいたので、削除してしまった
 とのことなので、ちょっと気になって^^;

 関数を使った方法で考えてみました。 結果だけ出るようなものではありませんが…
 A2に =MID(A$1,ROW(A1),1)
 B2に =IF(A2=MID(B$1,ROW(B1),1),"",MID(B$1,ROW(B1),1))
 C2に =ROW(A1)
 として、A2からC100まで範囲選択して、そのままメニューバーから 編集>フィル>下方向へコピー を選択します。
 B列を選択して、データ>フィルタ>オートフィルタを選択します。
 B1に出現したプルダウンメニューから 空白以外のセル を選択しますと、相違部分がわかりやすくなるかな、と思いますがどうでしょう?
 (かなれっと)

かなれっとさん、ありがとうございました!
ご回答頂いた方法で試してみたところ、うまく相違部分を割り出せました!
この方法でやってみようと思います。seiyaさんから頂いたご回答は、
使えるように勉強します^^;私にはちょっと高度なようです。
尚、遅くなりましたが、MARBINさん、ご指摘ありがとうございました!


コメント返信:

[ 一覧(最新更新順) ]


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