• ベストアンサー

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

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

質問者が選んだベストアンサー

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

=LEFT(A1,1+(LEN(A1)=6)) ’左から1または2文字 =MID(A1,2+(LEN(A1)=6),2) ’左から2または3文字目から2文字 =RIGHT(A1,2)  ’右から2文字 1+(LEN(A1)=6)等の部分は、IF(LEN(A1)=6,2,1)などのようにしても勿論かまいません。

honeybeans
質問者

お礼

早々にありがとうございます。バッチリできました。

その他の回答 (1)

  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

提示の模擬データのように数字英字数字の組み合わせとして検証してみました。 元データの文字列長は10文字としています。 A列1行目から10行目まで元データがあるものとした検証です。 B1=IF(A1="","",VALUE(LEFT(A1,MIN(IFERROR((CODE(MID(A1,COLUMN(A1:J1),1))<CODE("A"))*100+COLUMN(A1:J1),100))-1))) C1=IF(A1="","",SUBSTITUTE(LEFT(A1,MAX(IFERROR((CODE(MID(A1,COLUMN(A1:J1),1))>=CODE("A"))*COLUMN(A1:J1),0))),B1,"")) D1=IF(A1="","",VALUE(SUBSTITUTE(A1,B1&C1,""))) B1とC1の数式は計算途中で配列値を返す必要があるため数式の確定時にCtrl+Alt+Enterキーを打鍵します。 B1:D1を一括して下へ10行目までコピーしました。 Excel 2007以降のバージョンで再現できるはずです。

honeybeans
質問者

お礼

すみませんが、何かできませんでした。

