VBAを使わなくても結構色々できちゃう、Excel関数を集めてみました

VBAを使わなくても結構色々できちゃう、Excel関数を集めてみました

今までVBAについての記事を書いてきましたが、Excelはシート上だけで数式を入力して使える関数というものを持っていて、それだけでもかなり使えることも多いので、今回はそちらの解説をしてみることにしました。


例えば

A1セルに「1」っていう数字が入ってたらA2セルに「あ」っていう文字を入れたいとします。

VBAだったら

前こんなの書きましたが、これを参考にVisualBasicEditor画面の適用したいシートのコード画面に

Private Sub Worksheet_Change(ByVal Target As Range) 'シートに変更があったとき
  If Target.Column = 1 And Target.Row = 1 Then '変更されたセルがA1だったら
    If Range("A1") = 1 Then 'A1セルが1なら
      Range("A2") = "あ"
    Else 'それ以外だったら
      Range("A2").ClearContents 'クリア
    End If
  End If
End Sub

って書けばできます。A1が1じゃなかった場合、A2をクリアしなきゃいけないってのがちょっと面倒ですよねー。でもExcel関数を使うともっと簡単!

Excel関数を使えば

A2セルに、

=IF(A1=1,"あ","")

って書いちゃえば終了なんです!どうでしょう、全然違うと思いませんか?(説明はのちほど)

目的によって使い分けよう

VBAはすごく便利ですが、シート上で関数を使ったほうが楽な場合もたくさんあります。こっちは関数で、こっちはVBAで…っていう使い分けが出来るととっても楽なので、是非覚えてみてくださいー!

Excel関数とは

Excelのヘルプから引用すると、

関数とはあらかじめ定義された数式のことで、引数と呼ばれる特定の値を使い、特定の順序(構造)に従って計算を行います。関数を使用すると、単純な計算だけでなく複雑な計算も行うことができます。

と書いてあります。「=SUM(A1:A5)」のような、SUM関数(範囲内の合計)が一番よく使われているんじゃないでしょうか。

オートフィルと絶対参照

数値や、日付などが書かれたセルの右下をドラッグすると、予測された内容がドラッグされたセルに入るという機能ですが、関数の数式にも適用できます。

131007-1

自動で内容を変えてくれてとってもお利口さんなんですが、変えてほしくない部分もありますよね。

131007-2

そういう場合は変えてほしくないアルファベット(または数値)の前に「$」をつけます。これが絶対参照と呼ばれるもので、オートフィル機能を使っても内容が変化しません。

計算する関数

=SUM(範囲) '範囲内の合計を求める
=AVERAGEA(範囲) '範囲内の平均を求める
=ROUND(数値,桁数) '指定した桁数(小数点以下)で四捨五入する
=ROUNDUP(数値,桁数) '指定した桁数(小数点以下)で切り上げる
=ROUNDDOWN(数値,桁数) '指定した桁数(小数点以下)で切り捨てる
=MOD(数値,除数) '数値÷除数の余りを求める
=ABS(数値) '数値の絶対値(+-を除いた数)を返す
=SQRT(数値) '平方根(√)を返す
=STDEVP(範囲) '標準偏差を返す
=DATEDIF(開始日,終了日,単位) '期間内の満数を求める・単位は年:"Y",月:"M",日:"D"

各引数をセルで指定したり、関数を重ねて使うことが出来ます。例えば、このように。

=ROUND(AVERAGEA(A1:A3),B1)

こう書くと、A1:A3の範囲の平均を 、B1セルに書かれた数値の桁数(小数点以下)で四捨五入する、という式になります。このように使うことでセルの値を変えると自動的に計算結果も変わる、ということが出来てとても便利です。

もちろんこれはほんの一部で、便利な関数はたくさんありますので調べてみてくださいー!

条件判定して使う関数

書き方

=IF(条件式,真,偽)

条件式が満たされている場合は真を表示し、 満たされていない場合は偽を表示します。文字列が含まれる場合は、「“(ダブルクォーテーション)」で囲みます。

