**********************************************
RTL言語(アラビア語などの右から左に読む言語)を取り扱う方法です。
右から左の設定
詳細設定から
ファイル > オプション > 詳細設定 > 右から左
に設定すると、行番号、列、シートの表示が左右が逆になります。
セルの書式設定から
セルを右クリック > セルの書式設定 > 配置タブ > 文字の方向
で「右から左」 を選択すると、そのセルにRTL文字が入力された場合には、
右から左に記述されますが、英語のみや日本語のみの場合は左から右に表示されます。
英語とRTL文字の混在
英語のみやアラビア語のみがセルに入力される場合は、問題ないのですが、
英語と、アラビア語が混在した場合、セルに表示されている順番と、
数式バーに表示されている順番が逆になることがあるので、
どの順番が正しいのかわからなくなってしまいます。
解決方法
① 翻訳会社 or RTL言語ネイティブに聞く
これが一番正確で、安心な方法です。
正しい語順の一覧表をPDFで入手できればそれを正として比較できます。
② 制御コードを埋め込む
制御コードについては開発をされている人のほうが詳しいと思います。
私が知っているコードはこれくらい・・・
0x200F(右から左に表示する)
このコードを Excel で使用するには UNICHAR という関数を使用します。
しかし、セルの中に =UNICHAR(0x200F)&"مرحبا Excel" と入力しても
=UNICHAR(0*200)&"مرحبا Excel" と修正されてしまい、エラーになってしまいます。
0x200F を UNICHAR 関数で使用できる値に変換しなければなりません。
その値は、Unicode Map : Public Unicode Character Map
のようなサイトで検索できます。
英語のサイトですが、コードが一覧化されているので、難しくはありません。
0x200F のページを開くと、関連するコードが掲載されています。
「Unicode Decimal」 の値が Excel の UNICHAR関数に使用できる値です。
0x200F の場合は 「8027」 です。
この値を使用して以下のように入力すると
=UNICHAR(8207)&"مرحبا Excel"
こんな風になります。
このセルを コピー > 値貼り付け すれば、関数が外れてきれいになります。
関数がなくなっても語順は変わりませんし、
数式バーの表示とも一致します・・・(するはずです)。
③ マクロ
Sub
Selection = Replace(Selection, "Excel", WorksheetFunction.Unichar(8207) & "Excel")
End Sub
-------------------------------------------------
Replace 関数を使えば制御コード付を埋め込むことができます。
マクロで埋め込んだ場合は、結果だけ表示されるので、
コピー > 値貼り付け は必要ありません。
大量にある場合にはループで回した方が良いですね。
あとは、いつも通りこのマクロをリボンに登録して、
いつでも、どんなファイルにでも使えるようにしておきます。
**********************************************
個人用マクロブックについてはこちら
リボンに登録についてはこちら
_/_/_/_/_/_/_/_/_/_/_/_/_/_/