2010年12月08日

また改訂版

久しぶりの更新がまた自分の本(しかも改訂版)の話で、大変気がとがめるのですが……



とりあえず、今回、VBA・関数を通してこのシリーズ初の1000ページ越え(もちろん、私が書いたものとしては、ということですが)。
しかもお値段は据え置き、という大変お買い得な一冊となっております。(^^;)

Excel 2010で、使用できる関数の数はかなり増えましたが、その多くは単なる改訂や名称変更で、まったくの新関数というのはそれほど多くありません。
特に新関数が多かったのが統計関数で、たとえば私が仕事で文書のサンプルとかを作るときに使いそうな関数は、あまりない気がします。

WORKDAY.INTLとNETWORKDAYS.INTLは、「.INTL」なしの旧関数と同様の機能ですが、休日の指定が結構細かくでき、確実に便利になったと思います。
順位を求めるRANK.EQとRANK.AVGとかは逆に面倒くさくなったなぁ、というのが正直な感想。(^^;)

あと、使い方によっては便利そうだと思ったのがAGGREGATE(集計用の関数)。ただ、エラー値を無視して集計できるのはいいのですが、集計対象として必ずしも配列を指定できるわけではないようで。
もう1つ、個人的な趣味で「面白そう」と思ったのがMODE.MULT(複数の最頻値をすべて返す)ですが……果たしてこの先、実際にこの関数を使う機会は来るのでしょうか?
posted by 土屋和人 at 16:58| Comment(0) | TrackBack(0) | 仕事

2010年09月06日

改訂版

改訂版なので、あえて紹介するほどのものではないとは思いますが……。
内容的にも、VBAに関しては、2010ならではの新機能という部分はそれほど多くはありません。



ただ、Amazonでこの本の詳細ページを見てみたら、新刊なのになぜかコメントが何件か付いている……しかもその日付が2002年とか。
「?」と思ってよく読んでみたら、「Excel VBAパーフェクトマスター」の最初の版(2000/2002対応版)に対するコメントでした。
古いほうの本にもそのコメントが表示されており、要するに、違う本(改訂版でも当然ISBNは異なります)に同じコメントがダブって付いている、というよくわからない状態。

コメントの内容は、基本的には好意的だったと思うのですが、ややネガティブな評価もあり、しかもその点は以降の版では当方も気をつけて直しているところ。
その問題点が最新版でも残ったままだと思われたらいやだな、と考え、Amazonにメールを送って対処をお願いしました。

1回目の問い合わせではあまり要領を得ない返事だったので、改めて詳しく説明したところ、「それではコメントを非掲載にします」との回答。

しばらくして確認してみたところ、確かに改訂版に付いていた旧コメントは消えていたのですが……

……なぜか、古いほうの版のコメントまで消えていました。
うーん、なんだかな〜(^^;)

ちなみに、もうちょっとしたら関数パーフェクトマスターの改訂版も出る予定です。
関数に関しては、2010ならではの新しい情報は結構多いです。
posted by 土屋和人 at 21:09| Comment(0) | TrackBack(0) | 仕事

2010年08月06日

INDEX関数の引数

ヘルプの解説のわかりにくさにおいては、INDEX関数もなかなかのものです。

実はExcel 2010になって、このヘルプ記事の記述が、それ以前とは微妙に変わった部分があります。(体裁とか、結構大きく変わってはいるのですが、1つのポイントとして)
それは、

INDEX(配列,行番号,列番号)

という関数の書式(これは配列形式ですがセル範囲形式でも同様)において、2007までは「行番号」「列番号」のいずれも省略可能とされていたのが、2010では「行番号」は必須で「列番号」は省略可能、という書き方になっていることです。

ただ、そうはいっても2010の解説の中では以前と同様、

配列が 1 行または 1 列のみの場合、それぞれ行番号または列番号を省略することができます。

といった感じで、あたかも行番号が省略できるような表現もされています。

「列番号を省略する」のはわかりますが、この関数で「行番号を省略する」というのは、具体的にはどういう書き方になるのでしょうか?
ちょっと考えると、

=INDEX(A1:C1,,2)

のようなことかな、と思ってしまうのですが、ここで書いたように、実はこの書き方では第二引数を省略したことにはならず、0を指定したと見なされます。
行番号または列番号に0を指定すると、対象が複数行×複数列の配列(セル範囲)であれば、もう一方の引数で指定した列全体または行全体の配列(セル範囲)を返します。
上の例の場合、対象の配列(セル範囲)は1行だけなので、「全体」を取り出しても戻ってくる値は1つだけ。
結果として1つのセルの値だけが取り出せるので、ひょっとしてこの書き方で正解なのかとも思ってしまうのですが……。

