PartU  攻略 文字列操作関数とその組み合わせ!

関数あらかると

 文字列を分割する、結合する、置換する。 結構頭を捻って関数式を並べる時があります。
タイトルの「攻略」の文字通りの内容か否かは閲覧する皆さんの判断にゆだねることにしてWebMambowの一方的解釈での使い方一例を記述します。 使い方例は、Excelシートにコピッペすると「キッチシ」確認することができます。


 文字列操作関数の関数式
関数式 =LEN(文字列)  or  =LENB(文字列)
  • LEN 関数は、文字列の文字数を返します。
    LENB 関数は、文字列のバイト数を返します。半角文字は 1 バイト、全角文字は 2 バイトとなります。

    バイト: 本職以外の稼ぎ仕事・・・・?@@?   アルバイトの略ではありません。 ここ を参照ください。

関数式 =LEFT(文字列,文字数)   or   =LEFTB(文字列,バイト数)
  • LEFT 関数は、文字列の先頭から指定された数の文字を返します。
    LEFTB 関数は、文字列の先頭から指定されたバイト数の文字を返します。半角文字は 1 バイト、全角文字は 2 バイトとなります。

関数式 =RIGHT(文字列,文字数)   or   =RIGHTB(文字列,バイト数)
  • RIGHT 関数は、文字列の末尾 (右端) から指定された文字数の文字を返します。
    RIGHTB 関数は、文字列の末尾 (右端) から指定されたバイト数の文字を返します。半角文字は 1 バイト、全角文字は 2 バイトとなります。

関数式 =MID(文字列,開始位置,文字数)  or  =MIDB(文字列,開始位置,バイト数)
  • MID 関数は、文字列の任意の位置から指定された文字数の文字を返します。MID 関数では、半角と全角の区別なく 1 文字を 1 として処理が行われます。
    MIDB 関数は、文字列の任意の位置から指定されたバイト数の文字を返します。半角文字は 1 バイト、全角文字は 2 バイトとなります。

関数式 =FIND(検索文字列,対象,開始位置)  or  =FINDB(検索文字列,対象,開始位置)
  • 指定された文字列 (検索文字列) を他の文字列 (対象) の中で検索し、その文字列が他の文字列内で最初に現れる位置を左端から数え、その番号を返します。SEARCH 関数と同じような働きをしますが、FIND 関数では英字の大文字と小文字を区別できる代わりに、ワイルドカード文字を使用することができません。

    ◆Excelで使えるワールドカード
    入力する文字列 検索対象
    ? (疑問符) 任意の 1 文字  
    * (アスタリスク) 任意の数の文字
    ~ (チルダ) 疑問符やアスタリスクを検索文字とする場合にその文字の前にチルダを指定します。

関数式 =SEARCH(検索文字列,対象,開始位置)  or  =SEARCHB(検索文字列,対象,開始位置)
  • 開始位置を先頭にして、指定された文字列 (検索文字列) をほかの文字列 (対象) の中で検索し、その文字列が最初に現れる位置の文字番号を返します。SEARCH 関数を使用すると、ある文字列に含まれる特定の文字列の位置を調べることができ、さらに MID 関数や REPLACE 関数と組み合わせて、その文字列を置き換えることができます。SEARCH 関数では、半角と全角の区別なく 1 文字を 1 として処理が行われます。

  ● 使い方例
 
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
A
サンプル文字列
1234WebMambow
 
○文字列の桁数を取得
=LEN(A2)
=LENB(A2)
 
○左側から6文字を抽出
=LEFT(A2,6)
=LEFTB(A2,6)
 
○右側から6文字を抽出
=RIGHT(A2,6)
=RIGHTB(A2,6)
 
○先頭から3文字目以降6文字を抽出
=MID(A2,3,6)
=MIDB(A2,3,6)
 
○文字列mを検索してのその位置を取得
=FIND("m",A2,1)
=FINDB("m",A2,1)
 
=SEARCH("m",A2,1)
=SEARCHB("m",A2,1)
 結果
 
 
 
 
