過去の桐井戸端BBS (桐ver.9)
20822 半角の数字やカタカナが混在したデータをきちんと並べ替えるには右寄せにすればいいのでしょうか 小次郎 2003/06/12-11:27
初心者の質問で申し訳ありませんが、教えて下さい。
桐体験版ver9使用しています。
項目Aを文字列にしています。
ほとんどは半角の数字を入力するのですが、たまにカタカナのイ、ロ、ハ
を入力するときがあります。
項目A
2
200
1
100

21
を並べ替えすると
項目A
1
100
2
200
21

となり数値の順番になりません
項目Aのデータを右寄せにするとうまく行くのではと思うのですがどうでしょうか?
ほかに何かいい方法があれば教えて下さい。
20823 Re:文字列のデータを右寄せにしたい エリ 2003/06/12-12:12
記事番号20822へのコメント
小次郎さん 初めまして
桐体験版ver9使用しています。 (マニュアルが無いと辛いですよね?そろそろ正規版購入ですかね?????)

文字列項目の場合はこの様になりますよね。
ですから項目を追加して例えば[項目AA]に項目計算式で#数値([項目AA])とし
この項目で並べ替えをすると大丈夫かな?
[項目A]には入力後の再計算のチェックをお忘れなく
では、がんばってください。

20826 Re:文字列のデータを右寄せにしたい 悲しげ 2003/06/12-12:46
記事番号20823へのコメント
どもっ、小次郎さん、エリさん

>文字列項目の場合はこの様になりますよね。ですから項目を追加して例えば[項目A
>A]に項目計算式で#数値([項目AA])としこの項目で並べ替えをすると大丈夫かな?

その場合、[項目A]値が「イ」であるレコードの[項目AA]値は空となるので、
より前の方に位置することになります。


1
2
21
100
200

これでも構わないのかどうか?
そうでないのなら、私としては、入力時点で「001」のようにするのが
よりマシなような気がします。

あるいは、ここで挙げた「イ」が実のところは全角なのか半角なのかの
問題も付随してくるかもしれませんが、並べ替え用の増設項目の計算式を例えば

#cond(#jis([項目A])<58,#右側文字列([項目A],3),1,[項目A])

なんてのも有りかも。

20828 Re:文字列のデータを右寄せにしたい うにん 2003/06/12-13:17
記事番号20826へのコメント
>そうでないのなら、私としては、入力時点で「001」のようにするのが
>よりマシなような気がします。

「 1」でもいいですよね。

>#cond(#jis([項目A])<58,#右側文字列([項目A],3),1,[項目A])

#JISでなく#IS数字([項目A],1)を使ったらどうでしょう。

項目値の一部で並べ替えができるようになったので、このさい「文字n」ならぬ
「文字-n」(右側からn文字で並べ替え、不足分はスペースを補う)なんてのが
できるようになるといいかもしれませんね。

20830 Re:文字列のデータを右寄せにしたい 小次郎 2003/06/12-15:48
記事番号20828へのコメント
エリさん、悲しげさん、うにんさんありがとうございます。

確かにマニュアルないのはつらいです。
「はじめての桐ver7」「桐ver7入門」「EXCEL2000/2002ユーザーのための桐入門」を
図書館で借りたり購入して読んでいます。
会社の仕事でデータベース構築したい事があり
桐とファイルメーカーに絞って調べています。
私個人としては、関数が日本語でわかりやすいし質問も短時間で帰ってくるし
桐がいいのですが、書籍が少なく苦労しています。
また、質問しますがよろしくお願いします。

20833 表示位置とはまったく関係ありませんよ(念のため) 宮城 2003/06/12-18:00
記事番号20830へのコメント
小次郎さん、こんにちは。

右寄せにしたいなら、「属性」→「項目表示条件」でどうにでもなるんですよ。
ただし、それはソート順にはまったく影響なく、文字列か数値かによって決まる話です。
文字列にソートかけたら、たぶんどのソフトでもお書きになってる結果になると思います。

20839 Re:文字列のデータを右寄せにしたい 悲しげ 2003/06/12-21:28
記事番号20830へのコメント
ところで、小次郎さん
マニュアルや書籍が無いことがつらいのはそのとおりなのですが、
そんなことよりも、肝心の本題に関する結論はどうなったのですか?
20844 並べ替えの基本 佐田 守弘 2003/06/13-00:58
記事番号20822へのコメント
小次郎さん
いろいろな対処方法は皆様から出されておりますが、基本に戻って
並べ替えの話をさせて頂きます。なお、ここに述べる事は、桐に限った
事ではなく、データ処理一般にも通じる話です。

●文字列と数値
データの並べ替えをする場合、そのデータが文字列であるか数値であるかによって、
並べ替えの意味合いが全く変わります。
おそらくこの事はご存知とは思いますが、念の為に述べておきます。

数値の場合には、数としての大小関係が存在しますから、桁数やカンマなどに関係なく、
その数としての大きさの順での並べ替えになります。

一方文字列の場合には、数字を使って数値を記述していても、
数としての値はなく、単に数字の文字列でしかありません。

