- ベストアンサー
エクセルシートの文字列加工について
エクセルのシートのA列に"全角ひらがな漢字"の文字列と"半角英数"の文字列を含むセルが縦に並んでいます。約200行。 ■この中から、"全角ひらがな漢字"の文字列を右となりのB列に、"半角英数"の文字列をさらに右となりのC列に、それぞれコピーしたいのですが、関数・マクロなどでいい方法がありましたら教えて下さい。 ■それから、半角英数文字列のC列から、""で囲まれた文字列のみをさらにD列にコピーしたいのです。 文字列の長さが統一されていれば、比較的簡単なのですが、今回は文字列の長さが不規則です。よろしくお願いします。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
ANo.4のmaronです、D1も考えてみました D1=LEFT(REPLACE(A1,1,FIND("""",A1),),FIND("""",REPLACE(A1,1,FIND("""",A1),))-1)
その他の回答 (5)
- cafe_au_lait
- ベストアンサー率51% (143/276)
>最後の半角英数文字列▲▲▲▲がくっついてきます。 全角文字の先頭が切れていないとすると、文字数が正しく取得できていないようですね。 =LENB(A1)-LEN(A1) の結果は全角文字数と一致していますか?末尾に全角スペースとかありませんよね? >maronさん なるほど、CODEを使うとスマートですね。COLUMNなら数も妥当ですし。勉強になります。
- maron--5
- ベストアンサー率36% (321/877)
B1=MID(A1,MATCH(1,INDEX(1/(CODE(MID(A1,COLUMN(1:1),1))>122),),0),LENB(A1)-LEN(A1)) C1,D1の式は、すでに回答されていますので、省略します
- cafe_au_lait
- ベストアンサー率51% (143/276)
全角文字は分割されないのですよね? 100文字以内の場合。ちょっと自信ないですが…。 =MID($A1,MATCH(0,INDEX((MIDB($A1,ROW($A$1:$A$100),1)=MID($A1,ROW($A$1:$A$100),1))*1,),FALSE),LENB($A1)-LEN($A1)) D列はNo.1さんの方が書いておられますので割愛します。
補足
ありがとうございます。 ▲▲▲▲▲"△△△△△"▲▲■■■■▲▲▲▲ 試してみました。 最後の半角英数文字列▲▲▲▲がくっついてきます。 ■■■■▲▲▲▲と表示されます。 すみません。 ここまで複雑になると、私の頭では修正不能です・・・。
- cafe_au_lait
- ベストアンサー率51% (143/276)
一つのセルに両方含まれているのでしょうか? B1:=IF(LEFTB(A1,1)=LEFT(A1,1),RIGHT(A1,LENB(A1)-LEN(A1)),LEFT(A1,LENB(A1)-LEN(A1))) C1:=SUBSTITUTE(A1,B1,"")
補足
すみません。言葉足らずだったようです。 具体的には、 半角英数:▲△ 全角ひらがな漢字:■ として、 ▲▲▲▲▲"△△△△△"▲▲■■■■▲▲▲▲ という文字列で、 B列に、■■■■を C列に、▲▲▲▲▲"△△△△△"▲▲▲▲▲▲を D列に、△△△△△を 表示させたいのです。文字列の文字数はセルによって少々異なります。 よろしくお願いします。
- mshr1962
- ベストアンサー率39% (7417/18945)
B2=IF(AND($A2<>"",LENB($A2)=LENB(JIS($A2))),$A2,"") C2==IF(AND($A2<>"",LENB($A2)<LENB(JIS($A2))),$A2,"") D2=IF(ISERROR(FIND(CHAR(34),$C2)),"",MID($C2,FIND(CHAR(34),$C2)+1,FIND(CHAR(34),SUBSTITUTE($C2,CHAR(34),"'",1))-FIND(CHAR(34),$C2)-1))
補足
皆さんありがとうございました。 助かりました。