• 締切済み

【エクセル】文字列分割の関数

エクセルで文字列を分割する数式を探しております。 以下のデータを 右から4桁とそれ以外に分割したいのです。 20002  → 2 0002 30003  → 3 0003 40010  → 4 0010 511000 → 51 1000 1019550 →101 9550 1012279 →101 2279 2019220 →201 9220 3338850 →333 8550 たとえばLEFT関数やRIGHT関数ですと、分割というよりも 抽出になってしまい、私の求めているものとは異なってしまいます。 考えが煮詰まってしまい、これ以上進めない状態です。。。 何卒よろしくお願いいたします。

みんなの回答

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.4

数値として2セルにするなら =TRUNC(A1/10000) =MOD(A1,10000) LEFT関数,RIGHT関数を使う場合は =LEFT(A1,LEN(A1)-4)*1 =RIGHT(A1,4)*1 単純にスペースで区切りたいだけなら =LEFT(A1,LEN(A1)-4)&" "&RIGHT(A1,4) または =REPLACE(A1,LEN(A1)-4,1,MID(A1,LEN(A1)-4,1)&" ") 分割する文字列が数値だけなら、下記の方法でも可能 =TEXT(A1*1,"0 0000")

z-3500
質問者

お礼

たくさんのアイデア、ありがとうございます! 感謝します。 勉強になりました。

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

データをA列として、 B列に=SUBSTITUTE(A1,RIGHT(A1,4),"") C列に=RIGHT(A1,4) で抽出します。 後は、B,C列をコピーし、「形式を選択して貼り付け」で値のみを選択して貼り付けるで如何でしょうか。 期待値と相違していましたら読み捨て下さい。

z-3500
質問者

お礼

なるほど! 右4桁をスペースで置き換えると言うことですか。 これは考えられなかったです。 ありがとうございます!!

  • ukichon
  • ベストアンサー率45% (78/173)
回答No.2

答えになってないかもしれません。 MID関数は検討しましたか? 私は、郵便局が「1060036」となっているものを「106-0036」にしたい場合以下のようにしています。 A1のセルに「1060036」が入っていた場合、 B1のセルに「=MID(A1,1,3)&"-"&MID(A1,4,4)」と入れています。 必ず右側が4桁なのなら、文字数をカウントする関数で全体の文字数を求めそこから4を引いた文字数目までをMID関数で抜き出すとか。 分からなかったら説明します。

z-3500
質問者

お礼

MID関数も検討しましたが、どうもうまく使いこなせないようでして…。 助かりました。ありがとうございます。 >文字数をカウントする関数で全体の文字数を求めそこから4を引いた文字数目までをMID関数で抜き出す とはLEN関数との合わせ技と言うことですかね。

  • toshi_2000
  • ベストアンサー率30% (306/1002)
回答No.1

=LEFT(A1,LEN(A1)-4) & " " & RIGHT(A1,4)

z-3500
質問者

お礼

なるほど、LEN関数ですね。考えてもいませんでした。 ありがとうございます。

