彩りの大地 Excel関数について

ぺぇじへっどらいん

最低でも押さえておきたい関数

概要

お仕事とかで使用することがほぼ必須に近い関数を並べていきます。

IF

多分、一番スタンダード(?)な関数。条件式の結果に応じて出力結果を変える関数。 ネスト(入れ子)にすることで多分岐にすることも可能。

=IF(A1>0,"正の数","正の数以外")
=IF(A1>0,IF(A1<=100,"100以下","100より大きい"),"正の数以外")
=IF(A1>0,IF(A1<=100,"100以下","100より大きい"),IF(A1=0,"0","負の数"))

AND, OR

複数の条件を立てる場合に使う関数。 論理積(AND、いずれも満たす場合)と論理和(OR、いずれかを満たす場合)を返す。

=IF(OR(A1>0,B1>0),"AとBのどちらかが正の数","AとBのどちらも負の数")
=IF(AND(A1>0,B1>0),"AとBのどちらも正の数","AとBのどちらかが負の数")
=IF(OR(A1>0,AND(B1>0,B1<=100)),"Aが正の数またはBは0より大きく100までの間の数","不一致")

MIN, MAX

最小値、最大値を求める関数。引数の中から最小となる数、最大となる数を返す。 出力結果を一定の値以上・以下にする場合にも使用する。

以下、出力結果はそれぞれでほぼ同じ

=IF(A1>100,100,A1)
=MIN(A1,100)

=IF(A1<0,0,A1)
=MAX(A1,0)

COUNT系

名前の通りのCOUNT系関数。 関数ごとにカウントする条件が決まっており、引数となる参照領域の中からその条件に応じたカウント値を返す。

数値が含まれるセルの数を求める。
=COUNT(A1:J10)

値が空でないセルの数を求める。
=COUNTA(A1:J10)

特定の条件を満たすセルの数を求める。
=COUNTIF(A1:J10,"○")
※↑セルの値が「○」の数を求める。

複数の特定の条件を満たすセルの数を求める。
=COUNTIFS(A1:A10,"○",B1:B10,"○")
※↑A1の値が「○」かつB1の値が「○」である場合に1カウント行う。 それをA1~A10、B1~B10まで行い、その合計の値をカウントする。 つまり、それぞれの参照は同じサイズでなければいけない。

SUM

「オートSUM」とか言うように、割とメジャーな関数。 引数となる参照領域に含まれる数値の合計値を返す。 数値以外は無視される。

=SUM(A1:A10)

AVERAGE

SUMに似た使い方の関数。 引数となる参照領域に含まれる数値の平均値を返す。 数値以外は無視される。

=AVERAGE(A1:A10)

LEFT, RIGHT, MID

参照の文字列から一定の法則によって文字列を返す関数たち。法則というのは関数名を見ての通り。

A1=自分自身こそが最大の敵と思え

参照A1の文字列の先頭に始まり、そこから7文字目までを返す。
=LEFT(A1,7)
→自分自身こそが

参照A1の文字列の末尾から4文字目に始まり、末尾までを返す。
=RIGHT(A1,4)
→敵と思え

参照A1の左から5文字目に始まり、そこから6文字目までを返す。
=MID(A1,5,6)
→そが最大の敵

FIND, LEN

参照の文字列から一定の法則によって文字列の数を返す関数たち。 LEFT, RIGHT, MID とよくセットで使用されることもある。
ただし、注意点としてFINDはあくまで文字列の先頭から数えた数であるため、 末尾から数えるRIGHTとは併用しにくい。

A1=そんなもん、やってみなきゃわからないでしょ

参照A1の文字列の先頭から「、」があるまでの文字数を返す。
=FIND("、",A1)
→6

参照A1の文字数を返す。
=LEN(A1)
→21

参照A1で先頭から「、」がある位置までの文字列返す。
=LEFT(A1,FIND("、",A1))
→そんなもん、

参照A1で先頭から「、」がある次の位置から末尾までの文字列返す。
=MID(A1,FIND("、",A1)+LEN("、"),LEN(A1)-FIND("、",A1))
→やってみなきゃわからないでしょ

LOOKUP系

名前の通りのLOOKUP系関数。ここまでできれば一人前……?
特定の文字列を参照領域から検索し、その検索位置に対応するセルの値を返す。
LOOKUP系は3種類あるけれども、特にVLOOKUPぐらいは覚えておきたいところ。

素のLOOKUP関数は検査範囲を昇順ソートしておかなければいけないとか面倒があるので、HLOOKUPとVLOOKUPを紹介。 てか、素のLOOKUP関数とか使ったことないし(そもそも、現状LOOKUP系自体使ってないけどw)。

検索値A1を別シートの検索領域$A$1:$G$10の最初の列から完全に一致するデータを探し、その列に対応する行の2つ目のセルデータを返す。
=VLOOKUP(A1,別シート!$A$1:$G$10,2,FALSE)

検索値A1を別シートの検索領域$A$1:$G$10の最初の列から完全に一致するデータを探し、その行に対応する列の2つ目のセルデータを返す。
=HLOOKUP(A1,別シート!$A$1:$G$10,2,FALSE)