• ベストアンサー

char関数/code関数の多言語化について

エクセルの関数でcharおよびcodeというのがありますが、 私の環境(普通の日本語Windows+日本語オフィス)ではこの関数はJISコードで振られた番号で「文字<=>コード」の変換が行われます。 これを、例えば中国語や韓国語の「文字<=>現地のコード」の変換に使うにはどうすればよいのでしょうか? その地域のOS+オフィスを導入するしかないのでしょうか? よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんばんは。 「文字<=>現地コード」 理屈では、私の書いたものでよいのですが、それは、Excel自身の問題です。 Excelが、Multilanguage ならよいのですが、そうでなければ、韓国語あたりまではサポートがあったような気がしますが、それ以外は、日本語バージョンでは不可能だと思います。

その他の回答 (1)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.1

こんにちは。 Unicodeだけになりますが、VBAの関数を、ワークシートで使えばよいと思います。 '標準モジュール Function UCODE(arg As Variant) As String  UCODE = ChrW(arg) End Function 入力例: =UCODE("&H4e38") 出力:  丸 ただし、書式のフォントがなくてはなりません。

shironekoxxx
質問者

お礼

ありがとうございます。 おかげでascwの存在も知りました。 しかしながら、私がやりたかったのはあくまでも「文字<=>現地コード」の変換ですのであまり有効ではありませんでした。 具体的には繁体字big5のコードを吐き出す、またはコードからbig5の文字を書き出すという操作を行いたいのです。

