多趣味まるの日常

跡取り息子を辞めたスーパー多趣味人間の日常や便利アイテムの紹介

エクセルをC#で動かす

おはようございます。まるです。

 

 

みなさんエクセルを仕事とかで使ったりしてますか?

 

 

使っている人ならVBAという言葉を知っている人もいるかもしれません。

 

 

マクロと言った方がイメージしやすいでしょうか。

 

 

知らない人の方が多いと思いますのでちょこっと説明すると、VBAというのはエクセルをプログラミング言語で操作するツールと思っていただければ(今は)よいです。

 

 

 

エクセルは標準でVBAが使えるようになっていて、誰でも使うことができます。

 

 

エクセルにも関数があるのでなんでわざわざVBAを使うの?と疑問に思うかもしれません。

 

 

ごくごく一般的な事務ならば関数で十分です。エクセルの関数はめっちゃ優秀です。

 

 

VBAは繰り返し行う単純作業で、かつエクセル関数では難しい。または手数がかかる場合に威力を発揮します。

 

 

例えば、月末書類でシートを展開。名前順、または売り上げ順で並べ替えて売り上げ比率を計算。それらをまとめて上司に報告。

 

 

といった、毎月やることで同じ手順なんだけど範囲を選択したり、売り上げに応じて使う関数が変わったり。

 

 

そういったことをボタン一つで全部やってくれるもの。それがVBAで作るいわゆるマクロというものです。

 

 

前置きが長くなりましたがそれをC#で作ることができるというお話です。

 

 

VBAVBという言語の知識が必要で、普段C#を使い慣れている私に取りましては新たにVBを勉強するのは面倒です。

 

 

(これがPythonとかなら話はちょっと変わるんですが…)

 

 

そこでC#で書けてしまえば楽じゃない?と思って調べてみると、なんと!普段使い慣れてるVisual Studioの中にVSTOというものがあることが判明!

 

 

それを使えばC#でエクセルマクロを作ることが出来るのです!

 

 

 

そもそもなんでエクセルのマクロを組もうかと思ったかというと、ある知り合いから為替のデータを取りたいんだけど条件が複雑でエクセル関数では無理!なんとかならない?!と相談を受けたことが始まりです。

 

 

 

言われたのが先週の土曜日、そこから調べてエクセル2019を購入して組み始めたのが昨日。そして完成したのも昨日!

 

 

C#最高!

 

 

VBを勉強する手間が省けて非常にラッキーでしたし楽でした。

 

 

C#の勉強にもなって一石三鳥だなーと。

 

 

毎日おかげさまで充実しております。

 

 

 

ちなみにどういう処理をしたかというと、7000行程あるデータから連続でマイナスが続いた時に、その回数とマイナスの合計を別列のマイナスの始まり行に計算、マイナスのセルを青色に変えて、0のセルは緑に変える。

 

 

こんな感じのことをやりました。

 

 

7000行あるのを手入力はきついですよね汗

 

彼は手入力したらしいですが…

 

 

私は半日でマクロ組めましたので今後一切手入力は必要ありません。

 

 

というか手入力一回もしてないか笑

 

 

プログラミングを勉強し始めてからほんとに色々な学びがあります。

 

 

学んで損は絶対ありません。みんなも始めません??笑

 

 

では出社の時間なのでまた!