TOPページ


情報化社会ってとっくに終わってるよね?話変わるけど、・・
Excelの関数って作るものでしょ・・・みたいな感じになっている今日この頃


この情報の荒海の中、このページに辿り着いた奇特な方!ようこそいらっしゃいました。
NaviatorEnterprise代表の☆です。

情報と言えば、つくづく奥深いなぁ。。と思うわけで。。
今自分が通っている会社で、D&Iのワークショップというものが行われました。
ワークショップ?働くお店?ってなんだよ?・・って感じですが。

D&Iは個人的には懐疑的な印象が強いのですが(社会風刺、飲食チェーン店のワンオペやD&Iにみる・・参照)、
まぁ会社が重要視しているらしいし、ずっとパソコンに向かってエクセルやらマクロやら黙々とやってるので気分転換にはなるので、気楽に参加したのでした。

会社も何とか働きやすい環境を作って、効率化と生産性を高めたい。って事でD&Iを重視してるのは理解できますが、多様性云々の前に、このインフォメーションオーバーロードな状態を先ずは認識しようよ。と痛切に思うわけです。
人々のライフスタイルや考え方などが多種多様性になっているのも当然で、世の中は情報過多です。情報が多すぎる。処理できません!な状況なわけです。情報化社会など昔の話です。誰が見ても飽和状態です。

そんな中、あらゆる分野で一つ一つの物事を精査するなど、今の時代到底不可能なわけで・・・・。そうすると、人々のスコトーマ、つまり無意識の思い込みによるフィルターは益々強くなります。
そうしないと脳がオーバーロードを起こすので、多くの情報は無意識に淘汰されていく。

たまに登録している経営コンサルのメルマガの無料オンラインセミナーを見たりするのですが、そこでは、溢れる情報で人々の注意力は散漫になり、情報のみでは価値がなくなる。というか埋もれていく。
情報が飽和した今の時代、希少な価値となるのは、「人々の注目を集める」ことだと言うのです。既に台頭してきたユーチューバーなどが良い例です。
いくら素晴らしい情報でも、人々の目に触れなければ・・・目に触れてもスコトーマで弾かれて認識されなければ・・・・価値がない。何も起こらない。

「注目される」事が第一歩であり、それはもの凄く貴重なリソースだというのは至極当然とも言えます。

話は私の仕事に戻りますが、私は昔ある通信用ソフトのプログラミング言語を独学で覚えました。
きっかけは、その通信ソフトを使って、ある人と今で言うチャットをしていたのですが、その時マクロの話になり、「マクロ」という言葉そのものを私が知らなかったので、「そんな事も知らないのか?」と馬鹿にされた事でした。
そのソフトのマクロのヘルプを見ても初めはチンプンカンプンでしたが、不思議と見ることを止めなかったのを覚えています。するとこれも不思議なのですが、丸一日くらい経過した頃、たった一か所だけ理解できる所が出てくる。
そして数時間後にまた一か所・・・。そうすると後は早かったです。

VBA教室か何かの「マクロが独学で習得できるわけないじゃないか!」みたいなキャッチコピーを見たことがありますが、じゃぁ自分や会社内の人達のニーズに応えるマクロを作ってきた俺は何?と思うのです・・・。
意志というか覚悟というか・・・強烈なキッカケというか・・・プロが教えてもダメな人はダメだろ(人がダメな訳じゃなく必要に迫られていない)と思うのですがw


独学でも気づけば、自然とこんな感じで書けるように・・・
習慣ですね・・
(しかしもっと上手い書き方もあるみたい^^;奥深い)


そして、その時の職場で事務仕事にExcelを使っていたので、そこにもマクロがある事を知り、基本的な考え方は同じなのでスムーズに習得していき、仕事にも役立てました。
その後幾つか職場を変わりましたが、行く先々でデスクワークの時はExcelは大抵どこでも使うので自然とスキルは徐々にでも上がっていったわけです。
しかしながら、如何せん独学なので、プロのSEやプログラマーの世界は知りません。規模の大きなソフトを作るためにチームを組む事も無いので、オブジェクト指向の概念やクラスの継承と言ったものとは未だに縁遠いのが現状です。

以前、勤めていた会社の社長から「お前は金になる。しかし大手では相手にされない」と言われた事があります。

その時は、自分は独学なので基本がしっかり身についてない部分があることは否めないしスキルもプロに比べれば恐らく全然違うんだろうな。という感じでしたが・・
まぁ勿論それもあるでしょうが、その社長が言いたかったのは、「金になる」と言うのはニッチなニーズにも素早く応えられる。という意味だったのかとも今は思います。

そしてそのニッチというのは、D&Iや情報過多による多様性の話にも通じるところがあるのでは?とも。

その社長が居た会社と、今通っているところは同じ業種なのですが、VBAが出来れば便利だろう。と言うことが多くあります。
私が来る前は外注していたそうですが、データ処理はほぼ、私に丸投げです^^;w
その道の専門家は揃っていますが、同時にプログラミングコードを書ける人は居ません。
プロのプログラマーがこの業界に居ない(と言っても良い。多分w)のには理由があり、それは要望がニッチすぎる。という点です。

