« パワーポイントで思ったように設定できないフッターを整える。 | トップページ | アウシュヴィッツ博物館( Auschwitz Memorial )による声明 »

Excel で " (ダブルコーテーション)を文字列として扱う。

この記事は自分用の覚書です。

■MacBook Pro macOS Big Sur
バージョン 11.6

■Microsoft 365 Apps for businessサブスクリプション
(旧称 Office 365 Business)
Excel for Mac バージョン 16.57 (22011101)

H.M さん。

この前に話した「エクセルで、ダブルコーテーションを文字列として扱うやり方」をまとめてみました。
関数に限らず、VBAでも同じ考え方が使えます。

「まとめた」なんて偉そうなことを言っていますが、私もひとから教えてもらったことをそのままお伝えしているだけなんですけどね。

■『文字列として扱う値は、" (ダブルコーテーション)で囲む』が、大原則。

  • " は、エクセルのなかで「ある値を文字列として認識させるために、その値の両端を囲う」という特別な役割をもった記号。
  • " 自体を文字列として認識させるときは、その「特別な役割」からまず解放してやらないといけない。
    そのためには「エスケープ文字」というものを " に添える。
  • そのエスケープ文字は、エクセルでは、" の左側に同じ " を1つ添えることになっている。
  • ややこしいが慣れるしかない。マイクロソフトがそう決めたから。

なお、エクセルではエスケープ文字として使うときも、そうでないときも同じ " を使うので「エスケープ文字としての "」を、 " の左側に付けても、右側に付けても起こることは同じです。

同じですが、エスケープ文字は普通は左側に付けるので、ここでも「エスケープ文字としての " は、 " の左側に付ける」ことにしています。

ちなみに、Wikipedia の「エスケープ文字」の項には、「それに続く文字について別の解釈をすることを示す文字」とあります。
「エスケープ文字としての " 」を添えることで、「この " は特別な役割をもたない単なる文字列として扱うことにする」という解釈をエクセルにさせるようにしたとも言えますね。

■1つだけの " を文字列として扱うには。

1つだけの " を文字列としてエクセルに認識させるには、次のように書く。

01_20220212212101

エクセルが文字列として認識しているのは、左から3つ目の " のみ。

■ " が4つ並ぶ考え方の詳細

まず、 " の左側に「エスケープ文字としての " 」を1つ付ける。
左側にある赤色の " が「エスケープ文字としての " 」。

02_20220212212101

これで、右側にある " (青色の " )から「特別な役割」を無くしたことになる。

次に、「文字列として扱う値は、ダブルコーテーションで囲む。」のが大原則なので、エスケープ文字も込みで両端を " で囲む。

03_20220212212101

これで、1つの " (青色の " )を、エクセルに文字列として認識させる指定をしたことになる。

「エスケープ文字としての " 」と「それが添えられている " 」を一つの組み合わせとして捉えると、ややこしさが少しでも減るかと思います。

09

■ " 込みで値を文字列として扱うには。

たとえば、「ダブルコーテーションで囲った北海道」

04_20220212212301

を、文字列として認識させる書き方は、

05

になる。

「(1つの " を文字列として扱うには) " を4つ並べる」と思い込み過ぎていると、気持ち的には、次のように「北海道の左右に4つの " を付ける」としたくなるかもしれないが違う。

・誤った書き方
06

この場合は、

"北海道"

を一塊の文字列として認識させたいので、

まずは "北海道" という文字の両側にある " の左に「エスケープ文字としての " 」を付ける。

""北海道""

次に、 ""北海道"" の両端を " で囲む。

"""北海道"""

これで、ダブルコーテーション込みの

"北海道"

を文字列としてエクセルに認識させることができる。

10_20220213090101

■使用例

関数での例

値のなかに " で囲った部分がある。
元の文字列は、 123:"北海道"JKL というもの。
(上記の説明と見比べながら下図を見ていくと、関数の引数での " の扱い方について理解が深まりやすいと思います。)

FIND関数の構文
FIND(検索文字列,対象,[開始位置])

MID関数の構文
MID(文字列,開始位置,文字数)

IFS関数の構文(Microsoft365サブスクライバーなら使える。)
IFS(論理式1,値が真の場合1,[論理式2,値が真の場合2],[論理式3,値が真の場合3],…,[TRUE,どの論理式にも当てはまらない場合])

・「北海道」を抜き出す。( " の内側だけ抜き出す。)

11

・「"北海道"」を抜き出す。( " も込みで抜き出す。)

12

VBAでの例

・「文字列として認識させたダブルコーテーション」を、「北海道」の両側に結合。

13excel_vba_double_quotation

・「ダブルコーテーションで囲った北海道」を一塊の文字列として認識させる。

14excel_vba_double_quotation2

|

« パワーポイントで思ったように設定できないフッターを整える。 | トップページ | アウシュヴィッツ博物館( Auschwitz Memorial )による声明 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« パワーポイントで思ったように設定できないフッターを整える。 | トップページ | アウシュヴィッツ博物館( Auschwitz Memorial )による声明 »