Proactive rep! ~担当者によるプロジェクト推進~

第8回 自動化して自分の時間と未来を手に入れる

2008年12月15日

この記事を読むのに必要な時間:およそ 2 分

セルに入れた計算式の一部として実行する,ワークシート関数を作る

ワークシート関数を作るはとても簡単です。Visual Basic Editorでpublicな関数を定義するだけで,SUM関数やVLOOKUP関数といった標準のワークシート関数と全く同じように呼び出すことができるユーザ定義関数が出来上がります。

ユーザ定義関数の引数は,数値,文字列,日付,セル範囲など,Excelのセルそのものやセル内に入力できる型を取ることができます。とくにセル範囲を取るのは強力であり,引数に指定した範囲のデータを列挙して利用する処理を簡単に書くことができます。

例えば引数に指定した範囲のセルの値を繋げる関数の場合,下記のようなコードと利用方法となります。

図2 ワークシート関数を作る(1⁠⁠ コード

図2 ワークシート関数を作る(1) コード

図3 ワークシート関数を作る(2⁠⁠ 関数の挿入ダイアログ

図3 ワークシート関数を作る(2) 関数の挿入ダイアログ

図4 ワークシート関数を作る(3⁠⁠ 関数の引数ダイアログで引数を指定

図4 ワークシート関数を作る(3) 関数の引数ダイアログで引数を指定

図5 ワークシート関数を作る(4⁠⁠ 関数の結果

図5 ワークシート関数を作る(4) 関数の結果

上記のワークシート関数を利用すると,通常,&演算子で一生懸命つながなくてはならないところを,関数一発で済ますことができます。しかも,ワークシート関数を含むブックをExcelのアドオンとして保存すると,自作のワークシート関数ライブラリとして蓄積・配布を行えます。

ワークシート関数とマクロ処理の違い

マクロ処理はバッチ的に呼び出され,セルを操作したりファイルを書きだしたりなどは破壊的な操作を行います。対してワークシート関数では引数に渡されたデータを用いて計算結果を返すだけで,ワークシート関数を設定したセル以外には何も影響を及ぼしません。

ワークシート関数は,ワークシートの自動計算機能によって頻繁に呼び出され,複数の個所で同時に使われるので,破壊的な処理や状態を持つ処理など副作用の出る処理は行わないように注意してください。

外部からExcelを起動して処理を行うには

通常ExcelのAPIはVisual Basic Editorから,つまりExcel VBAから呼び出されます。実はExcelのAPIはExcelの外から呼び出すことができます。

ExcelのAPIはWindowsのCOMとしてWindowsに登録されており,Windows COMにアクセスできる言語ならば,どのような言語からもExcelを使うことができます。VBScript,Windows Scripting Hostからはもちろん,Ruby(標準ライブラリのWin32OLEを用いる⁠⁠,Java(JACOBライブラリを用いる⁠⁠,その他様々な言語から使えます。

参考URL

使い方はとても簡単で,ExcelのAPIとして提供されるクラスを呼び出すだけであり,VBAの知識などはとりたてて必要ありません。

この方法のいいところは,Visual Basicよりも強力な表現力を持った言語のパワーとExcelのパワーを組み合わせて使える事です。

また,最近流行りのLL(Lightweight Language)に手を出したいという人にもお勧めできます。普段抱いているExcelを使う上での問題解決を目的としてLLを使うことができるため,なんとなくLLを勉強するよりモチベーションを保つことができます。

実際に使っていくには

今回はベースとなる考え方を中心に説明しました。実装の詳細についてはまた改めて述べようと思います。

興味をもたれた人はWebで公開している情報を見て,実際に使ってみてください。私がExcelの利用に関する話を行った,第3回1000人スピーカカンファレンスや東京Ruby会議01での資料や動画もWebで見ていただけます。

また,メールやコメントなどで質問をいただければ,できる範囲でご回答します。

みんなを繋ぐ開発・実行プラットフォーム -第3回1000人スピーカカンファレンス
  • 動画
  • 発表資料
    ※発表中の実演に利用したExcel VBAのコードが含まれています。気になる方はマクロを無効にして閲覧してください。
東京Ruby会議01「オフィスで踏み出す Ruby の世界」

著者プロフィール

こしばとしあき

関西出身自宅料理員兼ソフトウェア開発担当者。金融系業務アプリ開発,レガシー移行,Webサービス開発,画面制御基盤開発など様々な開発現場を経て,最近関東に進出。

アジャイル,ライフハック,プロジェクトファシリテーションに強く関心を持ち,講演も行っている。「ペンポッドで世界へミサイル大会」初代チャンプ。

blog『koeだめ』http://d.hatena.ne.jp/bash0C7/
料理blog『kuiだめ』http://kuidame.4038nullpointer.com/

ピックアップ

ヒューマンリソシアのGITサービスが目指す,時代にアジャストするエンジニアチームの作り方

アフターコロナにおけるエンジニアチームの作り方,グローバルな視点でのエンジニア獲得と開発とコミュニケーションの在り方について取り上げます。

LINE テクノロジー&エンジニアリング大全

「LINE DEVELOPER DAY 2020」より,注目すべきテクノロジー,エンジニアリングをピックアップし,詳説インタビューを実施しました。

プロダクト思考で開発が進む「みてね」の今とこれから~みてねの生みの親笠原健治氏,開発マネージャ酒井篤氏が考える,プロダクトとエンジニアリングの素敵な関係

「家族アルバム みてね」を支えるエンジニアリングについて,開発体制やプロダクトの開発・運用,これからのビジョンについて伺いました。

自分の証明と持続的な学びがこれからのDX人材の鍵を握る ~A-BANKが考えるDX人材バンクの在り方とは?

2020年11月にスタートしたA-BANKの人材バンク。評価・育成・紹介の一体型人材紹介から見える,これからの人材エコシステムに迫ります。

APIゲートウェイとサービスメッシュの違い

APIゲートウェイとサービスメッシュの,それぞれの概要とユースケースを紹介し,いずれを使用するかの判断の指針となるチートシートを提供しています。

バックナンバー

No12(2009.04)

今回のSoulHackで主に取りあげるのは,梅田望夫の「ウェブ時代をゆく」という本です。

No11(2009.03)

今回のSoulHackで取りあげるのは,阿部謹也の「世間学への招待」と他1冊の本です。

No10(2009.02)

今回のSoulHackで取りあげるのは,山本七平の「空気の研究」という本です。

No9(2009.01)

今回のSoulHackで取りあげるのは,アーノルド・ミンデルの「紛争の心理学」という本です。

No8(2008.12)

今回のSoulHackで取りあげるのは,河合隼雄氏の「カウンセリングを語る」という本です。

No7(2008.11)

特集:2008年度日本OSS貢献者賞受賞者インタビュー

No6(2008.10)

特集:エンジニアの実践的キャリアアップ思考法

No5(2008.09)

特集:事例でわかる,プロジェクトを失敗させない業務分析のコツ

No4(2008.08)

特集:ゼロからはじめるPSP

No3(2008.07)

特集:今こそ使える! プロトタイピング

No2(2008.06)

特集:「開発スタイル」開発法

No1(2008.05)

特集:エンジニアが身につけたい基本スキル 2008

-->