私も、ずっとVBE画面でコードを書いたりデバック(動作テスト)してる訳ではなく、どちらかと言うと、ふつーにExcelいじったり、他のソフトでプログラムとは関係ない仕事をする事が多かったりします。
マクロを一つ作っても、少し動かしたらHDDの肥やしと化しているファイルは多くあります。手作業よりはマシだったね。くらいのレベルのものは多い。
なのでマクロを作るか否か?の見極めが結構大事だったりします。汎用性が高すぎるものは標準関数なんかで整備されますしね。。。

今いる職場では前の会社より規模が大きいので、自分のマクロのスキルが前より役に立つかな?と思ったのですが、思ったよりは活躍の場は少ない。
どんな事が出来るのか。認識されていないのも大きい。未だに初めてマクロの動作を見た人が「おおおお!!」とは反応するのには正直、「そんなに驚かなくてもww」と思いますね。
まさに、注目されていなければ、価値が無い。何も起こらない。・・・・のと同じです・・・・
今は正社員でもないし、それは自分の収入面にもダイレクトに影響します;;。ぶっちゃけガンガンとコード書いて、世の中の人の役に立って、ガンガン稼ぎたいがな!
D&I的に俺の働き方は、完全に間違えている!契約形態も間違えてる!世の中この業界のようなニッチな市場はあるはずだ!と思うのです。


最後に一例を挙げて終わりたいと思います。

ExcelにはVLOOKUPという関数があります。範囲指定の左の列を検索し、検索値に一致する行のn列目を戻り値として返すと言うものです。詳しくはググれば幾らでも丁寧親切に説明してくれているサイトがあるので、そちらをご覧頂ければと思います。
そしてこの関数はデータを一気に処理するには必須の関数であり、慣れれば使い勝手が良く大変重宝するものなので、これを乱用する人は多いかも知れません。
さらに、この関数を解説したサイトを色々見ていると、複数条件の時はどうする。とか関数は組み合わせて使う、とか・・・ニッチなニーズに対応した様々な例が紹介されている事がわかります。
勿論、その通りの方法を使うこともあるのですが・・・

めんどくせーな。作った方が早いわ!!!

・・・と関数を自作する事も多く、作った後で同じ動きの関数が存在する事に気づく事もあります^^;
(ご存知の方も多いと思いますが、Excelでは関数を自作できます。)

とくにVLOOKUPは使い込んでいけば、様々な弱点や期待と違う動きをしてしまうケースが発生するので、その時々で同じような動きをするものを自作しカスタマイズすることが多いのです。
個人的に検索手法は、ほぼ100%完全一致で使います。そんなケースばかりです。業種や業務にもよるのかも知れませんが・・。
で、VBA的にVLOOKUPと同じ動作のものを自作すると↓のようになります。案外シンプルです。
ここでは、ザクっとイメージだけ伝える感じで説明します。

Function VLOOKUP_VBA(検索値, 範囲)

 xRange = 範囲.Rows.Count
 yRange = 範囲.Columns.Count

 For x = 1 To xRange
   If 範囲(x, 1) = 検索値 Then
     VLOOKUP_VBA = 範囲(x, yRange)
     Exit Function
   End If
 Next

End Function

・VLOOKUP_VBAと言う関数を作り、引数()に入れる値として、検索値と範囲を指定します。
・範囲で指定した行の数と、列の数を把握し、行の数だけループさせて検索値と範囲の左端の値と等しくなるかを判定します。
・値が等しければ、その行の範囲の右端の値を返します。

VLOOKUPには列番号を指定する引数があると思いますが、ここではそれを省いています。VLOOKUPの欠点(他の関数でもそうですが)として、関数をセットした後に、例えば別の人が同じファイルを作業して範囲の中に列を増やしたり、逆に減らしたりすると列番号がズレます。
そうすると、エラーになったり意図しない違う列の値が返ってきたりします。範囲の右端の値にする事で、一列目と最後の列を変更しない限り正常に動作します。

このベースが理解できれば、条件が増えたらIFを増やして対応したり、範囲(x, 1)と範囲(x, yRange)の位置を入れ替えれば、検索する列を右端、戻り値を左端の列にする事もできます。
エラーや0値が戻るのを避けたければ、VLOOKUP_VBA ="" を適切なところに追記したり、演算誤差によってIFでFalseになりエラーが戻ってしまうVLOOKUP関数の弱点を補いたければ、
範囲(x, 1) = 検索値 部分の両辺に、適当な桁数でRound関数で処理すれば回避できたりもします。


Excelの関数って作るものでしょ とは乱暴ですが、それぞれ一長一短あるので、標準の関数と臨機応変に使い分けたいものですね。

Excelの関数って作るものでしょ その2
>

Naviator 企画
INFO:NaviatorEnterprise.com