No.11です.
提示された数式は配列数式だったのですね.
2つの配列数式を使ってできました.
元の式が全角カタカナだけを扱っていたので,この式も同様の扱いとしています.同様に長音と中点も対象外になります.
(1) A列に元データを入力します.
(2) B列に以下の配列数式を入力します.
{=IFERROR(IF(MATCH(1,(CODE(MID(A1,COLUMN($A$7:INDEX($7:$7,LEN(A1))),1))>=9505)*(CODE(MID(A1,COLUMN($A$7:INDEX($7:$7,LEN(A1))),1))<=9590),0)=1,IFERROR(LEFT(A1,MATCH(1,(CODE(MID(A1,COLUMN($A$7:INDEX($7:$7,LEN(A1))),1))<9505)+(CODE(MID(A1,COLUMN($A$7:INDEX($7:$7,LEN(A1))),1))>9590),0)-1),A1),MID(A1,MATCH(1,(CODE(MID(A1,COLUMN($A$7:INDEX($7:$7,LEN(A1))),1))>=9505)*(CODE(MID(A1,COLUMN($A$7:INDEX($7:$7,LEN(A1))),1))<=9590),0),LEN(A1))),"")}
(3) C列に以下の配列数式を入力します.
{=IFERROR(IF(MATCH(1,(CODE(MID(B1,COLUMN($A$7:INDEX($7:$7,LEN(B1))),1))>=9505)*(CODE(MID(B1,COLUMN($A$7:INDEX($7:$7,LEN(B1))),1))<=9590),0)=1,IFERROR(LEFT(B1,MATCH(1,(CODE(MID(B1,COLUMN($A$7:INDEX($7:$7,LEN(B1))),1))<9505)+(CODE(MID(B1,COLUMN($A$7:INDEX($7:$7,LEN(B1))),1))>9590),0)-1),B1),MID(B1,MATCH(1,(CODE(MID(B1,COLUMN($A$7:INDEX($7:$7,LEN(B1))),1))>=9505)*(CODE(MID(B1,COLUMN($A$7:INDEX($7:$7,LEN(B1))),1))<=9590),0),LEN(B1))),"")}
(2)の式で,文字列がカタカナ以外で始まる場合にカタカナより前の文字列を削除しています.
abcアイウエオabcアイウエオ → アイウエオabcアイウエオ
(3)の式で,カタカナ以外の文字より前の文字列を取り出しています.
アイウエオabcアイウエオ → アイウエオ
数式は複雑ですが,やっていることは文字列から最初のカタカナの位置と最初のカタカナ以外の位置を配列数式で求めているだけです.
それぞれの始まりの位置がわかれば,あとはカタカナを切り出すだけです.
最初のカタカナの位置
{=MATCH(1,(CODE(MID(A1,COLUMN($A$8:INDEX($8:$8,LEN(A1))),1))>=9505)*(CODE(MID(A1,COLUMN($A$8:INDEX($8:$8,LEN(A1))),1))<=9590),0)}
最初のカタカナ以外の位置
{=MATCH(1,(CODE(MID(A1,COLUMN($A$8:INDEX($8:$8,LEN(A1))),1))<9505)+(CODE(MID(A1,COLUMN($A$8:INDEX($8:$8,LEN(A1))),1))>9590),0)}
補足
セルが多数ありそれぞれのセル中で最初に出てきたカタカナ単語をそれぞれのセルから抜き出したい