MacのNumbersで行列を入れ替えるためのJavaミニプログラム

iWork ’09

さて、12月1日にMacBook Proが届いて以来、

Macで出来ることなら、できるだけwindowsのアプリケーションに頼らず、

Macの中で完結出来るようにいろいろ勉強しながらチャレンジしてきました。

特にマイクロソフトオフィスの三種の神器、

ワード、エクセル、パワーポイントなどを極力使わずに、

iWorksのPages、NumbersとKeynoteで様々な業務をこなすようにしてきました。

作成したコンテンツをPDFやMSソフト形式で書き出せますので、

今のところ、不慣れの中、なんとか支障がでない程度、仕事を無難に進めています。

まあ、複数の人が編集するようなファイルなら、

やっぱり素直に仮想マシンに入っている正規なMSソフトを使うけどね。

さて、今日もNumbersとKeynoteのコンビネーションで、

数字を扱うプレゼンテーションの資料を作成していましたが、

そこで、ちょっと困ったことがありました。

Numbersは、Excelにある「行列を入れ替える」という機能がないのだ。

なぜ行列を入れ替えたいかというと、NumbersもExcelもそうなんですが、

データの並べ替えは基本的に「列」のデータでしかできません。

で、データを並べ替えて、図表にしたいけれど、

その表示したいデータは、都合があって、横長な「行」のデータなんだよね。

Excelなら、それを「貼り付け」→「行列を入れ替える」、

そして並べ替えたら、うまい具合の図表が作れるのですが、

Numbersでは、すんなりそれができないのです。困った困った。

ネットでいろいろ調べた結果、

その部分だけExcelで行列の入れ替えをするとかの解決策がありました。

しかし、それだけのためにイチイチ仮想マシンを立ち上げたり、

Mac用のオフィスを買ったりするのはさすがにちょっと…ね?

あるいは、NumbersのTRANSPOSE関数を利用する方法もあるらしい。

しかし、行と列の入れ替えが出来るのですが、どうも並び替えは上手くいかない。

ぉぅぇぃのやり方が間違っているかもしれませんが、

TRANSPOSE関数の使い方そのものがちょっと難しくて、

ちょっといろいろ調べて、試してみましたが、現在はギブアップ気味。

一応、見つかったウェブページを貼ります、興味のある方は見てみてください(英語です)。

Apple Discussions:Sorting by Column

後、AppleScriptを使って処理する方法もあります。

試したところ、こちらが望むような結果が出ます。

ただし、Mac初心者のぉぅぇぃはAppleScriptの使い方がよくわかりません。

毎回処理しようとしたら、Numbersの画面から離れて、

AppleScriptエディタを実行しないといけませんし、

アプリケーション形式(*.app)で保存しても、

なんか処理する度にアプリケーションを立ち上げ無いとダメ…みたい。

まあ、ぉぅぇぃの使い方が悪い…っと思いますので、

うまくAppleScriptを使いこなせる方は、これでOKかと思います。

AppleScriptで行列を入れ替える方法は、下記のウェブページを見てください(英語です。)

Apple Discussions:Transpose is back in Numbers

で、どうしましょうかぁ…ということですが、

クリップボードの中の、タブで区切られたデータの行列の入れ替えレベルなら、

自分でもプログラム書けるじゃん…ということで、

ぉぅぇぃが一番慣れているJavaを使って、

サクっと30分ほどで簡単なコードを書きました。

今のところ、ぉぅぇぃが必要としている行れ入れ替え機能を、

ほとんどストレスなく、普通にカバーしてくれます。

折角作りましたので、実行可能なJARファイルにしました。

使いたい方は自由にダウンロードして使ってください。

ただし、自己責任でお願いします。JARファイルのダウンロードはこちら。

Numbersと併用できる行列を入れ替えるためのJAVAプログラムのJARファイル

JARファイルの中に、ソースコードも入れてあります。

「アヤシイ」と思う方は、ご自由にソースコードを読んでください。

なお、ぉぅぇぃのMacBook Proはmid2009のモデルで、

入っているOSはOS Xの10.6.2のSnow Leopardです。

開発環境はEclipseでJDK1.6。1.5以上なら多分問題なく実行できます。

ぉぅぇぃは自分の環境でしたテストしていませんが、

そんなややこしい処理をしているわけでもありませんので、

最近のMacはJREをハンドルしていますので、、

多分大体問題ないかもしれませんと思いたいところ(弱気です。)

ぉぅぇぃはNumbersの中で使うために作りましたが、

別にNumbersと関係なく、クリップボードの中にタブ区切りのテキストがあれば、

それの行列を入れ替えることができますので、

お好みのスプレッドシートやエディタと併用することも可能かと思います。

さて、インストールする方法…とかは特になく、

Jarファイルをお好みの場所、デスクトップとかアプリケーションとかに移動してください。

使い方ですが、ダウンロードしたJARファイルをダブリクリップすると、

見た目がこんな感じのJavaアプリケーションが現れます。

↓クリップボード行列入れ替えコンバータ

クリップボードデータの行列を入れ替えるJavaアプリ

Numbers利用中の使い勝手を重視していますので、

常に画面の最前面に表示するようにしています。

画面の右上とか右下とか、邪魔にならないところまで移動してください。

要らなくなったら、ボチっと消しちゃってください。

使い方ですが、Numbersの中で、行列を入れ替えた部分を選んで…

↓マウスとかで選ぶ

クリップボードデータの行列を入れ替えるJavaアプリ、範囲の選択

そしてCommand+Cとか、右クリックやメニューの「コピー」とかで複製します。

次に、Javaアプリケーションの「タブ区切りデータの行列を入れ替える」をクリック。

一応、うまくクリックしたかどうかを確認するために、

カーソルがボタンの上に移動した時に、メッセージを出すようにしました。

↓仕事ですか、そうですか。

クリップボードデータの行列を入れ替えるJavaアプリ、仕事の直前

クリックして、うまく変換できたら、こんな感じになります。

↓たぶん正しく変換したよ

クリップボードデータの行列を入れ替えるJavaアプリ、実行

最後に、変換されたクリップボードの中身を、Numbersのほうに戻します。

↓「ペースト」でも「ペーストしてスタイルに合わせる」でも、お好みでどうぞ。

クリップボードデータの行列を入れ替えるJavaアプリ、ペースト

すべてが上手く行ったら、こんな感じになります。

↓行列を入れ替えた結果

クリップボードデータの行列を入れ替えるJavaアプリ、完成

これでソートしたり、図表作ったり、好き勝手できるようになります。

まあ、非常に簡単なプログラムですが、ぉぅぇぃのスプレッドシートの使い方だと、

この小さいなツールで、かなりNumbersの生産性の向上につながりました、

同じ悩みで困っている方、お試しください。

バグレポートや使用上の問題がありましたら、コメントなどでどうぞ。

comments

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

*