- 締切済み
エクセル(Excel)の関数について
関数(それ以外でも)を教えてください。 例えば ABC文字abc という文字が一つのセル内にある場合 ABC 文字 abc と3つのセルに分ける方法を お願い致します
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- imogasi
- ベストアンサー率27% (4737/17069)
これは関数のウラ技や超難問として、偶に載っている課題です。 (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) で文字は切り出せる。
- maron--5
- ベストアンサー率36% (321/877)
◆「アルファベット3文字+文字3文字+アルファベット3文字」のように文字数が固定であれば =LEFT(A1,3) =MID(A1,4,3) =RIGHT(A1,3) ★これでいいのではないでしょうか ◆「アルファベット+文字+アルファベット」で文字数が可変の場合 B1=LEFT(A1,MATCH(1,INDEX(1/(CODE(MID(ASC(A1),ROW($1:$50),1))>5000),),0)-1) D1=RIGHT(A1,SUMPRODUCT((CHAR(ROW($65:$90))=MID(A1,COLUMN(1:1),1))*1)-LEN(B1)) C1=SUBSTITUTE(SUBSTITUTE(A1,B1,),D1,) ★一度、確認してください
- zap35
- ベストアンサー率44% (1383/3079)
文字配列ルールをもっと明確に示していただけませんか 例として上げられている >ABC文字abc は 半角英大文字3文字 + 全角文字2文字 + 半角英小文字3文字 になっていますが文字数、文字の種類が変わると実現方法(できるか、できないか)が変わってきます ・3+2+3の文字数は固定ですか? それとも4+3+2のように変化しますか → 固定ならLEFT、MID関数で分離できます ・真ん中の「文字」の部分は常に同じですか → これが同じなら、前後の英文字部分が可変長であっても、FIND関数で「文字」の開始位置を探して分離できます ・そうでない場合はVBAが必要かもしれません。でも3つのパートの条件が明確ではないので質問文だけではVBAは書けません 条件とは「全角/半角、文字種(英数字だけか、数字、記号も混じるか)、文字長」などです
- kepo2007
- ベストアンサー率10% (3/28)
LEFT関数はどうでしょうか?
- kepo2007
- ベストアンサー率10% (3/28)
それは、文字とabcを切り取って、別のセルに貼り付ければ良いんじゃないでしょうか?たぶん関数の問題ではないと思いますね。
補足
1000個あれば1000回、わざわざ1つ1つ選択し 切り取り、セルを選び貼り付けするしかない。 という事でしょうか? 最低限、エクセルを見た事ある方からの回答お願い致します。
お礼
ありがとうございます。 文字が固定か・・・などの部分に関しては 『あらゆる可能性があります』 真ん中は不固定ですし、英数字・全半角・記号、全てありえます。 お手数ですがお願い致します。