エクセル

なんか知らんけどJava案件で呼ばれた職場でひたすらエクセル触ってます
でもこれまでと違うのは、各種ドキュメントや帳票なんかのコピペと検索でヒーヒーいうような作業でなしに、お客さんがお客さんのお客さんに渡す(ややこしいけどそういうこと)印刷物の所定の位置にデータないし計算結果を出す的なものであるとか、あとはランダムな数字を必要な桁数出してパスワード自動生成するやつとか、名簿から名札を作っておいてと言われて面倒くさいから自動化したりとかそういう具合
(あとなんか知らんけどhtml書いたり画像作ったり(ペイントで(!)とかそんなチマチマした作業しかしてねえマジでJavaどこ行ったよ)
しかしこういった自由度の高いところでなんかすると、目標をセンターに入れてスイッチ目標をセンターに入れてスイッチみたいな、なにこれ意味あんの的ストレス仕事はほとんどなくて、エクセルを毛嫌いする理由がちょっとだけ薄れてまいりました
なんだかんだ言ったところで解決するわけではないから愛せる部分を見つける努力をしていかないと、と思えば思うほどゲンナリしてたけど、無意味ではない便利に使おうと思えばデファクトスタンダードであるこのスプレッドシートも便利でカワイイ存在になるに違いないのだ、そーなのだ〜
(しかしあまりにもドキュメントがなさすぎても後々後悔するんじゃないか今の職場)

エクセルの長所と短所をまとめた記事を読んで、オーウこういうことだよう〜と思った
http://d.hatena.ne.jp/xixiixiiixiv/20120108/1326030658

で、私はあまり技術的専門的見地からあーだこーだ言えない(知識・経験が浅く薄い)ので、個人的にエクセルで絶叫することについて記しておくことにした





【セル結合】
セル結合自体が悪とは言わないが、何かあったときにちょっとコピペしたいなと思っても一発でコピペ出来ないし、レイアウト変更しようと思って書式設定変えたら知らん値がこんにちは、バカみたいに長い表のデータをちまちまいじらないといけないときに無意味なセル結合が間に挟まり視界が!、オートフィルタもなんかおかしい感じにナルンデスケドー、と、非常にやりづらいためなるべくなら使いたくないし使って欲しくもない
レイアウトの都合上問題にならない限りは、セルの行及び列自体のサイズを変えるか、単に列を跨るというだけの問題であるならば複数のセルに色つけちゃえば結合する必要ないよと私は思うのですね
また、なんかしたいからマクロ作ってと言われると、後述しますが私はどんな単純な機能持たせるにしてもセル位置は固定で書くということはしないで変数使ってセル位置を取るんだけど、その際に散々邪魔をしてくれたりとかします
最終的にプリントアウトされることが前提のプロが作ったこだわりレイアウトなモノを今の業務で扱っているけれど、都合悪いから見た目変えずに結合除去して作り変えても私のような素人でさえパッと見寸分違わぬモノはできるから、楽したい系エクセル業務な人はセル結合使わないのが無難では



【オートシェイプ】
今回の業務で初めてオートシェイプにマクロから文字出ししろやと言われてマジでー!となったので一々全部に名前つけた
なんか良い方法無いんですかねこういう場合
オートシェイプに書かれた値は検索対象にならないので、業務系やってたときに規約でオートシェイプ使わないといけない部分なんかは完全に憎悪の対象でした
指摘箇所直ってねーぞと散々突っ込まれた部分もほぼオートシェイプだった
コネクタとか便利なようでめんどくさかった、絡み合ってるやつの修正は地獄の業務であったことを思い出す
今の業務のようにビジュアル的な需要でオートシェイプを使っている場合、グラフや画像に被っているとマウスで選択なんて不可能に近い場面が多々あるし、かと言ってタブキーで選択するときも変な周り方をしたりするので、名前つけて名前で呼ぶのがやはり得策なのだろうか
また、セルの入力値をいじった直後にオートシェイプの入力値をいじってうっかりエンターキーを叩くと非常にガッカリするし、F2叩いても無反応でガッカリするし、入力値を消去したくてうっかりデリートキーを叩こうものなら絶望の彼方からコントロールゼットであります(そこまでショックでもないがストレスはストレスだ)
止むを得ずオートシェイプと向き合わなければならない場合は、書式設定やプロパティ画面でどうにかするべきだととても勉強になりました、というかオートシェイプは概念としては画像なんだと気付いたら、なんとなく合点がいったのでした
ムカつくのは変わらないが



【マクロにおけるセル位地などの取り方のこと】
保守性悪くなるから「Range("C7").Value」とかそういうのを複数に渡って書くのはよせ
などと言い切ってみるけど、実際自分がやっているセル位地の取り方は、レイアウトが変わろうともそうそう変わらないであろう表のタイトル文言などが入力されたセルを上からシークして、行番号列番号をそれぞれ取得するメソッドを一個作っておくというやり方を多く取っているので、それはそれで保守性という意味では問題があるような気もしなくもない
もっといい方法があれば知りたいですね
ループしまくってると処理遅くなるし
セルに名前つけて呼ぶというのは(怖いから)やったことないんだけど、あれはどうなんだ、良いのか、謎である
同様にシート名やシートインデックス、ブック名を直書きして呼ぶのもエラーの原因になるのでできる限りやりたくありません
名称の取得にはゲッタセッタの紛い物のようなクラスを作って置いておくのが常なんだけど、これもプログラム的にもっさり感があるのでマシな方法模索中





やたらエクセルと向き合う仕事が多い状態で1年目を終えたのでエクセルについてもっとブーブー言いたかったけど、眠くなってきたのでもうこの消化不良状態で投げて寝る