「行番号を省略する」というのは、正しくは次のような書き方です。

=INDEX(A1:E1,2)

しかしこれでは「省略されているのは列番号では?」と思ってしまいますよね。
試してみるとわかりますが、これでちゃんと2列目のセル(この場合はB1)の値が戻ります。

「行番号」という名前が付いているため混乱してしまうのですが、このようなケースでは、第二引数で指定される番号の方向は必ずしも「行」とは限らず、配列(範囲)の形に従います。
要するに、対象が一次元配列(方向は問わず)のとき、第二引数では、その配列内での位置を表す番号を指定しているということです。
正直に白状すると、私自身、結構長い間、このあたりのことが理解できていませんでした。

内容的に行番号なのか列番号なのかはさておき、とりあえずINDEX関数の第二引数は省略不可であり、その引数にたまたま「行番号」という名前が付けられている、というわけです。
INDEX関数の仕様自体が変わったわけではありませんが、ヘルプの書式はこのあたりのことを苦慮したうえでの変更だったのでしょう。


ところでINDEX関数のヘルプといえば、「配列形式」と「セル範囲形式」という表現もわかりづらいですね。
「配列形式」のほうが先に説明され、「セル範囲形式」の書式では第四引数「領域番号」についての説明もあるため、一見、後者のほうが特殊な形式なのかとも思ってしまいます。

実際には、第一引数がセル範囲の参照なら「セル範囲形式」となり、配列なら「配列形式」になります。
何が違うのかというと、前者が戻り値としてセル参照を返すの対し、後者は値(または一次元配列)を返す点です。
(戻り値が値とセル参照とではどう異なるのかについてはこちらを参照)

ヘルプをよく読めばちゃんとそう書いてあるのですが、配列形式の使用例として載っているのがセル範囲を参照する例だったり……(^^;)

ともあれ、INDEXの実際の用途としては、「セル範囲形式」で使われているケースのほうが一般的かと思われます。
決して「第四引数を指定した場合はセル範囲形式、そうでなければ配列形式」というわけではないので、誤解なきよう。
(しかし、こういう勘違いをしている人も結構いそうな気がします。……私も以前そうだったので^^;)
posted by 土屋和人 at 07:58| Comment(5) | TrackBack(0) | Excel

2010年07月29日

Wordマクロ本

昨日、打ち合わせで久しぶりに外出し、時間調整のために立ち寄った書店で、こんな本を見つけました。



思わず、「タイミングが悪いなぁ〜」とつぶやいてしまいました。(^^;)

しかも版元は、私も仕事させてもらっている技評さん。
著者は、Wordの本に関していろいろと実績をお持ちの方のようです。

ちょっと立ち読みした限りでは、Word VBAの言語仕様、つまりオブジェクトやメソッドなどについての細かい説明といったものよりも、書名の通り実用的なコードのサンプル紹介が中心で、私のPDF本と完全にかぶる内容ではないと思いましたが……。

「負けた」と思ったのは、このシリーズは組み版までWordでやっているらしいこと。
(しかもあちらはちゃんと印刷して、本にまでなっている!)

「どうせだからPublisherの使い方にも慣れておこう」と思ってPublisherで組んだのですが、Wordだとちょっと面倒くさそうなイメージがあったことも事実で、なんだか自分が「逃げた」ような気分になりました。(^^;)
posted by 土屋和人 at 08:51| Comment(1) | TrackBack(0) | Word

2010年07月24日

「Word VBA」PDF本 全ページ公開

今まで部分的に公開し、皆様のご意見をうかがっていたWord VBAのPDF本ですが、このたび思い切って全ページを無償公開することにしました。

検索などで探してきてくれる人は結構いたのですが、アンケートに答えてくれる人の数はそれほどでもなく、たぶん販売形式にしてもそれほど売れないな、と……(^^;)

それでもこういう情報自体は求められているようなので、ちょうどOffice 2010も出たところで、このまま腐らせてしまうよりは多くの人に見ていただいたほうが、と考えて決断しました。
(アフィリエイトをちょっと絡めてみたところが、せこいといえばせこいのですが)

この本の完成後、ちょっと時間をおいて、仕事の合間に読み返してみたら、いろいろと間違いや問題点も見つかりました。
何しろ客観的な制作協力者である編集者が関与していないので、文章が独りよがりでわかりにくいところも多々あるのではないかと思います。
また、Word VBAの内容自体について、私が勘違いしている部分もまだ結構ありそうな気がします。

