プロが教える店舗&オフィスのセキュリティ対策術

A、B横並びのセル内に同じ文字が4文字以上並んでいたら、その文字をCに抽出させたいです。
マクロでも関数でも良いので解説付きで教えてください。

「Excel A,Bと横並びのセル内に同じ」の質問画像

A 回答 (2件)

「4文字以上」は「4文字」を含みます。

条件合ってますか?

=IF(COUNT(FIND(LEFT(B1&CHAR(9),5),A1)),B1,"")

> 解説付きで教えてください。
お断りします。
    • good
    • 0

ユーザ定義関数になりますが、こんな感じでいかがでしょうか。


標準モジュールに下記のコードを張り付けて、C1セルに式 =MyFind(A1,B1) と入力します。

【仕様説明】
引数A1の値を変化させながら、引数B2を検索(InStr)し、見つけた時点の引数A1(変化後)の内容を返します。
引数A1の変化仕様は以下の通りです。
例)ABCDE の場合
①ABCDE・・・最初はフル文字
②ABCD…文字数を-1して、1桁目から文字数分とする
③BCDE…2桁目から文字数分(長い文字列の場合は、これを3桁目、4桁目・・・と最後まで繰り返し)
④文字数が4になるまで上記②③を繰り返し、見つかった時点でその文字を返す。見つからない場合は、初期値を返す。

Function MyFind(celA As Range, celB As Range) As String
Dim MyStr As String
Dim I As Long
Dim L As Long
For L = Len(celA) To 4 Step -1
For I = 1 To Len(celA) - L + 1
MyStr = Mid(celA, I, L)
If InStr(celB, MyStr) > 0 Then
MyFind = MyStr
Exit Function
End If
Next
Next
End Function
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!