これは関数のウラ技や超難問として、偶に載っている課題です。
(1)#3の後半の回答
(2)本回答の下記(配列数式)
(3)VBA
どれも質問者にとって、(今のレベルで)判りますか、というようなことと思います。(2)は私も苦労しました。
(2)や(1)は1000行もあると、エクセルがスムーズに動くか、そういう面からも心配です。
ーー
文字性格別に考えられる自由度は(2)=下記が一番高いだろうと思う。任意の範囲の文字コード帯を対象にできる。
ーー
全提条件
文字性格(下記)の出現は、かたまって出現するものとし、2つの塊にならないものとする。1対のスタートーエンドで解決するものでないとダメということ。
ーー
各1文字の文字コードを見るより他ない。
文字コードは関数CODEで見れる。
半角数字 48-57
半角英数小文字(a-z) 97-122
半角英数大文字(A-Z) 65-90
半角カナ 166-223
ーー
全角英数小文字 9057-9082
全角英数大文字 9025-9050
全角漢字、ひらがな、カタカナ 略
ーーー
これを配列数式で、スタート桁、エンド桁を求められます。
全角文字の塊のスタート桁(文字単位)
=MIN(IF((CODE(MID($A$74&REPT(" ",20),ROW(A1:A20),1))>255),ROW(A1:A20),99))
と入れてSHIFT、CTRL、ENTERの3つのキーを同時押しする。
(例)sdfg1245神奈川fgh だと 9
全角文字の塊のエンド桁
=MAX(IF((CODE(MID($A$74&REPT(" ",20),ROW(A1:A20),1))>255),ROW(A1:A20),0))
と入れてSHIFT、CTRL、ENTERの3つのキーを同時押しする。
(例)sdfg1245神奈川fgh だと 11
ただし20文字以下を仮定した式です。
ーーーーー
参考にもうひとつ
大阪市asdfg1245奈良市
でasdfgを捉える
スタート文字何番目
=MIN(IF(((CODE(MID($A$55&REPT(" ",20),ROW(A1:A20),1))>64)*(CODE(MID($A$55&REPT(" ",20),ROW(A1:A20),1))<255))=1,ROW(A1:A20),99))
と入れてSHIFT、CTRL、ENTERの3つのキーを同時押しする。
結果 4
エンド文字何番目
=MAX(IF(((CODE(MID($A$55&REPT(" ",20),ROW(B1:B20),1))>64)*(CODE(MID($A$55&REPT(" ",20),ROW(B1:B20),1))<255))=1,ROW(B1:B20),0))
と入れてSHIFT、CTRL、ENTERの3つのキーを同時押しする。
結果 8
ーーー
スタートsとエンドeが求められれば
=MID(A1,s,e-s+1)
で文字は切り出せる。
お礼
ありがとうございます。 文字が固定か・・・などの部分に関しては 『あらゆる可能性があります』 真ん中は不固定ですし、英数字・全半角・記号、全てありえます。 お手数ですがお願い致します。