EXCELのページについて
こちらはEXCELの関数や簡単なVBAについて紹介するページです。
エクセルはよく利用するという方は多いと思いますが、私の知る限り関数はよく使うけど、モジュールまでは…という方も多いようです。
エクセルは関数とVBAを上手く組み合わせると各種DBにも活用できるくらい非常に利便性の高いアプリケーションです。
ここでは、管理人がよく使うパターンを掲載しながら解説していきたいと思います。
EXCEL 関数について
1.関数のサンプル
「関数なんて知っているよ!」という方も結構いらっしゃるかと思いますが、管理人がよく使うパターンを掲載しますので賛否両論あるとは思いますが、もし使えるものであったら使ってみてください。
例:サンプルデータ
行/列 A B C D
1 番号 名前 商品名 金額
2 1 A君 たまご 200
3 2 B君 味噌 300
4 3 C君 刺身 500
5 4 D君 お米 2300
6 5 E君 魚 300
7 6 A君 たまご 200
8 7 A君 めんたいこ 1000
9 8 D君 お米 2300
10 9 B君 刺身 500
11 10 B君 お米 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(ファイル名)など…