文字列の桁数となるので返値 13 
文字列のバイト数(全角は2桁)となるので返値 22
 
 
文字単位となるので返値 1234We
バイト単位となるので返値 1234W
 
 
文字単位となるので返値 Mambow
バイト単位となるので返値 bow
 
 
文字単位となるので返値 34WebM
バイト単位となるので返値 34We
 
 
文字単位となるので返値は 10
バイト単位となるので返値は 15
※FINDとSEARCH関数の違いに注意 
文字単位となるので返値は 8
バイト単位となるので返値は 11

※FINDとSEARCHの違いわかりますか?
FINDは英字の大文字小文字の区別をしますがSEARCHは区別しない。返値の違いは英字の大文字小文字の区別有無にあります。


 LEFT関数とFIND関数、RIGHT関数とLEN関数とFIND関数の組み合わせ

   ある区切り文字を境に文字を分割する。
 
A B C
Web Mambow =LEFT(A1,FIND(" ",A1,1)-1) =RIGHT(A1,LEN(A1)-FIND(" ",A1,1))

全角スペースをセパレート文字としセルB1へWeb、セルC1へMambowを代入する。

○セルB1の関数式解剖
=LEFT(A1,FIND(" ",A1,1)-1)  LEFT関数は左から指定した文字数を抽出します。その文字数の指定が FIND(" ",A1,1)-1 となり全角スペースまでの文字数をFINDで求めてその値から1を減算することで全角スペースの前までの文字数 3 (FINDで求めた4から1を減算した値) が求めら「Web」が抽出されます。

○セルC1の関数式解剖
=RIGHT(A1,LEN(A1)-FIND(" ",A1,1))  RIGHT関数は右から指定した文字数を抽出します。その文字数の指定を LEN(A1) で求める文字列全体の文字数「10」から FIND(" ",A1,1) で求める全角スペースの位置「4」を減算して「6」を求めます。右から6文字とは、「Mambow」が抽出されます。


 REPLACE関数とFIND関数組み合わせ  
関数式 =REPLACE(文字列,開始位置,文字数,置換文字列) or 
                           =REPLACEB(文字列,開始位置,バイト数,置換文字列)
  • REPLACE 関数は、文字列中の指定された文字数の文字を別の文字に置き換えます。
    REPLACEB 関数は、文字列中の指定されたバイト数の文字を別の文字に置き換えます。半角文字は 1 バイト、全角文字は 2 バイトとなります。

   ●使い方例 文字列中の「波平」を「サザエ」に置換します。
 
A B
XXXWeb町波平1 =REPLACE(A1,FIND("波平",A1,1),2,"サザエ")
XXXWeb町波平2 =REPLACE(A2,FIND("波平",A2,1),2,"サザエ")
XXXWeb町波西4 =REPLACE(A3,FIND("波平",A3,1),2,"サザエ")
XXXWeb町波西5 =IF(ISERROR(FIND("波平",A4,1)),A4,REPLACE(A4,FIND("波平",A4,1),2,"サザエ"))
○セルB1の関数式解剖
=REPLACE(A1,FIND("波平",A1,1),2,"サザエ")  REPLACE関数はある文字をある文字へ置換する関数です。セルA1の文字列を基準に FIND("波平",A1,1) で求める値「8」を開始位置として2文字を「サザエ」に置換します。セルB2、B3も同様ですが、セルB3は”波平”の検索文字に該当しないので #VALUE! が返されます。

○セルB4の関数式解剖
=IF(ISERROR(FIND("波平",A4,1)),A4,REPLACE(A4,FIND("波平",A4,1),2,"サザエ"))  おなじみのIF関数です。ISERROR関数を組み合わせて定義しています。条件は、「もし指定する検索文字に該当しなければそのままの文字列表示しなさい。該当する場合は、波平をサザエに置換して文字列を表示しなさい。」となります。
論理式 ISERROR(FIND("波平",A4,1)) は検索文字列の適用検証であり、ヒットする場合はTRUE、ヒットしない場合はFALSEの条件になります。


 TEXT関数とMID関数、LEFT関数、RIGHT関数の組み合わせ 

  20020115と入力されている日付を和暦年月日に変換して表示する。
 
A B
20020115 =TEXT(LEFT(A1,4)&"/"&MID(A1,5,2)&"/"&RIGHT(A1,2),"ggge年m月d日")
    ここは、シンキングしてください。



以上、文字列を操作する関数編でした。