関連するQ&A

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

    エクセルで文字列を分割する数式を探しております。 以下のデータを 右から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関数ですと、分割というよりも 抽出になってしまい、私の求めているものとは異なってしまいます。 考えが煮詰まってしまい、これ以上進めない状態です。。。 何卒よろしくお願いいたします。

  • エクセルの文字列を抽出する関数を教えてください!

    テキストファイルから文字列をエクセルに貼りつけ、ある条件の単語のみを抽出する関数について教えてください。 (1)あらゆる文字・記号で構成されている文章のうち、” ”(二重引用符)で囲まれた中のその文字列だけを抽出するには、どのような関数があるのでしょうか。 (2)ある文章は、 (文字数はバラバラの文章).1-文章.doc、 (文字数はバラバラの文章).2-文章.doc、  ・・・ となっているテキストがあるのですが、そのテキストのうち、「数字ー」の形式は同じなのですが、その「(数字)‐」以降「.doc」までの文章のみ抽出するには、どのような関数になるのでしょうか。 マクロは組めませんので、関数で教えて頂ければ幸いです。 宜しくお願いします。

  • Excel 関数

    文字と数字(例えば111aaa)から、数字だけを抽出する関数を作ろうとしたら上手くいかず、ネット上で調べたら次のようなものが出てきました。 =LOOKUP(10^17,LEFT(A1,COLUMN($1:$1))*1) となっていました。うまく作動はするのですがどうも意味がわからないところがあります。 Q, Column($1:$1)を単独で用いると1を返します。それをLEFTの文字数に表したところで1しか表さないと思うのですが、lookupまで用いると、lookupで探している値に近くなる数字を探し、Column($1:$1)が任意に動いているような挙動をしています。これはなぜなのでしょうか?

  • 文字列から英数字のみを抽出する関数

    文字列から英数字のみを抽出する関数を教えていただきたいです。 セルの文字列にはひらがな、カタカナ、数字、アルファベット、記号等を含みます。 色々調べてはみたのですが、数字のみを抽出する関数の説明はたくさんありますが、 アルファベットも含むとなると見つかりませんでした。 数字0~9とアルファベット27個の計37個の文字なので、どうにか関数でできると思うのですが。 具体的には下記のようにしたいのです。 ●A列 今日iPhone5をauで購入 最新のNEWSを15時~PCで見る  Moonshotを生み出す「Google X」 ●B列にこう表示したいのです。 iPhone5au NEWS15PC MoonshotGoogleX スペースは残ったままでも結構です。 詳しい方、どうかよろしくお願いいたします。

  • Excelで文字列を抽出したい。

    Excelで文字列を抽出したい。 Excelで商品コード一覧を作成しました。 商品コード ABC230 DE120 ABC333 XU203 の様にアルファベット+数値で構成されています。 このアルファベットの部分のみを抜き出したいと考えています。 アルファベットの文字数はバラバラです。 何か便利な関数などありましたら、アドバイスよろしくお願いいたします。

  • エクセルで数字とアルファベットと文字列を分割する方法

    こんばんは。 エクセルのセルで数字とアルファベットの文字列を分割する方法を教えて下さい。 100AB3.4C → "100" "AB" "3.4" "C" 間にスペースやカンマなど無く、文字数は異なります。 数字は小数点がある場合と無い場合があります。(上記の "100" "3.4" のように) 同じ列に同様のデータが数件~数千件あり、まとめて分割したいです。 関数もしくはマクロ(VBA)で可能であれば教えて下さい。 最近マクロの勉強を初めたのですが、方法が思いつきません。。。 宜しくお願いします。

  • エクセルで、半角文字列を抽出するには

    使用機種はXPでEXCEL2003です。 住所のデータ整理をしています。 地名の後の番地のみ半角数字(ハイフンも半角)で入力されており、その部分だけを別の列に移動させる作業です。 関数で、半角文字列だけを抽出することはできますか? left関数を使おうとも思いましたが、文字数がバラバラなので、難しいと思いました。 私は、一つひとつコピー→ペーストをするしか思いつかないほどの初心者です。 どうぞよろしくお願いいたします。

  • エクセルの文字列操作

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

  • Excelの文字数が決まっていない文字列の抽出

    教えてください。Excelで、文字数の決まっていない文字列を抽出したいのですが、例えば、 セルA1 : プロジェクト1 簡単な文章 2352 PD_JOK セルA2 : プロジェクト13 複雑な文章列とは決まっていない 2453 AO_JKI ・・・・・・ というセルから、 プロジェクト名から、半角数字前までの文字数が決まっていない文字列「簡単な文章」や「複雑な文章~」をセルB列に抽出する方法を教えていただきたいのですが、 そして、半角数字後の半角英字「PD_JOK」をセルC列に抽出する方法も同時に教えてください。 万単位でデータがあるので、関数を使わないと難しいです。 よろしくお願い致します。

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

    プログラムを最近、始めなければならなくなった初心者です。 一行の長い文字列を指定の文字数で分割するプログラムを書かなければならないのですが。どうしても文字数がずれてしまいます。 webを参考に下記のようなプログラムを書いてみました。 Public Class Form1 Public NN As Long = 1 Dim sR As New IO.StreamReader("C:\testtex.DAT",System.Text.Encoding.GetEncoding("shift_jis")) Dim AR As String, AT As String AT = sR.ReadToEnd NN = NN + 指定文字数 AR = Strings.Mid(AT, NN, 指定文字数) TextBox1.Text = AR sR.Close() 文字列は(Shift_jis)型のようです。データの無い部分にはスペースが含まれています。これが原因かは分かりませんが  Left関数や、Mid関数を利用して分割する方法では文字数がずれてしまいます。 Textpad等のテキスト編集アプリを利用して文字数を調べたところ文字数と桁数に違いがあるようです。 文字数と桁数の違いに何かあるような気がするのですが検索してもそれらしきがみつかりません。 LenやLengthで全体の文字数を調べてみたところ全体の文字数もずれているようです。(指定文字数の倍数にならない。TextPadで調べた桁数と1違います。) .DATという拡張子ですが、送られてくるデータがDATという拡張子で送られてくるため原因かもしれないのでそのままにしています。 指定文字数ごとに分割することは可能なのでしょうか。可能であればどのような方法でもいいのでご教授ください。よろしくお願いします。

専門家に質問してみよう