関連するQ&A

  • MySQLの関数でCHARと言うのがありますが、この関数に与えられる数値は0x0000から0x1ffffffffで良いのでしょうか?

    MySQLの関数でCHARと言うのがありますが、この関数に与えられる数値は0x0000から0x1ffffffffで良いのでしょうか? 実験したこと: SELECT CHAR( 0x200000000 ); ↑空白文字が返ってくる。 SELECT MD5(CHAR(0x0000)), MD5(CHAR(0x0001)); ↑この二つは異なった暗号文字列を返す。 SELECT MD5(CHAR(0x1fffffffe)), MD5(CHAR(0x1ffffffff)); ↑この二つは異なった暗号文字列を返す。 ※サーバはshift_jis コード表に沿った文字を返してくる。 CHARには保障された下限値、上限値があるのでしょうか? サーバー等、環境に左右されるのですか? 左右されない下限値、上限値はありますか? 以上、宜しくお願いします。

    • ベストアンサー
    • MySQL
  • Uni-codeって何?

    Uni-codeって何? サイトが文字化けしていたのでエンコードをいじっていたところUni-codeを選択したら、日本語(シフトJIS)に戻らなくなってしまいました。戻す方法はありますか?

  • char型について質問

    char型は文字コードを保持する型とjavaの解説書に書いてありました。 そして、文字コードは10進数でなく16進数で表すと書いてありました。 でもchar型の変数には10進数も代入できます。これはコンピューターが10進数を16進数に変換しているからですか?

    • ベストアンサー
    • Java
  • 文字列を文字コードの数値に変換する方法

    JISコードの日本語を含む文字列を、文字コードの数値に変換する方法がわからなくて困っています。とりあえずは文字列ではなく、1文字だけ変換することを目指してord関数を使ったんですが、1バイト文字はうまくいったのですが、2バイト文字だと思うような結果になりませんでした。 例)以下のように変換したいです。 「a」→「97」 「あ」→「9250」 どなたかいい方法や関数をご存じないでしょうか? ちなみに下記のように片っ端から試してみたのですが、思うような結果が得られませんでした。 $buf = mb_convert_encoding($_POST["string"], "JIS", "EUC-JP"); $jis_code1 = ord("$buf"); $jis_code2 = bin2hex("$buf"); $jis_code3 = urlencode("$buf"); $jis_code4 = intval("$buf");

    • 締切済み
    • PHP
  • c言語 int型の数字をchar型の配列に

    c言語についてです。 int型の数字をchar型の配列に入れたいです。 関数に対してint型の数字を文字列として渡し、 関数内でchar型の配列に格納したいです。 例として、 a(char a[]){  ~~  ~~ } int main(void){ int x = 5678;  ~~  a(x); } とできるようにしたいです。 しかしこれだと5678という値がそのままchar型の一つの配列に入る?ため正しくないです。 欲しい結果としてはちゃんとa関数内で、 a[1] = '5' a[2] = '6' a[3] = '7' a[4] = '8' となってほしいです。 もともと渡す値が”5678”となっていれば結果は正しく出るのですが、 渡す値がint型と決まっているためどうにかして5678を”5678”とすればいいのではないかと考えています。 つまり5678を単純に文字列に変換すればいいのでしょうか? またプログラム内ではsprintfやatolを使用しないで実現させたいです。 難しいかもしれませんがお願いします。 なんだか説明が下手ですみません。 お願いいたします。

  • DWORDとcharの変換

    突然ですが、DWORD*がたの文字列をchar*がたの文字列に変換する方法ってありますか? あれば関数名など教えていただけると助かります。 いそいでいます。お願いしますm(_ _)m

  • char型の比較

    C++で文字の比較をしたいのですが、コンソールアプリで   char str[3] = "困";   printf( "%x", str[0] ); と記述すると、"困"の文字コードは"8da2(Shift_JIS)"なので、   8d と表示されると思っていたのですが、実際は   ffffff8d と表示されます。 同じ理由で文字の比較をする際にも   str[0] == 0xffffff8d または   str[0] == (char)0x8d としなければ正しい結果が得られません。 これは何が原因なのでしょうか? よろしくお願いします。

  • C言語の変換する関数について教えてください。

    キーボードからローマ字で入力された名前の英文字を変換する関数を定義し、その関数の機能を確認するプログラムを作成する問題について教えてください。 (1)英小文字であればそれを英大文字に変換する関数 (2)英大文字であればそれを英小文字に変換する関数 (3)英小文字であればそれを英大文字に、英大文字であればそれを英小文字に変換する関数 ただし、キーボードから入力された名前を格納する配列と、変換後の名前を格納する配列を別にする。 また、名前は関数main()内で表示する #include <ctype.h> #include <stdio.h> void name_toupper(char str[]) { unsigned i = 0; while (str[i]) { str[i] = toupper(str[i]); i++; } } void name_tolower(char str[]) { unsigned i = 0; while (str[i]) { str[i] = tolower(str[i]); i++; } } int main(void) { char str[100]; printf("文字"); scanf("%s", str); name_toupper(str); printf("大文字: %s\n", str); name_tolower(str); printf("小文字: %s\n", str); return 0; } 自分で作った上のプログラムではKa siと入力すると(1)ではKA、(2)ではkaと表示されsiが消えてしまいます。原因がよくわかりません。 あと(3)ができないし、ただしを満たしているのかもあいまいです。 文字列の入力の形式:char *gets(char *buffer)を用いればどうにかなるのではと思っていますがどうですか? 説明が長くなって申し訳ありませんが教えてください。 よろしくお願いします。

  • 文字コード変換ツール

    テキストファイルの文字コード変換ツールを探しています。 変換を行うのは、Shift_JISとUnicode、Unicodeと韓国語、Unicodeと中国語 です。 私が試したのは、1行が512バイトを超えると切れてしまいます。 複数(多数)のファイルをまとめて変換できると尚可です。 (ちなみに、秀丸はあるのですが、何とかして、まとめて変換できないでしょうか。) OSはWindowsXP

  • C言語の変換する関数について教えてください。

    キーボードからローマ字で入力された名前の英文字を変換する関数を定義し、その関数の機能を確認するプログラムを作成する問題について教えてください。 (1)英小文字であればそれを英大文字に変換する関数 (2)英大文字であればそれを英小文字に変換する関数 (3)英小文字であればそれを英大文字に、英大文字であればそれを英小文字に変換する関数 ただし、キーボードから入力された名前を格納する配列と、変換後の名前を格納する配列を別にする。 また、名前は関数main()内で表示する。 #include <ctype.h> #include <stdio.h> void name_toupper(char istr[], char ostr[]) { unsigned i = 0; while (istr[i]) { ostr[i] = toupper(istr[i]); i++; } } void name_tolower(char istr[], char ostr[]) { unsigned i = 0; while (istr[i]) { ostr[i] = tolower(istr[i]); i++; } } void name_change(char istr[], char ostr[]) { unsigned i = 0; while (istr[i]) { if(isupper(istr[i])) { ostr[i] = toupper(istr[i]); } else { ostr[i] = tolower(istr[i]); } i++; } } int main(void) { char buffer[100]; printf("文字"); gets(buffer); name_toupper(buffer); printf("大文字: %s\n", buffer); name_tolower(buffer); printf("小文字: %s\n", buffer); name_change(buffer); printf("大小交換: %s\n", buffer); return 0; } 上のプログラムでは、呼び出し時のパラメータが足りないとエラーが発生してしまいます。文字列を入れておく配列をbuffer以外にもう一つ作らなくてはいけないと思うのですが、うまくいきません。 教えてください。よろしくお願いします。

専門家に質問してみよう