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

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

bunjiiの回答

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

>以下の式で、関数の書式や目的は調べることが出来ますが、なぜそう言う処理を行うと、英字と数字に分離できるかを初心者にわかりやすく教えて下さい。 初心者には難しいと思います。 >A1に「aaaa1111」があるとき 英字が4文字で5文字目から数字が並んでいることは人間の目で一瞬の読み取れます。 これはアナログ的に判断しています。 コンピューターはデジタル式に順番に比較しなければなりません。 そのためには手順が正しくないとエラーになって目的を達成できません。 英字と数字の境目をどのように判断するかを論理立てしなければなりません。 数字は0~9の10種類であるのでA1の文字列に0~9の文字が何番目に有るかを拾い出します。 この時に1つでも見つからない文字があるとエラーになって以後の処理を止めてしまいます。 A1に数字は1のみなのでエラーを起こさないために"0123456789"を後ろに追加してエラーを防止します。 A1&"012345679" → "aaaa11110123456789" 前提条件が分からないときを考慮してA1&"0123456789"を検索対象にしていると思います。 >B1に =LEFT(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789"))-1) 数式は()の内側から順に評価されることはご存知と思いますので順番に説明します。 FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789") → {9,5,11,12,13,14,15,16,17,18} FIND関数の第1引数の文字列を第2引数の中から探して最初に見つかった位置を返します。 例題の第1引数は{}で括られた10個の文字であり複数の返り値があります。 評価は並び順で0、1、2、・・・・の順に見つかった位置を羅列します。 MIN({9,5,11,12,13,14,15,16,17,18})) → 5 FIND関数の返り値(配列)から最小の値を返します。 LEFT(A1,5-1) → "aaaa" MIN関数の返り値(5)を利用してA1の文字列から左側の4文字を切り出します。 >C1に =MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&"0123456789")),LEN(A1)) B1の処理に準じて処理されます。 MID関数は第1引数の文字列(A1)の指定文字位置(第2引数)から指定文字数(第3引数)を切り出します。 第3引数は過大の値を指定したとき最後の文字までを返します。 用語が理解できないときは補足してください。

kanrekioyaji
質問者

お礼

bunjii様、回答いただきましてありがとうございました。初心者にも判りやすい説明をしていただきまして本当にありがとうございました。お陰様で、理解できました。

関連する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関数とかを試したのですがうまくいきませんでした。宜しくお願いします。