そうした点も含めて公開してしまうのは怖い気もしますが、一般的な出版物と違ってこちらは修正が利くので(^^;)、そういう意味では少し気が楽だったりもします。
この本に関するご感想やご意見、ご質問などがありましたら、ぜひWebサイトの送信フォームよりお送りください。

※アンケートにご協力いただいた皆様、誠にありがとうございました。
posted by 土屋和人 at 10:38| Comment(7) | TrackBack(0) | Word

2010年07月01日

2010のスマートタグ

私がここでこんなことを書いたから、というわけでは絶対にないでしょうが(^^;)、Excel(Office) 2010では、とうとうスマートタグはサポートされなくなったようです。

どんなに影が薄くなっても、こちらはOfficeアシスタントなどとは違って実務に関わる機能であり、使っている人がいる可能性がある限りなくなることはないだろうと思っていたので、正直ちょっと驚きました。
(そして、正直ちょっと参りました……仕事の関係で)

もっとも、正確に言うと、これまでスマートタグという形で利用されていた機能が、まったく使えなくなったというわけではありません。
カスタムスマートタグとして設定していた機能は、2010では、セルを右クリックして出てくるショートカットメニューから実行することができます。

ただ、スマートタグであれば、登録されたキーワードがセルに入力された際、セルの隅に印を出して、そこから「何らかの機能が実行できる」ということを示します。
それを見て初めて、ユーザーが「できる」ことに気が付くケースも多かったと思います。

ところが、これがショートカットメニューの中に埋められてしまうと、あらかじめ「できる」ことがわかっている機能しか、そこから実行しよう、ということにはなりません。

まあ、いずれにしてもそういうニーズがない(少ない)からこのように変更された、ということなのでしょうが……
私自身もほとんど使ってなかったとはいえ、Officeアシスタントや日本語音声出力と同様、ひょっとしたら何かに便利に使えたかも……という思いもあり(^^;)、いずれにせよ機能自体がなくなってしまうというのはさびしいものです。
それでもOfficeアシスタントに比べたら、機能を実行する方法が残されている分だけ、まだましなのかもしれませんが。
posted by 土屋和人 at 18:41| Comment(0) | TrackBack(0) | Excel

2010年05月08日

Word VBAのテキスト処理

Wordは、Excelよりもよく使っていますが、その用途も、利用する機能も、私の場合、非常に限られています。
とりあえず、Wordを使って「完成品」を作るということはほとんどありません。

通常の「完成品」は、DTPソフトによるレイアウトデータ(ごくまれにWeb用のHTMLデータ)であり、Wordではテキストを書くことだけが目的です。
作業しやすいようにページ設定を少し変更することはありますが、Wordの機能だけで凝ったレイアウトの文書を作るといった使い方はまずしません。

文章を書くだけならWordではなくテキストエディタなどでもいいのですが、編集者などとのやり取りで、文字の書式を一部変えたり、画像を貼り付けたり、コメントを付けたりといった操作が必要になる場合もあります。

また、自分で書くだけでなく、他の人が書いた原稿を編集する仕事もあります。
人から受け取る原稿も、最近はWordのドキュメントである場合がほとんどです。

編集の作業というのは、基本的には、文章を目で追っていって、問題のある部分を地道に修正していくものです。
ただ、用語の統一など、機械的に処理してしまえる作業もあり、こういう部分でWordのマクロ機能が利用できます。

もちろん、テキストエディタにもマクロ機能を備えているものは数多くあり、Wordよりも高速かつ効率的な処理が可能なソフトもあるでしょう。

Word VBAを使ったテキスト処理で便利だと思うのが、テキストのWord単位……という書き方は紛らわしいですね(^^;)、単語単位での処理機能です。

日本語の場合は英単語のように間にスペースが入らないので、ひらがな、カタカナ、漢字といった文字種の区切りでしか「単語」が識別できないのでは、と思いこんでいたのですが、実際には

名探偵登場シーンで豚カツを食べ終えた

という文章(変な例文^^;)を

名探偵|登場|シーン|で|豚カツ|を|食べ終えた

のように、ある程度正確に単語単位で区切ってくれます。

もちろん、「豚カツ」ではなく「串カツ」の場合は「串」と「カツ」が別単語と見なされるなど、100パーセント正確に単語を判断してくれるわけではありません。
ただ、その限界を踏まえたうえで、それが問題にならないような処理であれば、応用できる処理の種類はいろいろとあると思います。

※5/9修正
本当はこの後に単語単位での処理機能の利用法の例があったのですが、あまり適切な例ではなさそうな気がしてきたので、カットしました。
また何かいい例を思いついたら再修正します。
posted by 土屋和人 at 17:22| Comment(0) | TrackBack(0) | Word