関連するQ&A

  • Excelの文字列操作について

    Right・Left・Mid関数は何桁目以降表示しなさい、とか何桁目以降何桁分を抽出しなさいという関数ですが、例えば、@AAAA@BBBBB@CC.***のような文字列があり、文字列の右側から何桁目に@が来るか知る関数はありますか?サンプルの文字列でいうと、***.CC@の順になりますので、7桁目と判るようにできますか?どなたかお知恵をお貸し下さい。よろしくお願い致します。

  • エクセル 関数 文字列を分ける

    23Ar23 28Ar05 3Ta16 8Ta07 11Ta53 14Ta21 …以下多数 のように文字列があって、アルファベット前の数字(1文字か2文字)、アルファベット(2文字)、アルファベット後の数字(2文字)の3つに分割したいのです。データ区切り位置の機能を使えれば簡単ですが、アルファベットの前の文字数が1字と2字のものがあるのでできません。RIGHT、LEFTの関数を使用すれば、アルファベット2文字とアルファベット後の数字2文字は抽出できますが、アルファベット前の数字(1文字か2文字)だけ取り出せません。 関数か何かの方法で文字数を分ける方法を教えてください。

  • 指定した文字列が抽出できる関数

    Excelで、指定した文字列だけを抽出表示する場合、「文字列を先頭(左)から抽出する」などの関数は「LEFT関数」や「RIGHT関数」がありますが、位置の指定ではなく、文字列の中にある、特定の文字だけを指定して抽出してできる関数は何でしょうか? たとえば「ラーメン」「うどん」「そば」いずれかを「含む」文字列が入っているセルの中から、「うどん」のセルだけを抽出して表示するという場合です。

  • エクセルで文字列の5桁目が9なら0に変更

    エクセル初心者です。 インターネットで調べてみたのですが、同様の質問にヒットしませんでしたので、教えてください。 A列に8桁の会員番号が文字列で表示されています。 この8桁のうち右側の5桁を関数(RIGHT(a8,5))でB列に抽出しています。 抽出された5桁の数字ですが、最上位桁が9の場合、0に変えたいのです。 A        B 01004567    04567  02015678    15678 03098765    98765 → 9を0に入替して「08765」と表示 このような対応が出来る関数を調べたのですが分かりませんでした。 ご教示のほど、よろしくお願いします。

  • Excel 文字列にする関数

    エクセルが苦手なので教えてください! 選別番号で6桁の数字を使っているんですが、頭の数字が0から 始まるものがあり、セルに入力するとその選別番号だけ5桁に なってしまいます。 文字列にすればいいということだけはわかっているのですが、 すでに数字が入っている列に対して、関数を使って以下のような ことはできますか? (1)選別番号が5桁だったら、頭に0をつけて6桁にする、  かつ文字列にする (2)選別番号がすでに6桁だったら、そのまま文字列に変換 宜しくお願いします!

  • エクセルの文字列操作

    住所録の様式で A列にNo、B列に氏名、C列に住所のファイルがあり、 C列の住所で、1個のセルに何故かしら「住所と電話番号」が入っています。 住所と電話番号を夫々別の列に分割したくて、 電話番号は、RIGHT 関数で取り出しました。 住所は、文字数が一定でないので、LEFTまたはMID関数では出来ません。 ここで質問です 住所データの末尾に混在する電話番号は10文字の場合に限定し、 文字数の異なる、住所(○○市XX町△△番地○△荘2-103など)のみ 抽出する方法はありませんか。 なお、VBAなどは無知です、エクセル関数だけの操作があれば教えてください。

  • Excelにて任意の位置の文字列を抽出したい

    Excelにて任意の位置の文字列を抽出したい セルA1に、あたい1(837,1077,132) セルA2に、あたい2(657,100,32) セルA3に、あたい3(20,10000,888) のような値が入っています。 ここから、132、32、888を取り出したいのですが、どのような式を入れたら良いでしょうか? Right関数だと上記のように桁数が2桁と3桁と混在している場合に抽出できませんでした。

  • EXCELで、文字列を任意の文字数毎に分割するには

    ≪やりたい内容と条件≫ ◆EXCELで、文字列を任意の文字数毎に分割したいです。 ◆文字列は、全角・半角・記号を含みます。 ◆1つのセルが半角80桁という制限があり、その上限を超えると、右の次のセルに流し込まれるようにしたいです。(A1は元の文字列1500桁くらい、以降B1,C1,D1,E1・・・という具合に流し込み) ≪試した内容≫ MIDB関数を見つけ挑戦しましたが、1つ目のセルはうまくいきますが、その後が出来ません。例えば、文字列が「・・・・・・abcあいうえお」となっていた場合、B1は「・・・・・・abcあいう」、C1は「 お」(「お」の前は、半角スペース)となります。 何かよい方法はないでしょうか。 一度に出来ないようであれば、A1-B1で残りの文字列が表示できれば、それ以降はまた関数を入れて一つ一つやっていきたいと思っています。 よろしくお願いいたします。

  • 文字列から指定の文字桁数を削除

    お願いします。 あるデータをエクセルに移したら、 データとデータがふっついてしましました。 もう、元のデータがなく今のエクセルデータで分解しなくてはなりません。 文字数が一定なら =left( , ) や =right( , ) で抽出できるのですが、これはこんな感じで文字数がばらばらです。 右から金額が一定でないのです。 一定なのは右から6文字得意先番号(000020,000021,000043,000004)です。 4411000020 7351000021 101000043 16801000004 13651000005 =right( , ) で別なセルに抽出はできるのですが、 左部の金額を別なシートに入れられません。 何とか教えてください。

  • 数値を分割する関数教えて下さい。

    CONCATENATE関数を使ってsheet1のデータをsheet2のように結合しました。   Sheet1         sheet2    A    B          A 1  1    1    →  1  11 2  20   1       2  201 3  100   1       3 1001 これをまた別のシートでsheet2のA列に入っている数値が一桁目以外(1 or 20 or 100)が入っていたならば○という、逆に分割して検索するものを作りたかったのですが、RIGHTやLEFT関数などをつかってみましたが上手くいきません。良い方法はないでしょうか?(最初のシートは上書きして別のデータを入力しているので使用できないためです。)宜しくお願いします。

専門家に質問してみよう