• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:エクセル文字列抽出関数についての補足説明のお願い)

エクセル文字列抽出関数の使い方

keithinの回答

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

>英字と数字に分離できるかを初心者にわかりやすく教えて下さい カギになるのは,先頭から数えて「5文字目」に「最初の数字が現れる」ということです。 この5が判れば, =LEFT(A1,5-1) で前半の「aaaa」が =MID(A1,5,沢山の数字) で後半の「1111」が それぞれ取り出せます。 次のステップとして,数式の中に入ってる MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")) という部分で,今回の「5」を求めます。 これは配列数式という,通常のエクセルの参考書には出てこない計算のやり方を使いますが,やってる事自体は比較的単純です。 【step1】 A1&"0123456789" を使って「aaa11110123456789」という文字列をまず作ります。 これはいまご相談が「文字数字」の並びになってる前提で書かれてますが,現実のA1にはもしかすると「abcde」のように数字が含まれてない言葉が記入されてしまうかもしれません。その場合にもエラーになったりせず,ちゃんと「前半のabcde」です「後半はありません」という結果を計算するための細工です。 【step2】 FIND(ある文字,"aaaa11110123456789") という関数で,ある文字(たとえば「1」)が「aaaa11110123456789」の先頭から数えて何番目に現れるか計算します 今回はいきなり1がヒットして5番目に現れます 【step3】 FIND関数の「ある文字」の所に「{0,1,2,3,4,5,6,7,8,9}」という書きぶりで,0から9まで合計10個の数字をそれぞれ与える計算をさせます。これを配列計算と言います。 この段取りにより 0に対しては9が計算されます 1に対しては5が計算されます 2に対しては11が計算されます  : 9に対しては18が計算されます 以上を束ねた{9,5,11,12,13,14,15,16,17,18}という配列がFIND関数の結果になります 【step4】 MIN({9,5,11,12,13,14,15,16,17,18}) という計算で,最初の(=先頭の)5が計算されます。 以上の計算ステップは,言葉でだらだらと説明を読む代わりにエクセルの「数式の検証」という機能を使い,ご自分の目でステップを追って確認していくことができます。 ご利用のエクセルのバージョンが不明のご相談ですが,エクセル2007以降をご利用なら数式タブにあるので,実際に手を動かしていちど確認してみて下さい。

kanrekioyaji
質問者

お礼

keithin様、判りやすい解説付きで補足していただきまして、本当にありがとうございました。大変参考になりました。いただいたアドバイスを元に、「数式の検証」機能も勉強して、自分で確認できるよう頑張ります。又、初心者のためExcelのバージョンを明記するのを忘れてしまい、申し訳ありませんでした。早々の対応、本当にありがとうございました。