2010年05月03日

Wordマクロの保存場所

マクロには、大きく分けて2種類あります。

……といっても、記録マクロと記述マクロとか、自動実行マクロとそれ以外とか、いろんな「大きく分け」方があるわけですが(^^;)、ここでは

・特定のドキュメントの中だけで使用することを想定したマクロ
・複数のドキュメントでの汎用的な作業で使うことを想定したマクロ

の2つに分けて考えてみます。

Excelのマクロの場合、前者のようなマクロは作業対象のブックそのものに、後者のようなマクロは「個人用マクロブック」に保存します。
どちらもそれなりに利用されているのでしょうが、やはり割合でいったら前者のほうが多いのではないかと思います。
Excelの場合、設計されたフォーマット上での定型的な作業が主だと思われるからです。

一方、Wordの場合、マクロ記録機能の保存先としては、作業中の文書ではなく「すべての文書」(Normal.dotまたはNormal.dotm)がデフォルトです。
Wordでも定型フォーマットを使用することはありますが、ある程度形が出来上がってしまったら、そこから先、マクロを必要とするほど複雑な作業はそれほど多くはないでしょう。

Excelのマクロのやり方に慣れていると、Wordのマクロも、ついそれぞれの文書に保存するという前提で考えてしまいます。
また、標準テンプレートにマクロを保存するということ自体になんとなく抵抗も感じてしまうのですが、このあたりは頭を切り替える必要がありそうです。

ExcelもWordも、マクロ(VBA)によってそれぞれ固有の機能を追加することができますが、Wordのマクロのほうがより汎用性のある「機能」の追加を想定されていることがわかります。
ただ、Wordはそれ自体多機能ですから、誰にとってもあったほうが便利な機能であれば、大抵もともと備わっています。
したがって、「汎用的な機能」とはいっても、その汎用性は、多くの場合、ユーザーそれぞれの業務における汎用性です。

いくつもの文書について、機械的な操作を毎日手作業で行っているケースというのは、実は意外に多いのではないかと考えています。
当然、こういった作業は、マクロ(VBA)を使うことで大幅に効率化できます。
Excel VBAに比べてあまり使われていない印象があるWord VBAですが、それは決して「使えないから」ではなく、あまり情報もないため、その「使いこなしのポイントが理解されていないから」ではないか……と思っているのですが、いかがでしょうか。

※追記 よろしければ、下記URLからWord VBA本についてのアンケートにご協力ください。
http://www.clayhouse.jp/pbooks/wordvba.htm

※7/29追記 アンケートは終了しました。ご協力ありがとうございました。
posted by 土屋和人 at 10:41| Comment(0) | TrackBack(0) | Word

2010年04月29日

生年月日を加味した五十音順出席番号

このところExcelから離れていたので、リハビリの意味も込めて、ちょっと面倒な数式クイズを考えてみました。

【数式クイズ】難易度:★★★★☆
以前に出題した問題と同じく、カタカナの名簿から五十音順の出席番号を自動表示する数式です。
同姓同名の生徒がいた場合、前回の問題では先(上の行)に登場するほど小さい番号にしましたが、今回は生まれた日が早いほど小さい番号、ということにします。

quiz41.jpg

生徒の名前の読みがなはA2:A8、その生年月日はB2:B8のセル範囲に入力されています。
これらをもとに、五十音順の出席番号を同じ行のC列のセルに表示させます。

まずC2セルに数式を入力し、この数式をC8セルまでコピーします。
C2セルにはどのような数式を入力すればよいでしょうか?

【解答例】
posted by 土屋和人 at 10:28| Comment(0) | TrackBack(0) | Excelクイズ

2010年04月17日

延長

約2カ月で600ページ超の書籍×2の編集・制作というのはさすがに無理があると気づいていただけたのか、どうやらスケジュールが延びることになりそうです(もともと原稿が遅れていたのですが)。
もっとも、その分こちらに制作費が入るのも先になるわけで、それはそれでかなり苦しい状況だったりします。(^^;)

それで、というわけではありませんが、以前作りかけて途中になっていたWord VBA本の紹介ページをとりあえず完成させて、私のWebサイトにアップしました。
http://www.clayhouse.jp/pbooks/wordvba.htm

この先どれほどこれに時間を割けるかわからないし、本当に売れるのかどうかもよくわからないので、今後の展開はまだ未知数ですが。(^^;)
posted by 土屋和人 at 10:39| Comment(0) | TrackBack(0) | 日常