EXCELのページについて

こちらはEXCELの関数や簡単なVBAについて紹介するページです。

エクセルはよく利用するという方は多いと思いますが、私の知る限り関数はよく使うけど、モジュールまでは…という方も多いようです。

エクセルは関数とVBAを上手く組み合わせると各種DBにも活用できるくらい非常に利便性の高いアプリケーションです。

ここでは、管理人がよく使うパターンを掲載しながら解説していきたいと思います。


EXCEL 関数について

1.関数のサンプル

「関数なんて知っているよ!」という方も結構いらっしゃるかと思いますが、管理人がよく使うパターンを掲載しますので賛否両論あるとは思いますが、もし使えるものであったら使ってみてください。

例:サンプルデータ

行/列ABCD
1番号名前商品名金額
21A君たまご200
32B君味噌300
43C君刺身500
54D君お米2300
65E君300
76A君たまご200
87A君めんたいこ1000
98D君お米2300
109B君刺身500
1110B君お米2300

このサンプルでは、普通の関数ではなく、「配列関数」について解説します。

まず、普通の関数でD列の金額をベースに抽出しようとすると、「=countif(範囲,検索条件)」になりますね。

ただ、これだと「検索条件は○○!!!」という固定値の集計はできますが、「○○以上、○○以下」という抽出ができません。

そこで、ここでは「配列」と呼ばれる概念を利用して、計測してみましょう。

※配列とは…:配列とは、いくつものデータをひとつの箱に収めたものと表現できます。

それでは、上のサンプルを使って、「500円以上、3,000円以下」のデータが何件あるかを調べてみましょう。

@エクセルファイルを開いて、上のデータをコピーして貼り付けてください。
 (「A1」セルから貼り付けてくださいね)

A「E1」セルに、「=COUNT(IF(D2:D11>=500,IF(D2:D11<=3000,D2:D11)))」をコピーして貼り付けてください。
ENTERを押すと「0」になりましたね。

BAで貼り付けたE1セルの「計算式自体をクリック」してください(計算式が表示されている状態です)。
そこで、「Ctrl+Shift+Enter」を押してください。

いかがでしょうか?計算式が「{ =COUNT(IF(D2:D11>=500,IF(D2:D11<=3000,D2:D11))) }」の表示がされて、結果「6」が表示されたと思います。

ポイントは、「Ctrl+Shift+Enter」と、計算式の表示が「 { 」「 } 」で括られることです。

これで配列関数は完成です。

更に応用をしていくと、「500円以上、3,000円以下のうち、B君は何件ある?」というものも解決できます。
計算式は以下のとおりです。

計算式:「=COUNT(IF(D2:D11>=500,IF(D2:D11<=3000,IF(B2:B11="B君",D2:D11))))」

さきほどと同じように、計算式自体をクリックしてから、「Ctrl+Shift+Enter」をすると、「2」という結果が出てきます。

このように、配列関数を使うことで、エクセルのポテンシャルを一気に引き上げられます。

(注意)配列関数は多用すると計算に膨大な時間がかかる場合があるので、あまり細かい条件を付けすぎないように気をつけてください。

EXCEL VBについて

1.VBのルール

ここからはエクセルでいうところの「マクロ」と呼ばれるモジュール作成に関するお話になります。

難しそう…と思われるかもしれませんが、「単純作業を機械(エクセル)がやってくれるので、ひとつずつ、その命令を決めてあげればいいんだ」という程度の考えで結構だと思います。

といっても、どんな世界にもルールがあるように、命令をするときのルールが多少あるのでそこは押さえておきましょう!

■基本-変数の種類(代表的なもの)

integer整数(-32768 〜 32767)
long整数(-2147483648 〜 2147483647)
single単精度(-999999. 〜 999999.)
double倍精度(-9999999999999999. 〜 9999999999999999.)
boolean(BOOL 値 true か false のみ記憶可能)
byte(1 バイト)
string文字(1 〜 32767 文字)
string*文字(1 〜 32767 文字固定長)
currency通貨型(-922,337,203,685,477.5808 〜 922,337,203,685,477.5807)

※ここでは基本的なもののみを記載しています。【浮動小数点】【可変長文字変数】【固定小数点】等については別途記載する予定です。

モジュールを作成するときには、必ず変数を宣言してから記述をしていきます。

■ソースサンプル

Sub データ取得()
Dim a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r As Integer
Dim 日 As Date
ファイル数 = WorksheetFunction.CountA(Range("AX3:AX65536"))
年 = Range("AI31")
If Range("AK31") <= 9 Then
月 = "0" & Range("AK31")
Else: 月 = Range("AK31")
End If
If Range("AM31") <= 9 Then
日 = "0" & Range("AM31")
Else: 日 = Range("AM31")
End If
d = 年 & 月
e = 年 & 月 & 日
・・・・・・・・・

上のサンプルを例にしますと、まず、「Sub」の項目でモジュールの名称を決めます。
次に「Dim (好きな変数名)AS (変数の型)」と記載します。

あとは変数を使いながら、命令文を一行一行書いていくだけです。
※例えば、違うファイルを開くなら、workbooks.open(ファイル名)など…