[[20170323220730]] 『2つのセルに入った文字列の共通部分を抜き出し』(unk) ページの最後に飛ぶ

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

 

『2つのセルに入った文字列の共通部分を抜き出し』(unk)

いろいろ調べてみたのですが、わからなかったので質問させていただきます。
2つの文字列の共通部分を抜き出したいのですが、良い方法はありませんでしょうか。たとえば、

     A           B
1   ABC1     abcd1234
2   ABC2     abcd3456

とあったときに、A1,A2の共通部分のABC、B1,B2の共通部分のabcd、
という風に標準関数の組み合わせだけで出したいです。

よろしくお願いします。

< 使用 Excel:Excel2013、使用 OS:Windows7 >


B1とB2は「34」という部分も共通していますが、これは対象外ですか?
共通しているとするルールはありますか?
(カリーニン) 2017/03/23(木) 22:53

言葉足らずですみません。
連続かつ共通している部分です。
よろしくお願いします。
(unk) 2017/03/23(木) 23:24

 先頭から探すとして。
 また、大文字・小文字を区別するとして。
 A3セルに
 =LEFT(A1,MATCH(1,INDEX(0/EXACT(LEFT(A1,ROW($1:$100)),LEFT(A2,ROW($1:$100))),0),1))
 と入力して横へフィルコピーではどうか。

 もし、大文字・小文字を区別しない場合は
 =LEFT(A1,MATCH(1,INDEX(0/(LEFT(A1,ROW($1:$100))=LEFT(A2,ROW($1:$100))),0),1))
 で。
(ねむねむ) 2017/03/24(金) 09:42

マクロでの例なぞ。大文字小文字を等価に扱うならば、LCase文でお互い小文字に統一すればOK。

 Sub test()
    Dim i As Long
    Dim j As Long

    For i = 1 To Range("A1").End(xlToRight).Column
        For j = 1 To Len(Cells(1, i).Text)
            If Not Cells(2, i).Text Like Left(Cells(1, i).Text, j) & "*" Then
                Exit For
            End If
        Next j
        Cells(3, i).Value = Left(Cells(1, i).Text, j - 1)
    Next i
 End Sub
(???) 2017/03/24(金) 10:15

ねむねむさん、ありがとうございます。
希望の操作ができるようになりました。

1つお聞きしたいところがあって、
ROW($1:$100)のところの配列を{1:100}
のように指定できないでしょうか。
{1;2;3;...}とするのは長すぎるので…

よろしくお願いします。
(unk) 2017/03/24(金) 10:40


 {1:100} などという使い方はできないのでROW関数を使っている。

 まあ、セル内の文字数以上であればいいので文字数の最大が10文字であれば
 ROW($1:$10)
 や
 {1,2,3,4,5,6,7,8,9,10}
 でもいいかもしれないが。
(ねむねむ) 2017/03/24(金) 11:09

 あ、あと配列部分は数字で指定できるので分かりやすいためROW関数を使っている。

 配列自体は縦(;で区切る)でも横(,で区切る)でもどちらでも構わない。
 (2か所の配列を同じにしないとならないが)
(ねむねむ) 2017/03/24(金) 11:15

 >ROW($1:$100)のところの配列を{1:100} 
 >のように指定できないでしょうか。 

 必ず先頭で 1:100の範囲なら ・・・ 「100」をたとえばC1セルに指定して

 ROW($1:$100) ⇒ ROW($A$1:INDEX($A:$A,$C$1)) に変更。
 
(GobGob) 2017/03/24(金) 11:40

みなさま、ご回答ありがとうございました。

どうしても参照を使うと行削除されたときに数式を保つことができない事があるためです。

結局、ROW(INDIRECT("1:100")により対処できました。

また、今回の場合はこの数式で事足りましたが、
共通部分が必ずしも先頭からでない場合は、標準関数ではとても厄介になりそうですね。

とりあえず解決できましたので、みなさまありがとうございました。
(unk) 2017/03/24(金) 14:03


コメント返信:

[ 一覧(最新更新順) ]


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