Top > OOobbs > 23

OOobbs/23

  • サマリ: 日本語漢字の並替順について
  • 環境: Calc
  • 状態: 解決
  • 投稿者: suou?
  • 投稿日: 2004-06-12 (土) 11:20:17

質問

OOoBasic/Calc/Sortを参考に、

Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue
aLocale.Language = "ja" 'Japanese
aLocale.Country = "JP" 'JAPAN
aSortDesc(0).Name = "CollatorLocale"
aSortDesc(0).Value = aLocale

を用いて、下の漢字を縦一列のセルに入力しソートすると、下の順番になります。

"三","上","中","京","今","伊","住","佐","俵","北","吉","国","多","大","家","山","岡","帝","幸","広","新","日","旭","村","東","松","根","桐","森","楠","深","福","紅","若","菅","藤","遠","郵","鈴","長","関","青","須","高"

これは感覚と合いません。 そこで、表計算のコマンドから、データ→並べ替え→オプションタブ→(言語を「日本語」/オプションを「文字種」)に指定して並べ替えを実行すると、上の列は以下のように並びます。

"旭","伊","遠","岡","家","関","吉","桐","幸","広","紅","高","国","今","根","佐","三","山","若","住","松","上","新","森","深","須","菅","青","村","多","大","中","長","帝","東","藤","楠","日","俵","福","北","郵","鈴","京"

この方が常識的なよみ順に近いような気がします。 そこで質問なのですが、OOoBasicで表計算コマンドからソート・オプションで選ぶ「文字種」に相当する命令語はあるのでしょうか。もちろんできればExcelのようにかな、カナ、漢字が混じっていてもそのまま読み順に並べ替えてくれる語彙があれば、それが一番いいのですが。Excelから完全移行しようとするとき、この並び順はかなり実務的には痛い障害になるような気がしています。

回答

  • 二回目の並び替えの時には "三" は一番前に来ないですよね?
Dim aSortDesc(0) As New com.sun.star.beans.PropertyValue

に指定したのは CollatorLocale だけでしょうか?

sort メソッドの引数のこの aSortDesc に指定するものは,OOoBasic/Calc/sort のページにあるように,いくつかあります。ロケールのオプションとして並び方の順番の方法を変更するには,CollatorAlgorithm を指定することで行います。OOoBasic/Calc/sort のページにオプションの項目を作成しましたが,「文字種」の時には,この CollatorAlgorithm に "charset" を指定します。

次のようにして, aSortDesc を定義しなおします。

Dim aSortDesc(1) As New com.sun.star.beans.PropertyValue
aLocale.Language = "ja" 'Japanese
aLocale.Country = "JP" 'JAPAN
aSortDesc(0).Name = "CollatorLocale"
aSortDesc(0).Value = aLocale
aSortDesc(1).Name = "CollatorAlgorithm"
aSortDesc(1).Value = "charset"

aSortDesc の配列の要素数を増やしたのと,最後の二行を追加しました。

一つ気づいたのですが,並べ替えのときにヘッダを含むかどうかを指定した方がいいかもしれません。

  • はにゃ?? 2004-06-13 (日) 01:08:45
  • いつも素速いご回答ありがとうございます。ご指導のとおりに書換えて実行したら、二回目の並び替えのとおりになりました(但し、"三"は"佐"と"山"の間でした。ヘッダーに含んでソートしていたようです。申し訳ありません。質問の部を訂正しました。)。

ちょっと気になるところは"京"の位置です。他はほぼ音読みで並んでいますが、"鈴"が"郵"(ユウ)の後に来ていますのでレイと読むとすると、"京"はケイ/キョウ/ミヤコのいずれでもレイの後ろに来るのは不規則になります。CollatoAlgorithmの"charset"は厳密には何順なのでしょうか。それがわかれば、並べ替えの後で探すときに見当をつけやすくなるのですが。この点が研究課題として残りますが、ひとまず解決です。ありがとうございました。 -- suou? 2004-06-13 (日) 08:57:04



Reload   New Lower page making Edit Freeze Diff Upload Copy Rename   Front page List of pages Search Recent changes Backup   Help   RSS of recent changes