- ワークシート関数を自作する方法
Excelを使う時、ワークシート関数を使っていますか?
一番よく使われるのはSUM()関数でしょう、きっと
オートSUMというボタンもあるので、ワークシート関数ナニソレ?とおっしゃる方でも、SUM()関数ぐらいは使ったことがある、もしくは知っている方が多いかも知れませんね
今回は少しだけ難しいです
テーマはワークシート関数ですが、後半はExcel VBAが出て来ます
Excel VBAを知らないと難しいかも知れません、、、、
しかしっ!!
プログラム言語と言っても、所詮は英単語です!!!
読めばなんとかなります!!
もしも、あなたが
- Excel VBAなんて知らねーーー
- プログラミングの経験も一切無い!
- でもプログラミングに興味を持っている
のであれば、この記事でプログラミングの便利さを少し知ってもらえるかも知れません
Contents
表を作る時、ワークシート関数は便利ですよね
例えばこんな成績表を作るとしたら、あなたならどうしますか?
- 名前や点数は手入力
- ワークシート関数を組み込む場所
- 各教科合計
- 個人合計
- 評価
- 評価の判定方法
評価 基準点 評価 80点以上 A 60点~79点 B 40点~59点 C 20点~39点 D 0点~19点 E
各教科合計と個人合計の出し方はすぐ分かると思います
今回の表では使っていませんが、平均や最大値、最小値があっても分かりますよね?
そうです、合計はSUM()関数を使います
今回の表では使っていませんが、平均・最大値・最小値を出すのであれば、AVERAGE()関数・MAX()関数・MIN()関数を使います
セル番地 | 入力すべき内容 |
---|---|
B13 | =SUM(B3:B12) |
D13 | =SUM(D3:D12) |
F13 | =SUM(F3:F12) |
H13 | =SUM(H3:H12) |
J13 | =SUM(J3:J12) |
セル番地 | 入力すべき内容 |
---|---|
L3 | =SUM(B3:J3) |
L4 | =SUM(B4:J4) |
L5 | =SUM(B5:J5) |
L6 | =SUM(B6:J6) |
L7 | =SUM(B7:J7) |
L8 | =SUM(B8:J8) |
L9 | =SUM(B9:J9) |
L10 | =SUM(B10:J10) |
L11 | =SUM(B11:J11) |
L12 | =SUM(B12:J12) |
ワークシートは面倒
あなたなら、評価の文字(AとかBとか)をどうやって判断してどうやって表示しますか?
手入力なんて面倒なので、ここにワークシート関数を使い、左隣の点数を参照して評価するようにしましょう
※評価の判定方法は前章参照
↓の図での赤字の部分
僕が書いたワークシート関数は以下に掲載します
分からない方はちょっとだけでも考えてからご覧ください
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
考えましたか?
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
え? よく分からない・・・・?
じゃ、ヒント出しましょう
IF()関数を使いましょう
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
どうです?
分かりました?
え!???
まだ考えてない!?
って言うか、考えるつもり無いって!?
考えたよーって方はお進みください
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
↓
じゃ、私が書いたものをお見せします
セル番地 | 入力すべき内容 |
---|---|
C3セル | =IF(B3>=80,”A”,IF(B3>=60,”B”,IF(B3>=40,”C”,IF(B3>=20,”D”,”E”)))) |
C4セル | =IF(B4>=80,”A”,IF(B4>=60,”B”,IF(B4>=40,”C”,IF(B4>=20,”D”,”E”)))) |
C5セル | =IF(B5>=80,”A”,IF(B5>=60,”B”,IF(B5>=40,”C”,IF(B5>=20,”D”,”E”)))) |
※これら以外のセルの内容は省略しますが、書く内容は同じです
単にIF()関数を組み合わせて使っているだけです
ね、簡単でしょ?
(IF()関数を知っているならね)
でも、面倒じゃないですか?
ワークシート関数って簡単で便利だけど、ちょっと複雑なことをしようと思うと長くなって見づらいし面倒だし・・・・
書きづらい&読みづらいっていうイメージを僕は持っています
評価としてA
B
C
D
E
っていう文字を出すのって特に難しい処理じゃないけど、ワークシート関数は結構長いですよね
一つのセルは小さいのに、こんな長い式を書くのは面倒
後で評価の手段を変更するとなったらとても面倒だし
しかも、使っているセル全てに対して修正しないといけないし
ワークシート関数を使っているセルって、パッと一目では分からないんですよね
なので僕はこのワークシート関数がそんなに好きじゃないんです
ワークシート関数が面倒なら、じゃ、何を使うんだよ!
はい、自作のワークシート関数です
ここからはExcel VBAの知識が無いと分からないと思います
Excel VBAに関してはこれ一冊でいいと思います
ちょっと分厚いんですけど、この一冊をやっておけば、実用レベルのVBAの使い方で困ることは無いでしょう
独学をやってみたけど、分からなかった・・・、挫折した・・・、というような方はレッスンしますよ!
まずは無料体験からどうぞ
ワークシート関数を自作しよう!!!
ワークシート関数って自作できるんですよ
ユーザー定義関数って言うらしい
名前はどうでもいいですけど
作り方を説明しましょう
作り方の概要
- VBA画面を表示(Alt + F11)します
- Functionプロシージャを書きます
例えば、こんな感じPublic Function MYRATING(score As Long) As String End Function
- ワークシート画面に戻ります
- セルに
=MYRATING()
と入力します
セルで=
を打てばMYRATING
が出て来るはず
出てこなかったら何かが間違っています
では、実際に作る手順をお見せします
ワークシートはこれを使います
今は評価の欄には何も書かれていません
➊ VBA画面を表示(Alt + F11)します
上図のように、VBAProjectが2つあります
今回はsample.xlsmというファイルが対象です
VBAProject (sample.xlsm)
選択右クリック
-挿入(N)
-標準モジュール(M)
➋ Functionプロシージャを書きます
Option Explicit Public Function MYRATING(score As Long) As String Dim ret As String Select Case score Case 0 To 19 ret = "不可" Case 20 To 39 ret = "可" Case 40 To 59 ret = "普通" Case 60 To 79 ret = "良" Case 80 To 100 ret = "優良" End Select MYRATING = ret End Function
➌ ワークシート画面に戻ります
こっちの画面に戻ります
➍ セルに=MYRATING()
と入力します
評価のセル(上図ではC3セル)に=
とか=m
とか=my
とか打ってみましょう
➋で書いたMYRATINGを選択することができますね
=MYRATING(B3)
と書いたらEnterキーで確定しましょう
こんな感じでキー操作するといいよ
=my
と入力- TABキー
- ←キー
- Enterキー
ワークシート関数名はフルフルに自力で打たなくても、TABキー押せばそれが選択された状態になるよ
関数名が現れたら、TABキー押せばいいってのを知らない人が意外と多い
➎ あとはコピペ
C3セルを他の評価のセルにコピペすればOKです!
オマケ:ワークシート関数でもちょっと融通を効かせるには
この記事では説明しませんが、基準値や評価の文字を変更するには下図のように別表から取得する方法もあります
興味ある方はご覧ください
=IF(B3>=B$22,$A$22,IF(B3>=B$21,$A$21,IF(B3>=B$20,$A$20,IF(B3>=B$19,$A$19,
今回使ったファイル
この記事で使用したファイルをzipにして置いておきます
解凍したら、sample.xls_
というファイルが出来ます
拡張子,xls_
を.xlsm
に変更すればExcelマクロファイルとして使用できます
興味のある方は自由にダウンロードして、ワークシート関数やVBAコードをご参照ください
ダウンロードおよび実行する場合、各自の自己責任でご利用ください。
このファイルが原因で、データ損失・コンピュータウィルスやランサムウェアその類のソフトに感染等しても、当方では一切の責任を負いません。
さいごに、
ワークシート関数は便利なんですよね
=SUM(A1:A10)
みたいな感じで使う分には短いしラクチンだしね
ワークシート関数を組み合わせて使えば込み入ったこともできます
けど、ワークシート関数を組み合わせるとなると長く書く必要があるので、書きづらいしよみづらい
しかもっ!!!
セルにワークシート関数が入っているかどうかなんて分からないので、間違えて消しちゃうこともありますしね
苦労して苦労して組んだワークシート関数を消しちゃった時の虚無感と言ったら・・・
今回のように自作のワークシート関数であれば、セルに入力している=MYRATING(B9)
を消してしまうことはあるものの、処理本体のソースコード自体は不意に消してしまうことは無いですし
Excel VBAを覚える必要はあるものの、一回覚えてしまえばこの先ずーーーーっとラクチンになりますので、Excel VBAを覚えることをオススメしますよ、ホントに!
ちなみにですが、
Excel VBAなんて分からなくても、自動記録を使えば結構なんとかなったりするんですけどね
自動記録の事は、ウチのプログラミングレッスンの無料体験でお教えしていますよ
興味のある方はぜひ!
プログラミング のレッスンに興味がある方、レッスン内容を聞いてみたい方、なんなりとお問い合わせください。
無料体験レッスンもありますのでお気軽にどうぞ!!!