トップ «前の日記(2016-07-28) 最新 次の日記(2016-07-30)» 編集
2005|09|10|11|12|
2006|01|02|03|04|05|06|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|

旧道倶樂部録"

nagajis不定記。
本日のアクセス数:0|昨日のアクセス数:0
ad

独言 | bdb | C60 | D | KINIAS | OFF-uploader | ORJ | pdb | pdf | ph | ph. | tdb | ToDo | Web | web | きたく | | なぞ | ふむ | キノコ | コアダンプ | | ネタ | ハチ | バックナンバーCD | メモ | 乞御教示 | 企画 | 力尽きた | 南天 | 危機 | 原稿 | 古レール | 土木デジタルアーカイブス | 土木構造物 | 奇妙なポテンシャル | 奈良近遺調 | 宣伝 | 帰宅 | 廃道とは | 廃道巡 | 廃道本 | 懐古 | 戦前特許 | 挾物 | 文芸 | 料理 | 未消化 | 標識 | 橋梁 | | 煉瓦 | 煉瓦刻印 | 煉瓦展 | 煉瓦工場 | 物欲 | 独言 | 産業遺産 | 由良要塞 | 看板 | 石垣 | | 竹筋 | 納得がいかない | 索道 | 絵葉書 | | | 資料 | 近世以前土木 | 近代デジタルライブラリー | 近代化遺産 | 近遺調 | 道路元標 | 道路考古学 | 道路遺産 | 都計 | 醤油 | | | 鳴門要塞

2016-07-29 [長年日記]

[乞御教示] Excelの「並べ替え」の謎

Excelのデータの並べ替えで困っている。識者のご教示を頂ければ幸い。

画像の説明こんな感じのデータ列があるとする。頭に2桁~4桁の数字、続いてハイフンがつく、というようなデータ。数字の桁は揃っていない。

画像の説明これをExcel上で昇順に並べ替えるとこうなる。おそらく頭の一文字から順に見ていって、それで並べ替えていると思う。半角ハイフンの文字コード<半角英数字の文字コードなので「15-」が「155(-)」より前にくると。

ここで5行目の「15-」を「15-A」、6行目の「155-」を「155-B」と書き換え、同じように並べ替えをやると、

画像の説明こうなってしまう。

こうなってしまう原理がさっぱりわからない。本来は「15-A」が先にくるはずで、実際phpでこのような配列を作りsortすると15-A、155-Bの順になる。DOSのsortでも同じだ。

画像の説明

「A」や「B」は実は関係なく、ハイフンのあとに何か入っているのとそうでないのとで並び替え順が変わってしまうようだ。しかもどうやらExcelだけではないらしく、Windowsのとあるプログラム上で同じデータ列を並び替えるとExcelと同じ並びになるのだった。

要はExcelやそのプログラムの「並べ替え」をそっくりそのままphpで再現したいのだが、どういう理屈でこう並び替えられるのかわからず困っている。

すくなくとも「ふりがなで並び替え」は関係がない。オプションを外しても同様だ。

[独言] 無駄な時間

元のデータをゼロフィルして4桁に揃えてしまえば万事解決するのだが、そしてそうしたいのは山々なのだが、それをやると2万数千件分を削除→再登録せねばらなず、それはそれで原理的には可能のはずなのだが未だ試したことがなく、仮に失敗したら命が死ぬことになる。100日分の作業量だからなあ。数千件の削除と登録はやったことあるんだが、あれは被害軽微なやつだったから踏み切れた。今回のはそうもいかない。

生きるか死ぬかを賭けて元データを修正するか、わけわかめなデータ整列を再現するか、入れ替わりが生じることを大前提として現状ママイキで行くか。悩ましい。この悩む時間が無駄だとはわかっている。他のことに手が付かない。思い切ってやってみて、失敗したら死ぬ気でリカバリするよう肚を括ってGOするほうがなんぼかましだろうと思う。思うが、なかなか踏ん切れぬ。

似たような逡巡で時間を浪費することが多い。探索に行くか行かないかとか、聞き込みするか否かとか。行ってイキアタリバッタリズムでなんとかしてきただろうが>nagajis。そのほうが面白かったりするだろうが。

わかりそうでわからないことほど意識の最前列を占拠しよる。片付けたいのは山々で早く片付けるためにそうやって見える所に置いてあるのだろうけれども、それに注意を払うことだけでも随分な時間を浪費している気がする。煉瓦刻印とか。煉瓦裏面の筋が出来る理由とか。刻印のない煉瓦の出処とか。ああ、無駄。

本日のツッコミ(全3件) [ツッコミを入れる]
_ my (2016-07-30 01:52)

突然失礼します。<br>ハイフンの件ちょっと気になったので調べてみましたが、どうもハイフン(と引用符)のみ文字として認識せずに並び替えするようです。<br>http://www.asahi-net.or.jp/~zn3y-ngi/YNxv9891.html<br>なぜこうなるのかは「仕様です」というのが回答のようです…。<br>(マイクロソフトコミュニティでも同じような回答が)<br>同じ順に並び替えるにはハイフン除去して並び替えるぐらいしか思いつかないですね…

_ my (2016-07-30 01:59)

参考までにコミュニティの方のURLです。<br>http://answers.microsoft.com/ja-jp/office/forum/office_2010-excel/%E3%83%87%E3%83%BC%E3%82%BF%E3%81%AE%E4%B8%A6/d438a8fb-f5a9-4bb1-82be-f7449b9d7d9a?msgId=4b8a1d16-09f3-4e7f-94ef-d510ec1b7b46

_ nagajis (2016-07-31 19:31)

あああ! そういうご教示を待っておりました! 有難うございます有難うございます。。。<br>ハイフンを削除……。なるほど、それは案外有効かも知れませぬ。このデータ列がデータベースのプライマリキーに相当するものなので、実データをいじることはできんのですが、s/-//前と後の値を連想配列で関連付けといたら。うん、それでやってみまする。


トップ «前の日記(2016-07-28) 最新 次の日記(2016-07-30)» 編集