例えば、セル同士を使った計算式など、内容によってはエラーになってしまって、「#VALUE!」のような表示になってしまうことありますよね。

=IF(ISERROR(A1/A2),"",A1/A2)

それを、このように書くと「もしA1/A2の計算式がエラーだったら」、真(エラー)なら「“”(文字数ゼロの文字列、つまり空白)」を、偽(エラーではない)なら「A1/A2」を出力することができます。

条件式の例

A1=B 'A1セルとBが等しい
A1>B 'A1セルがBよりも大きい
A1<B 'A1セルがBよりも小さい
A1>=B 'A1セルがB以上
A1<=B 'A1セルがB以下
A1<>B 'A1セルとBが等しくない
A1="" 'A1セルが空白※1
ISBLANK(A1) 'A1セルに何も入っていない※2
ISERROR(A1) 'A1セルがエラー

上記の例の「B」はセルを指定しても、値を直接指定しても大丈夫です。ただし、「大きい」「小さい」を比較するものは、両辺が数値でないとなりません。

「セルが空白」という条件には、

  • 数式の結果、“”(空白)となっているセル
  • 数式も何も入っていない、からっぽの状態のセル

という2つが考えられます。※1では両方とも真となり、※2では式の入っていない空セルしか真になりませんので、使い分けることができます。

複数条件

=IF(AND(条件1,条件2,…),真,偽) '条件1,2,…を全て満たす場合
=IF(OR(条件1,条件2,…),真,偽) '条件1,2,…のいずれかを満たす場合

このように書くことで、条件全て(いずれか)を満たした時のみ、という設定もできます。また、重ねて使う(入れ子と呼びます)ことで更に複雑な表現ができます。

=IF(TYPE(A1)<>1,"",IF(A1>=80,"◎",IF(A1>=50,"○",IF(A1>=30,"△","?"))))

これは、A1セルに数値以外のものが入っているか、真なら空白、偽ならば更にIF文…のように入れ子になっている例です。80以上なら◎、50以上なら○、30以上は△、それ以外は?、と表示されます。

IF関数は左から順に判定し、真になった時点で終了してしまうので、優先度の高いものから左側に実装していきます。

セルを数える

=COUNT(範囲) '数値データのセルを数える。文字や式は数えない
=COUNTA(範囲) '文字や数値、式などのデータが入力されているセルを数える。未入力セルは数えない
=COUNTBLANK(範囲) '未入力セルを数える
=COUNTIF(範囲,検索条件) '検索条件に合うセルを数える

数えるという関数だけでも結構バリエーションがあります。

検索条件の例

"abc" 'abcと等しい
"<>abc" 'abcと等しくない
">10" '10より大きい
"<10" '10未満
"abc*" 'abcで始まる
"*abc" 'abcで終わる
"*abc*" 'abcを含む
"<>*abc*" 'abcを含まない

「*」は文字列に使えるワイルドカード(任意の文字)で、前後につけることで細かな条件が設定できます。

=COUNTIF(A1:A5,"<="&B1)

&を使ってセルと結合して使うことも出来るので、セルの値に連動した検索条件なんていうのも実装できちゃいます。

Excel関数、覚えると便利!

ざっくり説明しましたが、ここで紹介したものはほんの一部分です。VBAを使わなくても、エクセル関数だけでかなりのことができそうですよね?覚えてみて損はありません(何よりVBAより敷居が低いですし)ので、是非参考にしてみて頂けたらと思います!

他にもいろいろ

公開日:2013/10/07
更新日:2014/02/11

書籍を執筆しています。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

コメントは承認制ですので、反映までしばらくお待ち下さい。(稀にスパムの誤判定にて届かないこともあるようですので、必要な際はお問い合わせからお願い致します。)

YouTubeでQ&Aコンテンツを企画しています

運営しているYouTubeチャンネルで、ご相談やご質問を募集しています。動画のコメントやお問い合わせページからお気軽にご相談をお寄せください。