関連するQ&A

  • 関数で文字列と数字の組合せから数字のみを取り出す

    お世話になります。 文字列+数字から数字のみを取り出す関数はエクセル技道場などで紹介されている =MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&1234567890)),LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},))))で可能ですが、たとえばSSPAS2.5などのように小数点を含む数字の場合結果は2.となります。正しい結果を得るためにはどのような関数を使えばいいのでしょうか。数字には整数、少数点を含むものが混在しているとします。 どなたかよろしくお願いします。

  • エクセルで文字列を抽出する関数

    エクセルでデータ処理をしています。 例えばA列に Iwate kenichi Akita hachiro gata (1992) Yamagata shi,1905 というデータがあり、同じ関数を使ってそれぞれB列に Iwate kenichi Akita hachiro gata Yamagata shi と抽出したいので、 =IF(FIND("(",A1),LEFT(A1,FIND("(",A1)-1),IF(FIND(",",A1),LEFT(A1,FIND(",",A1)-1),A1))という式を作ってみましたが、うまく処理できません。 どのような式を作れば上手くいきますか?マクロは使えませんので、関数でお願い致します。

  • このエクセルの複雑な関数を訳してください!

    こんにちは。 これから年賀状の季節ということで、エクセルでリストを作成し、印刷にまでこぎつけたいと思うのですが、「(株)や(有)を除いた会社名順に並び替えたい」と考えております。 そこで、こちらのOkwebで検索したところ、下記のような式がアドバイスされていました。とてもありがたいです。 ただ、こちらをそのまま使わせていただいてもかまわないのですが、式に興味を持ち、自分で辞書をひいて調べたところ、構造が理解できませんでした。 そこで、どなたかこちらのエクセルの式を訳していただけないでしょうか。 =CONCATENATE(LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1),MID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1,LEN(PHONETIC(A2)))) CONCATENATE関数で、LEFT関数・MID関数・LEN関数で出したものを結合する? ・LEFT(PHONETIC(A2),FIND("(",PHONETIC(A2),1)-1) ・MID(PHONETIC(A2),FIND(")",PHONETIC(A2),1)+1 ・LEN(PHONETIC(A2) このようにわけられるものでしょうか。 アドバイス、よろしくお願いします!

  • スペースを含んだ文字列から文字列の抽出

    エクセルバージョン2007 スペースを含む文字列で、A列に文字列がある時、以下の式を組んで文字列を抽出しています。 先頭にIDの数字が有る場合は、それぞれの目的に合った文字列を抽出しています。 B1=LEFT(A1,SEARCH(" ",A1,1)-1) C1=LEFT(MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),SEARCH(" ",MID(A1,SEARCH(" ",A1,1)+1,LEN(A1)-SEARCH(" ",A1,1)),1)-1) 3 3df-32654-10 CCCCHH 10 1ab-12345-00 AAABBBB この文字列の場合、B列に3と10が表示、C列に 3df-32654-10 1ab-12345-00が表示されます。 先頭に、IDの無い文字列は以下の様な構成です。 6rt-95132-00 PPPKKK この文字列の場合、B列に6rt-95132-00、C列にPPPKKKが表示されてしまい、この場合、IDの数字が無い場合はB列には表示させない又は、C列に6rt-95132-00させたいと思っています。 ご教授頂ければ幸いです。 以上、宜しくお願い致します。

  • Excelの抽出方法について

    Excel2003において、英字のみと数字のみを抽出する方法を教えてください!(出来れば関数のみとVBAの両方) A列にはaaaa1111のように英字+数字のパターンで500行ほどあり、 英字の文字数は決まっておらず、数字は3字か4字のどちらかになります。 B列に英字のみ、C列に数字のみの結果を出したいです。 ご教授の程よろしくお願いします。

  • エクセルの文字列・数値【長文です】

    昨日、LEFT関数の使い方を教えていただきましたが、これですとLEFT関数を用いたところが【文字列】として認識されました。【数値】として認識させる方法を教えてください。 初心者で申し訳ございません。 昨日の質問・いただいた回答は以下の通りでした。 ≪質問≫ [123456/あいうえお/abc][234567/かきくけこ/efg]のようなデータがいくつかあって(例えばA列に)、B列に[123456][234567]、C列に[あいうえお][かきくけこ]、D列に[abc][efg]と表記できるような【関数】を教えてください。 ≪いただいた回答≫ A1にデータがあったとして。 B列 =LEFT(A1,SEARCH("/",A1,1)-1) C列 =LEFT(RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)),SEARCH("/",RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)),1)-1) D列 =RIGHT(RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)),LEN(RIGHT(A1,LEN(A1)-SEARCH("/",A1,1)))-SEARCH("/",RIGHT(A1,LEN(A1)-SEARCH("/",A1,1))))

  • Excel関数 文字分割

    A列               関数の結果求めたい値 AAAA BBBB(半角スペース区切)     AAAA AAAA BBBB(全角スペース区切)    AAAA AAAA/BBBB(半角/区切)        AAAA AAAA/BBBB (全角/区切)       AAAA =LEFT(A1,FIND(" ",SUBSTITUTE(A1," "," "))-1) =LEFT(A1,FIND("/",SUBSTITUTE(A1,"/","/"))-1) Excelの関数で一回の関数で上記二つの関数を使用して 区切文字複数を考慮して文字分割したいのですが、 どのように実施すればよいかご教授ねがえますでしょうか? IF文を使うのかもしれないとは思いいろいろと試したのですが うまく出来ない為質問させて頂いたおります。

  • 文字列を取り出す

    A列に[ No.××× ] あああああ・・・と入力されています。 毎回入力される行数が違います(100~300行) B列にNo.×××という文字列だけ取り出すために下記の関数が入っているのですが A列に入力のあった分だけをマクロで処理できませんか。 =LEFT(RIGHT(A2,LEN(A2)-FIND("[ No",A2,1)),8) 現在は300行目までこの関数が入った状態で、エクセルが重い気がします。

  • エクセル 文字列の日付を日付書式に変換

    文章の中に混じっている日付を切り出しました。しかし書式を変更しても日付になってくれません。そこでこれをDate関数で日付化しようとしたのですが、”日”の部分が切り取れません。 例 1/1/2001 1/10/2001 12/29/2001 このように桁がバラバラなので、Left,Right,Mid関数とDate関数に組み込んでみましたが、日の部分を指定する方法がわかりません。 =DATE(RIGHT(A1,4),MID(A1,FIND("/",A1)+1,????) ????に何を入れたらいいでしょうか。

  • エクセル関数、文字列の抽出

    A1セルの中にたとえば「コーヒー、お茶、紅茶、コーラ、ビール、ワイン」と有るとします。B1にビールとワイン、C1にコーヒー、紅茶と抽出したいのですが、どなたかご存知の方ぜひ教えてください。MID関数とかFIND関数とかを試したのですがうまくいきませんでした。宜しくお願いします。