●文字列の並べ替え順序
文字列の順序は、辞書の並べ方などと同じ考え方です。つまり左端から順に
アルファベットや五十音などの順で順序を比較して並べられます。
その順序ですが、桐の場合で言えば、文字コードでの順序や、辞書と同じく
同じ文字は同じ順序で並べる並べ方などが選べます。

文字の順で並べるので、12と100を比べれば、先頭の文字は同じで、2番目の文字は2の方が0より大きいので、
12という文字列の方が100という文字列より大きいとみなされます。
つまり数値としての値とは関係ない順序になります。

●文字と数字の混在
数字の文字列を数値としての順で考えたいのであれば、文字列型を使うべきではなく、
数値型などにするのが鉄則です。
ただし質問の中に、一部数字でない文字が入る事があるとの事ですが、
まず考える事は、ここを何とかできないかを考えるべきでしょう。

どうしても文字と数の混在が避けられないのだとしたら、数字文字の表記は
頭に0を付けて桁数を揃えておくしかないと思います。

並べ替え用に元データとは別に桁数を揃えた数字文字列を持つ事も考えられないではないでしょうが、
余り賢い方法とは思えません。

なお、右寄せにすればとの事を書かれていますが、左寄せや右寄せは単に表示だけの違いで、
文字列や数値としての値が変わるわけではありません。

佐田守弘(KS-00119)

20845 皆さんありがとう 小次郎 2003/06/13-06:26
記事番号20844へのコメント
佐田さん、また今まで貴重な意見と
解決方法を頂いた皆さんありがとうございます。
仕事上どうしても入力時に数値と文字が混在してしまいます。
今まで使用していた表計算ソフトが
何を入力しても右寄せにしていて
並べ替えには何も問題なかったのですが、
データベースソフトとなるとデータ型を指定しなければならず、
今までのように右寄せにしてしまえば問題ないだろうと思っていました。
みなさんにいろんな方法を教えて頂いたので、状況に応じて使い分けしたいと思います。
これからもよろしくお願いします。

20847 Re:皆さんありがとう 悲しげ 2003/06/13-12:33
記事番号20845へのコメント
>今まで使用していた表計算ソフトが
>何を入力しても右寄せにしていて
>並べ替えには何も問題なかったのですが、

そのような表計算ソフトがあるんですね。
ちなみに、メジャーなExcelで試した限りでは(数値・文字列混在データで)右寄せ・左寄せ・中央揃え或いはその混在の
何れの場合でも、並べ替えの結果は全て同じでした。

20851 Re:皆さんありがとう 小次郎 2003/06/13-17:16
記事番号20847へのコメント
>
>そのような表計算ソフトがあるんですね。

リコーのマイツールという表計算ソフトで
いまは開発中止してフリーウェアになっています
WINDOWSでも動きますが、ただ動いているだけのソフトです。

>ちなみに、メジャーなExcelで試した限りでは(数値・文字列
>混在データで)右寄せ・左寄せ・中央揃え或いはその混在の
>何れの場合でも、並べ替えの結果は全て同じでした。
>

数字だけ順番に並べ替えしてくれれば問題なく
カタカナは最後でかまわないのです。
#右側文字列関数だけでもいいようです。

いろいろとありがとうございます。
20852 Re:皆さんありがとう 悲しげ 2003/06/13-19:38
記事番号20851へのコメント
>数字だけ順番に並べ替えしてくれれば問題なく
>カタカナは最後でかまわないのです。
>#右側文字列関数だけでもいいようです。

ちなみに、#右側文字列関数だけだと、カタカナが最後になる
とは限りませんよ。

20856 Re:皆さんありがとう 小次郎 2003/06/14-06:55
記事番号20852へのコメント
>ちなみに、#右側文字列関数だけだと、カナカナが最後になる
>とは限りませんよ。
>
数字半角、カタカナ大文字の順番でなくて
数字、カタカナ、数字、カタカナもありえるということですか?
どうしてなのか教えて下さい。
20859 Re:皆さんありがとう 悲しげ 2003/06/14-11:48
記事番号20856へのコメント
「#右側文字列」関数のヘルプに、説明文としては明記されていませんが(サンプルとしては記載あり)、
今回は、
  #右側文字列( str , n )
で、strの文字数がnに満たない場合は、nになるまで頭に半角空白を補うことを利用しています。
とすれば、

1
10
100

アイ
アイウ

のようなデータの場合は次のようになるはずです。
(n=3として、半角空白を△で表示)

△△1
△△ア
△10
△アイ
100
アイウ

と云うことで、No.20826(後段)と20828を再度お読みください。
文字列の場合には#右側文字列を使わない条件分けのことを書いてありますので。

それと、よもや誤解はないと思いますが、

>数字半角、カタカナ大文字の順番でなくて
>数字、カタカナ、数字、カタカナもありえるということですか?

この場合の項目値は、数値ではありえず、全て文字列(数字文字列)
ですので念のため。
文字コードとしての昇順ってことですね。

20891 Re:ありがとう 小次郎 2003/06/16-07:53
記事番号20859へのコメント
連絡遅れてすいませんでした。
なるほどよくわかりました。
桐でやりたいことは、はっきりしているのですが
桐の初心者なもので苦労しています。
このような体験版があるのは、うれしいですね
ただ、マニュアルがないので初歩的な質問ばかりして
申し訳なく思います。
これからもよろしく


戻る