3.3. XLCTr 文字変換の指定

注意

Excel 2003 とそれ以前のバージョンでは、C API は Unicode をサポートしておらず、データの入出力は Shift-JIS で行っています。本プログラムでは Shift-JIS を Unicode に変換してから処理していますが、一部変換できない文字があります。
参照 SHIFT - JIS と Unicode 間の変換問題
このような理由で正しく処理できない場合があることをご了承ください。

  1. 概要
  2. 文字変換指定の詳細
    1. 通常の文字
    2. エスケープ文字
    3. 範囲
    4. 照合要素
    5. 変換元と変換先の文字の対応について
  3. 対象文字列
  4. その他

1.概要

変換元文字内にある文字を変換先文字の対応する位置にある文字で置き換えます。例えば、

=XLCTr("ABC", "zyx", D4)

は、D4 セル内の文字列において、A を z に、B を y に、C を x に置き換えた文字列を、この式を記述したセルに出力します。(D4 セルの値が文字列でない場合はエラー値が表示されます。)

2.文字変換指定の詳細

変換元文字と変換先文字はいずれも文字列内に記述します。

2.1.通常の文字

特別な文字を持つものは以下のとおりです。

\ - [ ] .

以上に当てはまらないものは、通常の文字として処理されます。また、上記の文字も状況によっては通常の文字として処理される場合があります。

2.2.エスケープ文字

\a
ベル(ASCII コード 07、16 進表記、以下同様)を表します。
\b
バックスペース(08) を表します。
\t
水平タブ(09) を表します。
\n
改行(0A) を表します。
\v
垂直タブ(0B) を表します。
\f
書式送り(0C) を表します。
\r
復帰(0D) を表します。
\e
エスケープ(1B) を表します。
\nn
\nnn
nn および nnn はそれぞれ 2 または 3 文字の 8 進数です。1 文字を 8 進数表記のコードで指定します。
\xnnnn
nnnn は 4 文字までの 16 進数です。1 文字を 16 進数表記のコードで指定します。
\un...
n... は 4 文字から 6 文字の 16 進数で、Unicode のコードポイントを指定します。
\u{n...}
Unicode コードポイントは \u{ } の形式で指定することもできます。 コードポイントの区切りを指定したい場合などに使用してください。さらに
\u{0042 0043}
のように、複数のコードポイントを空白で区切って記述することもできます。
\cX
X は印字可能な ASCII 文字です。制御文字を表します。
\
以上に当てはまらない場合、\ は次の文字を通常の文字として処理するよう指示します。

2.3.範囲

- は文字の範囲を表します。例えば、先の例は次のように記述することもできます。

=XLCTr("A-C", "z-x", D4)

この場合も、D4 セルの値が文字列ならそれに対して、A を z に、B を y に、C を x に置き換えた文字列を、この式を記述したセルに出力します。

2.4.照合要素

[..] で囲まれた文字列は、1 文字として扱われます。

例えば、

=XLCTr("![.ドル.]", "[.注意.]$",B7)
では、B7 セル内の文字列で、!注意 に、ドル$ に書き換えます。

[ などを文字として使用したい場合、\[ と記述してください。

2.5.変換元と変換先の文字の対応について

変換先の文字が指定されていない場合

この場合、変換元の文字が削除されます。例えば、

=XLCTr("A-E", "", D4)

の場合、対象テキスト中の A から E までの文字を削除した文字列が出力されます。

変換先の文字が足りない場合

不足した分は、変換先の最後の文字が使用されます。例えば、

=XLCTr("A-E", "Z-X", D4)

の場合、C の他、D、E も X に置き換えられます。。

変換元文字が重複している場合

変換元文字に同じ文字が複数回指定されている場合、最初の指定が有効となります。

=XLCTr("A-EC-G", "0123456789", D4)

この例の場合、C に対応する文字は 2 と 5 ですが、最初に指定された 2 に変換されます。

3.対象文字列

処理対象の文字列には、エスケープシーケンスをデコードするなどの特別な処理は行いません。

4.その他

4.1.範囲で指定する際の注意

このページの最初で述べてあるように、このプログラムは Unicode で処理を行っています。したがって、範囲で指定する場合も、Unicode のコード順に従います。

全角ひらがな、全角カタカナ場合、Unicode では次のようにコードが割り当てられています。小文字や濁点・半濁点付きの文字が前後に配置されていますので、注意してください。


0123456789ABCDEF
U+3040
U+3050
U+3060
U+3070
U+3080
U+3090



0123456789ABCDEF
U+30A0
U+30B0
U+30C0
U+30D0
U+30E0
U+30F0

半角カタカナの場合、全角のひらがな・カタカナとは異なっていますので注意してください。また、濁点・半濁点は別の文字となっていますので、[. .] の利用も考慮してください。


0123456789ABCDEF
U+FF60
U+FF70 ソ
U+FF80
U+FF90