2番目の文字列を取り出す処理と違うのは「、」で囲まれている状態を作りた出すためです。, こちらもIFERRORが2つあるのは「、」で囲まれた文字列である必要があるためです。 Youtube | 公式サイト | twitter | 著作権 | 運営者情報 | お問い合わせ, 【Excel】LEFT関数、RIGHT関数、MID関数で文字列を抽出する方法の基本例題, 【Excel】INTやMOD関数を用いて数値の一部を取り出す整数問題と関数の過去問(ITパスポート表計算Part3), 【Excel関数】LEFT・RIGHT・MIDとIF・VLOOKUPを組み合わせた応用事例と注意点, https://www.waenavi.com/entry/20191025/1571967736, 【基本情報】2019秋期基本情報技術者試験の表計算をExcel&VBAで完全再現してみた!, 【書評】Excel関数を独学で勉強するための関数解説本おすすめランキングBEST9で打線を組む, 【書評】WordやExcel文書のデザイン改善に役立つ本おすすめランキングBEST9, 【VBA】Excelマクロ資格「VBAエキスパート試験」独学するなら公式テキストで勉強しよう. Excelのセルに入力された文字列から、その一部分だけを取り出すには、LEFT関数、RIGHT関数、MID関数を使います。LEFTは左からの文字数を指定し、RIGHTは右からの文字数を指定します。MIDは途中の文字を取り出します。さらに、これら3つの関数を組み合わせることによって、文字を分割したり挿入したり判定をしたりすることができます。, これらの関数は、MOSの試験では一般レベルで出題され、文字列操作の基本的な関数に位置付けられています。そこで、今回はLEFT関数、RIGHT関数、MID関数の基本的な使い方と注意点について出題します。, 幹部社員の中から16名を選抜して名簿を作成した。役職の先頭から3文字を取り出しなさい。また、アカウントの頭文字を取り出しなさい。, 文字列の先頭(左)から数えて指定された文字数分だけ取り出す関数は、LEFT関数です。文字列と取り出す文字数を指定します。例えば、「総務部長」の先頭3文字は「総務部」ですが、LEFT関数で表すと「LEFT("総務部長",3)」となります。, セルA2の文字列の先頭から3文字を取り出します。「=left(a2,3)」と入力します。, 頭文字は左から数えて1文字という意味です。「=left(b2,1)」と入力します。, LEFT関数の第2引数(文字数)を省略することができます。省略すると、「1」を指定したものとみなされます。つまり、頭文字の取得となります。, 役職の右から2文字を取り出しなさい。また、アカウントの数値の部分を取り出しなさい。, 文字列の末尾(右)から数えて指定された文字数分だけ取り出す関数は、RIGHT関数です。文字列と取り出す文字数を指定します。例えば、「総務部長」の右の2文字は「部長」ですが、RIGHT関数で表すと「RIGHT("総務部長",2)」となります。, LEFT関数とRIGHT関数の違いは、LEFTは左から取り出すのに対し、RIGHTは文字列の右から数えて取り出すことです。それ以外は同じです。, セルA2の文字列の末尾から2文字を取り出します。「=right(a2,2)」と入力します。, ちなみに「=RIGHT(B2)」とすると下1桁だけになります。文字数を指定しなければ1文字だけ取得します。, アカウントの数値4桁を取り出し、最初の2文字と後の2文字の間にスラッシュを入れなさい。, LEFT関数またはRIGHT関数で取り出した文字列を使って、さらにその一部分を取り出すこともできます。最初の2文字を取り出します。「=LEFT(B2,2)」と入力します。, さらに、スラッシュを連結するとともに「RIGHT(B2,2)」を連結します。「=LEFT(B2,2)&"/"&RIGHT(B2,2)」となります。左の2文字とスラッシュと右の2文字の計5文字の文字列となります。, このようにLEFT関数またはRIGHT関数で取り出した文字列を&で連結することによって新たな文字列を作り出すこともできます(参考:【Excel】文字列結合、スペース・改行・ダブルクォーテーションの連結)。, セルA1に入力した文字列について、B列に入力した文字数だけ文字列を抽出したい。LEFT、RIGHT関数でそれぞれ取り出しなさい。, LEFT関数、RIGHT関数はともに、取り出す文字列と文字数を指定します。LEFT関数でセルA1は絶対参照、セルB2は相対参照です。, 元の文字数が4文字で、4文字以上の文字数を指定すると元の文字列と同じになります。このように元の文字列以上の文字数を指定した場合、文字列全体が返されます。, 左から10文字目までを取得しますが、元の文字列が9文字以下の場合は元の文字列と同じになります。LEFT関数やRIGHT関数は、指定した文字数までを取得しますが、指定文字数以下の場合はその文字数までとなります。したがって、文字数を指定したからと言って、必ずしも文字数が揃うとは限りません。, 游ゴシックやフォント名に「P」のつくフォント(プロポーショナルフォントという)は文字によって幅が異なるため、文字が縦に揃いません。そのため、文字数が数えにくいことがあります。RIGHT関数やLEFT関数のように文字数を指定する関数を練習するときには、「MSゴシック」など文字幅が統一されたフォント(等幅フォントという)を使用します。, A列の文字列のうち、数値の部分だけを取り出しなさい。ただし、数値の最初が0の場合は3桁で表示しなさい。, 数値の部分だけを取り出します。「=RIGHT(A2,4)」です。すべて4桁になります。, Excelでは通常、数値の先頭が0の場合は自動変換機能によって0が省略され3桁の数値になります。しかし、LEFT関数やRIGHT関数を使った場合、先頭の0は消えません。しかも左揃えのままです。これは数値ではなく、文字列として認識されているからです。これを「数字文字列」ということがあります。, RIGHT関数に1を掛けます。「=RIGHT(A2,4)*1」となります。これによって文字列と認識されたものが数値に変換され、先頭の0が消えるのと同時に右揃えになります。, いっぱんに、Excelで文字列として認識されている数値文字列について、その直前又は直後に四則演算(足し算引き算掛け算割り算)があれば数値化されます。次のような演算をして数値化をします。, この先頭の9文字を取り出します。「=LEFT(A2&"*********",9)」と入力します。これによって10文字目以降のアスタリスクが消えるため、結果としてアスタリスクで埋めたことになります。, 特定の文字列で右側を埋めることによって文字数を揃えるには、右側に多めに文字を連結してから、LEFT関数で余分な文字列を削除します。, 社員番号は3桁か4桁ですが、5桁にするためには最大で2桁足りません。そこで、左側に0を2つ連結します。, 右の5文字を取り出します。「=RIGHT("00"&B2,5)」と入力します。これで5桁になります。, 特定の文字列で左側を埋めることによって文字数を揃えるには、左側に多めに文字を連結してから、RIGHT関数で余分な文字列を削除します。ちなみに、先頭に0を付けて桁数を揃えることをゼロ埋め(ゼロパディング)と言います。, A列に数値を入力した。LEFT関数で左から5文字を取り出した場合、表示形式を変えることができるか。また、LEFT関数で取り出した直後の文字列と、数値化したものは同じ値と言えるか。, 数値の場合もLEFT関数やRIGHT関数が使えます。通常は、LEFTは上から、RIGHTは下からの桁を取り出すことができます。, ただし、小数点やマイナスも1文字に含まれますので、小数点やマイナスがある場合、左から5文字を取り出しても、上から5桁になるわけではありません。必ず文字数で指示した通りの有効桁数になるわけではないので注意が必要です。, このとき、取り出した値は「文字列」であって数値ではありません。したがって、表示形式を変えることができません。カンマ桁区切りにすることはできませんし、通貨スタイル(円マーク)にすることもできません。, 文字列と数値を比較します(参考:【Excel】IF関数が使えない原因は「比較演算」の練習不足である)。すべてFALSEになります。, Excelでは、LEFT関数やRIGHT関数で取り出した直後の文字列と、数値化したものは異なるものとして扱われます。, A列にカンマ桁区切りの数値「98,765」と表示されている。RIGHT関数で右から4文字を取り出したところ、一方は「8765」となり、もう一方は「4321」となった。このようになる原因を述べなさい。, 3桁ごとに区切られるカンマは入力したものではなく書式(表示形式)です。表示形式によって表示されている文字は、LEFT関数やRIGHT関数で取り出すときの文字数には含まれません。このセルに保存されている値(数式バーの値)は「98765」であり、左の4文字は「9876」です。, 「=987654321/10000」という数式が入力されています。計算結果は「98765.4321」で、整数値の表示になっているだけです。左の4文字は「4321」です。数式の場合は特に注意が必要です。, このように、表示形式の影響でセルに保存されている値と表示されているものが異なることがありますが、セルに表示されているものは無関係です。LEFT関数やRIGHT関数は、保存されている値(数式バーの値)から取り出されます。, 日付を8桁で入力したセルがあり、LEFT関数を用いて左側の4文字を取り出すことによって西暦の部分を取り出すことができた。そこで、日付を入力したセルも同様にLEFT関数を用いたところ、西暦とは無関係の数値になった。このようになる原因を述べなさい。, 日付を8桁で入力している場合は単なる8桁の数値であり、LEFT関数を使うこともできます。しかし、日付がシリアル値として入力されている場合、セルに保存されているのは整数値のシリアル値です(参考:【Excel】日付の「シリアル値」を本気で理解するには何を練習するべきか?)。2020年11月23日のシリアル値は44158ですから、その左4文字である4415が取り出されます。, 日付(時刻)の場合は、YEARなどの日付(時刻)を処理する関数を用いるか、またはTEXT関数を用いるべきであり、LEFTやRIGHTを使ってはいけません。, A列の文字列は、英字1文字+数字4文字+英字10文字以内で構成されるコードである。2文字目から5文字目までを取り出しなさい。また、6文字目だけを取り出しなさい。, 文字列の途中から数えて指定された文字数分だけ取り出す関数は、MID関数です。文字列と、開始位置、取り出す文字数の3つを指定します。, 例えば、「y1017oshima」の2~5文字目は「1017」ですが、MID関数で表すと「MID("y1017oshima",2,4)」となります。MID関数は途中から数えるので、数え始める場所(開始位置)を指定しなければなりません。先頭の文字を1としますので、開始位置は2となります。, 取り出す文字数は全部で4文字となりますので文字数=4です(5ではないことに注意!!)。, セルA2の文字列の左から数えて2文字目から開始して、4文字となるように取り出します。「=mid(a2,2,4)」と入力します。, 6文字目だけを取り出す場合、文字数は1です。「=MID(A2,6,1)」と入力します。, LEFT関数やRIGHT関数とは異なり、MID関数の第3引数(文字数)を省略することはできません。1文字だけ取得するには必ず「1」を指定しなければなりません。, A列の文字列は15字以内であることが分かっている。2文字目以降をすべて取り出しなさい。, MID関数の取り出す文字数を100文字にしてみましょう。「=MID(a2,2,100)」と入力します。2文字目から100文字取り出すという意味です。しかし、A列の文字列は100文字も無いので文字列の最後まで表示されます。, MID関数で十分に大きい文字数を指定すれば、文字列の最後まで取得することができます。したがって、MID関数で文字数を指定したからといって、取り出される文字列の文字数が必ずしも揃うとは限りません。, 文字列の途中に何らかの記号を入れるには、その前後で分割しなければなりません。例えば、「m0311-shinoda」とハイフンを入れる場合、「m0311」「shinoda」をそれぞれ取り出すことを考えます。左の5文字は「LEFT(A2,5)」です。6文字目以降は「MID(A2,6,10)」と10文字くらい指定しておけばよいでしょう。, これらを&で連結します。「=LEFT(A2,5)&"-"&MID(A2,6,10)」となります。, A列の文字列は、ひらがな1文字、数字4桁、ハイフン、漢字の順に並んでいる。この順序を変えて、漢字、ハイフン、ひらがな、ハイフン、数字の順にしなさい。例えば「お1017-栃木」の場合は「栃木-お-1017」とする。, MID関数は全角も半角も1文字とカウントして取り出します。ひらがなは先頭の1文字なので「=LEFT(A2)」です(文字数省略可能)。数字は2文字目~5文字目なので「=MID(A2,2,4)」です。漢字は7文字目以降なので「=MID(a2,7,3)」となります。漢字は2文字と3文字がありますが3を指定すればよいです。, 「徳川家康」の3文字目以降の文字を取り出したい。文字数を-1~5として取り出しなさい。, 8桁で入力された数値を4桁、2桁、2桁に分離しなさい。また、MID関数で取り出した文字列を数値に変換しなさい。, 次の2桁はMID関数です。5文字目から2桁を取り出すので「=MID(A1,5,2)」です。, MID関数は、LEFT関数やRIGHT関数と同じように取り出した答えは「文字列」です。数値ではありませんので先頭に0がついたままです。また、左揃えになります。これを数値化するには1をかけます。これで数値となり、先頭の0が消えて右揃えになります。, MID関数は途中の文字列を抽出する関数であり、文字数を1にすると1文字だけ取得することができます。これを利用して先頭から1文字ずつ抽出してみましょう。, これによって、1文字ずつ分割することができます。カンマやスペースも1文字としてカウントされます。, また、「織田 信長」に8文字目は存在しませんが、開始位置として指定した数値が全体の文字数を超える場合は空白になります。, A列の文字列は10文字なので、開始位置を11にすると取得できる文字が無いので空白になります。, (1)十二支は「子丑寅卯辰巳午未申酉戌亥」の順なので、申年(さるどし)から始めると「申酉戌亥子丑寅卯辰巳午未」になる。この文字列を1文字ずつ分割しなさい。, (2)西暦が12の倍数のとき申年であることが分かっている。西暦から十二支を求めなさい。, 「=MID("申酉戌亥子丑寅卯辰巳午未",A1,1)」と入力すると、1文字ずつ分割することができます。これは1~12の整数を十二支に変換したのと同じです。, 西暦を12で割ったときの余りを求めます(参考:【Excel】INTやMOD関数を用いて数値の一部を取り出す整数問題と関数の過去問(ITパスポート表計算Part3))。, これに1を足すと1~12となります。「余り+1」と十二支の順番は一致するので、1~12の整数を「申酉戌亥子丑寅卯辰巳午未」に変換すればよいです。, MID関数で変換します。「=MID("申酉戌亥子丑寅卯辰巳午未",F2,1)」と入力します。これで西暦を十二支に変換できます。, 1つの数式にすると「=MID("申酉戌亥子丑寅卯辰巳午未",MOD(E1,12)+1,1)」となります。, いっぱんに、整数値をABCABCABC・・・のように循環する文字列に変換するにはMID関数を使います。この場合、文字数は「MOD+1」とします。, なお、MID関数の開始位置を0にするとエラーになりますので、0にならないように注意します。, A列に得点を入力した。90点以上、80点以上、70点以上、60点以上、59点以下を、それぞれS、A、B、C、Dとしなさい。, 「=MID("DDDDDDCBASS",B2,1)」と入力します。これでアルファベットになります。, これを1つの式にすると、「=MID("DDDDDDCBASS",INT(A2/10)+1,1)」となります。, いっぱんに、数値をAAABBBCCC・・・のように一定の範囲で区切って文字列に変換するにはMID関数を使います。この場合、文字数は「INT+1」となります。, INT関数を無くして、「=MID("DDDDDDCBASS",A2/10+1,1)」としてもかまいません。, LEFT、RIGHT、MID関数で指定する文字数や、MID関数の開始位置で指定する数値が小数の場合は、自動的に小数点以下切り捨ての整数値となります。したがって、INT関数で切り捨て処理をする必要はありません。, Youtube わえなびチャンネルhttps://www.youtube.com/c/waenavijp, Copyright(C)2018-2020 waenavi, All rights reserved. Home » Excel(エクセル)の関数・数式の使い方 » 文字列 » 文字列を1文字ずつに分解する−MID関数・COLUMN関数 『インストラクターのネタ帳』は2003年10月から、Microsoft Officeの使い方などを紹介し続け(2012年頃からはVBA関連記事が多め)、毎日5万人の方にご覧いただいています。 (adsbygoogle = window.adsbygoogle || []).push({}); 情報処理技術者(DB,SU) エクセル挑戦問題 2019年にOffice365のExcelに実装された革新的な機能としてスピルがあります。スピルを上手に使うと、今まで多くの作業列を使う必要があったものが、かなり簡略化された数式で実現することができます。スピルの詳細については、以下を参照してください。 もちろん、スペースなどの他の文字でも反応します。 基本的にMicrosoft 365はデスクトップ版、LibreOfficeは記事作成時の安定バージョンを用いた結果を示しています。 Excelの作業をするときに、何かで区切られたデータを分割する方法は意外と知られていません。 なので、ちょっとしたやり方を幾つかまとめてみました。 Excelの基本機能と、ついでに関数での処理方法も作ってあります。 B2セルに対象となる文字列が記録されています。 問題. 昔からある機能なのですが、知らないとは怖いものですね。。。, まず最初に「、」で区切られる最初の文字列を取り出します。 姓は、左から1文字目 (b) で始まり、6文字目 (最初のスペース) で終わります。 ですが、何か細かい事をやる時に役に立つこともあると思いますので、見聞を広げる程度にどうぞ。, 手順としては「一番左の文字列を取り出す」「左から2番目の文字列を取り出す」「文字列を検索して、その隣の文字列を吐き出す」の3つの処理を行います。, 上記に書いた「Excelの基本機能」を知らなかった時に、頑張って作っていたので、ついでに書いておくだけです。 a列の文字列を、1文字ずつ分割してb列以降に表示しなさい。 解説. 初心者向けにJavaScriptで文字列を1文字ずつ分割して配列に入れる方法について解説しています。ここではsplitメソッドを使う方法とスプレッド構文を使う方法を説明します。それぞれの書き方を覚えま … 他のデータと混同した場合に、そのままコピー&ペーストを行うと関数のエラーが出ることがあります。 [www.waenavi.com 定礎 平成三十年八月] 例で良いデータとして国土交通省のデータがありましたので、こちらを使ってサンプルを作ってみます。, https://www.mlit.go.jp/road/sign/sign/annai/6-hyou-timei.htm, このように「、」で区切られたデータが入っています。 区切り位置はバラバラで規則性はありません。, 念のため、データ整理も兼ねて新しいブックに貼り付けます。 mid関数は途中の文字列を抽出する関数であり、文字数を1にすると1文字だけ取得することができます。 エラーが起きた場合に一度通常のMID、FINDの処理を行うのは「、」の2つ目が無かった時にエラーになってしまうからです。, 2つ目の「左から2番目の文字列を取り出す」処理で完成しそうな雰囲気がありますが、残念ながら「南さつま」「さつま」のような文字列があると、繰り返しが起きてしまうのです。, 2番目の文字列同様に前の文字列を探し出し処理をします。 今回は関数が入っていませんが、ダウンロードしたデータなので、何もしていないExcelブックだと、保護ビューになってしまうのも理由です。, その後、区切り位置を指定して別のセルに分ける手順としては いつもお世話になります。 エクセルの1セルに、13ケタの商品コードがあります。 これを、別シートのフォーマットにある、13コのセルに1字ずつに分割したいのです。 なので、ちょっとしたやり方を幾つかまとめてみました。 このページは、自動翻訳によって翻訳されているため、文章校正のエラーや不正確な情報が含まれている可能性があります。 私たちの目的は、このコンテンツがお客様の役に立つようにすることです。 情報が役に立ったかどうか、ご意見をお寄せください。 参考までに、こちらから英語の記事をお読みいただけます。.  いわゆるExcel方眼紙に文字列を展開することが可能となります。, SEQUENCE関数の第1引数(行数)を「ROUNDUP(LEN(B2)/5,0)」、第2引数(列数)を「5」としています。 文字列の中にある不要な情報を、Mid関数とLen関数を使って一気に削除するサンプルコードです。, 集計業務をする中で、文字列の中から「任意の長さの文字列を抽出したい」、あるいは「任意の長さの文字列を削除したい」ということがありますよね。今回はそれらの文字列処理を実現するVBAコードのうち、Mid関数とLen関数の基本的な使い方を紹介します。, 経験上、任意の文字列を取得するためにMid関数とLen関数を組み合わせて使うことが多いです。ですので、今回は1つの記事でまとめて詳しくお話しします。, では今回のサンプルファイルになります。 サンプルシートの内容は、いつものSampleシートを少しアレンジしたものです。, 今回の目的は、VBAで仕入担当のデータから余計な補足データ「(6/21休暇予定)」を取り除くことです。, ここで注目して欲しいのは、仕入担当欄の中に「沖」、「長谷川」という2文字以外の苗字を持つ新しい担当者を入れたことです。 Left関数で紹介したときは、仕入担当は全員2文字でしたので、Left関数を使って簡単に処理できましたよね。, ところが、今回はLeft関数を使って先頭から2文字を取得する手法は使えません。そこでMid関数とLen関数を使います。, Mid関数とLen関数を使えば、苗字の文字長さに関係なく、すべての不要な補足情報を削除できます。, では、VBAを実行してみてください。上手くいけば、「仕入担当」列の鈴木さんの横にある補足情報がすべて消えるはずです。, 今回のVBAコードの処理内容ですが、まず全てのレコードの「仕入担当」データを先頭から1文字ずつ取り出します。そして、補足情報の始まりの文字「(」が出たら繰り返し処理を中断しループを抜けます。, その1文字ずつ取り出すために、Len関数とMid関数を使います。ではVBAコードのお話しです。, 8行目:Dim strSelf As Stringループ処理により1文字ずつ取り出された「仕入担当」データの格納先変数になります。, 12行目:Dim i As Integer「仕入担当」データを1文字ずつ取り出すために、「仕入担当」データの文字長さ分だけ繰り返し処理する必要があります。そのルーチン処理に使う変数です。, 23行目:strSelf = ""各レコードの処理を始める前に、変数の初期化のために実行されるVBAコードです。この後のVBAコードで「仕入担当」データの先頭文字から1文字ずつ取り出して、変数「strSelf」に格納します。, 26行目:For i = 1 To Len(.Cells(r, 5)) ~ Next i1レコードに対する繰り返し処理になります。iは「仕入担当」データの何文字目を処理しているのかを格納する変数です。では初登場のLen関数について、次図で詳しくお話しします。, Len関数の使い方は、()内に処理対象の文字列を入れるだけです。そしてLen関数は「数値」を戻り値として返します。よって、For ~ Next i で繰り返す回数は、上の例では「沖」の場合は1回、「長谷川」の場合は3回となります。, ここで補足です。今回のFor文「For ~ Next i 」のNextの次にループ処理用に宣言した「i」をつけています。, For文の正式な書き方になるのですが、省略もできます。今回は、For文がネスティング(入れ子状態)しているので、あえて書きました。, 28行目:If Mid(.Cells(r, 5), i, 1) = "(" ThenIfの条件文になります。左辺が右辺「(」と等しい場合は、Then以下のVBAコードを実行することになります。左辺には今回初登場のMid関数がありますので、次図で詳しくお話しします。, 今回は、Mid関数を使って「仕入担当」データの左から1文字ずつ取り出し、それが「(」と等しいか(True)、異なるか(False)を順次比較しています。, 30行目:Exit For28行目の条件式でTrue、すなわち「仕入担当」データからMid関数で取り出した1文字が、「(」に等しい場合に実行されるVBAコードです。, 「Exit For」は、英語の他動詞「~抜ける、終了させる」の意味そのもので、目的語を「For」に取りますので「For文を抜ける」とも解釈できます。つまり、実行中のFor文を中断し処理を抜けることになります。, 繰り返しになりますが、実行中のFor~Nextによる繰り返し処理を中断し、「Next以降に抜ける」というVBAコードです。この例では、抜ける先は38行目「Next i」の次の行になります。, 32行目:Else28行目のIf文の条件式でFalse(「(」と異なる)の場合に、Else以降が実行されます。Elseの使い方については、 「VBAコードの分岐条件(IF文) 」の記事でもご紹介しております。, 35行目:strSelf = strSelf & Mid(.Cells(r, 5), i, 1)直前の32行目の条件が成立した際に実行されるVBAコードになります。「Mid(.cells(r, 5), i, 1)」は前述の通り、「仕入担当」データの1文字分の文字列データです。, 取り出した1文字分の文字列を、変数「strSelf」とつなげて、それを変数「strSelf」へ代入しています。ちょっと分かりずらいかもしれないので、次図でお話ししますね。, 「仕入担当」データが、"長谷川"のときの例でお話ししてみますね。i=1のとき、右辺の「strSelf」は、VBAコード23行目によって初期値「""(長さ0の文字列)」になってます。, その初期値「""」とMid関数で取り出された"長"の文字列を「&(アンバサンド)」でつないで、それを左辺「strSelf」に代入しています。よって、i=1の処理終了時点では「strSelf」は"長"になります。, 次のi=2のとき、右辺の変数「strSelf」にはi=1の処理後の値”長"が入ってます。それにMid関数で取り出された"谷"の文字をつなげると、右辺は"長谷"になりこれが左辺「strSelf」に代入されます。, よって、i=2の終了時点では変数「strSelf」には"長谷"が入ったことになります。以下i=3の場合も考え方は同じですので、図をみながら確認してみてくださいね。, 40行目:.Cells(r, 5) = strSelf直前のFor ~ Next iによって、1レコード分の「仕入担当」データの抽出が完了しました。変数「strSelf」には抽出された「仕入担当」のデータが入ってますので、その抽出結果を「仕入担当」のセル.Cells(r, 5)に戻します。, ポイントは、28行目のMid関数で「仕入担当」の文字列を1文字ずつ取り出し確認しながら、目的の「(」を探していることです。, そして、「(」が見つかったときに変数「strSelf」に格納するループ処理を中断し、それまでの変数「strSelf」に格納されたデータを「仕入担当」欄に戻しています。結果的に、「(」以降の文字が削除されたことになります。, 今回のサンプルシートは、仕入担当の苗字が1~3文字とばらつきがありましたが、Mid関数とLen関数を使って()付の不要な情報をきれいに削除できました。今回紹介した基本的な使用例をベースに、さらに複雑な文字列に対しても、For文とIf文の工夫次第で、さまざまな要件に対する文字列処理が可能になります。.