とほほのExcel関数入門

目次

Excel関数とは

関数

日付と時刻の関数

日付と時刻は内部的にはシリアル値と呼ばれる数値で表されます。数値に対して書式を設定すると、日付や時刻として表示されるようになります。

日付は 1990/1/1 を 1日目とする日数で表します。4で割り切れる年はうるう年、100で割り切れる年は非うるう年、400で割り切れる年はうるう年としてカウントしますので、2000年はうるう年、2100年は非うるう年でカウントしますが、互換性の問題で 1900年はうるう年としてカウントするようです。

時刻は 00:00:00 を 0.0 として、1分を 1/(24*60*60) としてカウントします。例えば、6:00:00 は 0.25、12:00:00 は 0.5、18:00:00 は 0.75 となります。

日付は整数部、時刻は小数部となるため、日付と時刻を加算すると 日時 を表すことができます。例えば 1.5 は 1900/1/1 12:00:00 を示します。

TODAY : 今日の日付

TODAY は今日の日付を示すシリアル値を返します。

TODAY()

下記の例では A1 セルに今日の日付 (例:2024/8/25) が表示されます。

A
1=TODAY()← 2024/8/25

NOW : 現在の日時

NOW は現在の日時(日付と時刻)を示すシリアル値を返します。

NOW()

下記の例では A1 セルに現在の日時 (例:2024/8/25 23:59) が表示されます。

A
1=NOW()← 2024/8/25 23:59

DATEVALUE/TIMEVALUE : 日付・時刻文字列を日付・時刻に変換

DATEVALUE は日付を表す文字列を日付のシリアル値(整数部)に、TIMEVALUE は時刻を表す文字列を時刻のシリアル値(小数部)に変換します。

DATEVALUE(日付文字列)
TIMEVALUE(時刻文字列)

下記に例を示します。日付や時刻ではなく数値が表示される場合は書式を日時に変更してください。

A
1=DATEVALUE("2024/8/25")← 2024/8/25
2=TIMEVALUE("23:59:59")← 23:59:59

YEAR/MONTH/DAY/WEEKDAY : 年/月/日/曜日を取り出す

YEAR は年を、MONTH は月を、DAY は日を、WEEKDAY は曜日(日曜が1、土曜が7)を取り出します。

YEAR(日時)
MONTH(日時)
DAY(日時)
WEEKDAY(日時)
AB
12024/8/25=YEAR(A1)← 2024
2=MONTH(A1)← 8
3=DAY(A1)← 25
4=WEEKDAY(A1)← 1

HOUR/MINUTE/SECOND : 時/分/秒を取り出す

HOUR は時を、MINUTE は分を、SECOND は秒を取り出します。

HOUR(日時)
MINUTE(日時)
SECOND(日時)
AB
12024/8/25 23:59:59=HOUR(A1)← 23
2=MINUTE(A1)← 59
3=SECOND(A1)← 59

DATE/TIME : 年・月・日/時・分・秒から日付/時刻を得る

DATE は 年、月、日 から日付のシリアル値、TIME は 時、分、秒 から時刻のシリアル値を得ます。日時(年月日時分秒)を得るには DATE() の値(整数部)に TIME() の値(小数部)を加えます。

DATE(年, 月, 日)
TIME(時, 分, 秒)
A
1=DATE(2024, 8, 25)← 2024/8/25
2=TIME(23, 59, 59)← 23:59:59
3=A1+A2← 2024/8/25 23:59:59

DAYS : 日付の差分(日)

DAYS は 終了日 が 開始日 の何日後かを返します。

DAYS(終了日, 開始日)
AB
1開始日2024/8/25
2終了日2024/12/31
3差分=DAYS(B2, B1)← 128 (日)

DATEDIF : 日付の差分(年,月,日)

DATEDIF を用いると 開始日 と 終了日 の差分の年・月・日を求めることができます。単位には "Y"(年数)、"M"(月数)、"D"(日数)、"YM"(年を無視した月数)、"MD"(年月を無視した日数)、"YD"(年を無視した日数)が指定できます。

DATEDIF(開始日, 終了日, 単位)
AB
12024/8/25=DATEDIF(A1,A2,"Y")← 13 (年)
22038/1/19=DATEDIF(A1,A2,"M")← 160 (ヵ月)
3=DATEDIF(A1,A2,"D")← 4895 (日)
4=DATEDIF(A1,A2,"YM")← 4 (ヵ月 (8月→1月))
5=DATEDIF(A1,A2,"MD")← 25 (日 (*/25→*/19))
6=DATEDIF(A1,A2,"YD")← 147 (日 8/25→1/19)

NETWORKDAYS : 日付の差分(土日祝日除外)

NETWORKDAYS は 開始日 から 終了日 までの日数を数えます。開始日 と 終了日 が同日であれば 1 日、翌日であれば 2 日と数えます。祝日リスト を指定すると土日や祝日を除外することができます。NETWORKDAYS.INTL 関数を使用すると土日ではなく水曜日と木曜日を休日にするといった設定もできます。

NETWORKDAYS(開始日, 終了日, [祝日リスト])

下記の例では C3 セルに、2024/1/24~2024/2/15 までの土日・祝日を除いた日数 16 が表示されます。

ABC
1祝日リスト開始日2024/1/24
22024/1/1終了日2024/2/15
32024/1/8日数=NETWORKDAYS(C1,C2,A2:A5)← 16
42024/2/12
52024/2/23

WORKDAY : N日後の出勤日(土日祝日除外)

NETWORKDAYS は 開始日 と 終了日 から 日数 を求めますが、WORKDAY は 開始日 と 日数 から 終了日 を求めます。翌日を 1 日後と数えるため NETWORKDAYS の計算とは 1 日ずれます。土日以外を休業日とする WORKDAY.INTL もあります。

WORKDAY(開始日, 日数, [祝日リスト])

下記の例では C3 セルに 2024/1/24 から土日祝日を除外して 15日後の 2024/2/15 が表示されます。

ABC
1祝日リスト開始日2024/1/24
22024/1/1日数15
32024/1/8終了日=WORKDAY(C1,C2,A2:A5)← 2024/2/15
42024/2/12
52024/2/23

EDATE/EOMONTH : X月後の日付/X月後の末日

EDATE は 開始日 から 月 で指定した月数後の日付を得ます。EOMONTH は 開始日 から 月 で指定した月数後の日の月末日を得ます。求めた日が月末を超える場合は月末を返します。月数に負値を指定した場合は月数分前の月になります。

EDATE(開始日, 月)
EOMONTH(開始日, 月)
AB
12024/8/29=EDATE(A1,1)← 2024/9/29
22024/8/30=EDATE(A2,1)← 2024/9/30
32024/8/31=EDATE(A3,1)← 2024/9/30
42024/8/29=EOMONTH(A4,1)← 2024/9/30
52024/8/30=EOMONTH(A5,1)← 2024/9/30
62024/8/31=EOMONTH(A6,1)← 2024/9/30

エンジニア関数

XXX2XXX : 〇進数-〇進数変換

10, 2, 8, 16進数の変換を行います。2進数値は最大10桁で、10桁の最上位が1の場合は負数を示します。16進数は文字列で示します。桁数を指定すると指定された桁数まで 0埋めします。

DEC2BIN(数値, [桁数])		# 10進数を2進数に変換
DEC2HEX(数値, [桁数])		# 10進数を16進数に変換
DEC2OCT(数値, [桁数])		# 10進数を8進数に変換
BIN2DEC(2進数値)			# 2進数を10進数に変換
BIN2OCT(2進数値, [桁数])		# 2進数を8進数に変換
BIN2HEX(2進数値, [桁数])		# 2進数を16進数に変換
OCT2DEC(8進数値)			# 8進数を10進数に変換
OCT2BIN(8進数値, [桁数])		# 8進数を2進数に変換
OCT2HEX(8進数値, [桁数])		# 8進数を16進数に変換
HEX2DEC(16進文字列)		# 16進数を10進数に変換
HEX2BIN(16進文字列, [桁数])	# 16進数を2進数に変換
HEX2OCT(16進文字列, [桁数])	# 16進数を8進数に変換
A
1=DEC2BIN(255)← 11111111
2=DEC2BIN(15,8)← 00001111
3=DEC2OCT(511)← 777
4=DEC2OCT(511,4)← 0777
5=DEC2HEX(255)← FF
6=DEC2HEX(255,4)← 00FF
7=BIN2DEC(11111111)← 255
8=BIN2OCT(111111111)← 777
9=BIN2HEX(11111111)← FF
10=OCT2DEC(777)← 511
11=OCT2BIN(777)← 111111111
12=OCT2HEX(777)← 1FF
13=HEX2DEC("FF")← 255
14=HEX2BIN("FF")← 11111111
15=HEX2OCT("FF")← 377

情報関数

TYPE : 型

TYPE は 値 の型を調べます。型は 1(数値)、2(文字列)、4(論理値)、16(エラー値)、64(配列)、128(複合型) などの数値で返却されます。日付や時刻は数値とみなされます。

TYPE()
ABC
1数値123=TYPE(B1)← 1
2文字列ABC=TYPE(B2)← 2
3論理値TRUE=TYPE(B3)← 4
4エラー値#N/A=TYPE(B4)← 16
5配列=TYPE({"A","B"})← 64

CELL : セル情報

CELL はセルに関する色々な情報を調べます。対象範囲を指定するとそのセル、省略すると計算時に選択されていたセルが参照されます。式を入力したセルではないので対象範囲は省略しない方がよさそうです。

CELL(検査種別, [対象範囲])

検査種別 には下記を指定できます。Web版やモバイル版などではサポートされていないものもあります。

address		# セル参照文字列(例:$C$3)
col		# 列番号(例:3)
row		# 行番号(例:3)
filename	# ファイル名
type		# 型。空セル(b)、文字列(l)、数値(v)
width		# セルの横幅
contents	# 左上セルの値
format		# フォーマット文字列
prefix		# 表示位置。左寄せ(')、右寄せ(")、中央(^)
color		# 負数に色がつく場合は1、つかない場合は0
parentheses	# 正数を()で囲む場合は1、囲まない場合は0
protect		# ロックされいれば1、されていなければ0

下記に例を示します。B1 には B2 セルの行数、B2 には B2 セルのカラム数が表示されます。

AB
1=CELL("row", B2)← 2
2=CELL("col", B2)← 2

INFO : 情報

INFO は環境に関する情報を返します。

INFO(検査の種類)

検査の種類には下記を指定できます。

directory	# 現在のディレクトリ(フォルダ)
numfile		# シート数
origin		# 現在開いている左上のセル(Lotus 1-2-3互換のため $A:セル 形式)
system		# OS種別("pcdos"or"mac"
osversion	# OSバージョン
release		# Excelバージョン
recalc		# 自動計算モード("自動"or"手動")
A
1=INFO("directory")← C:\Work
2=INFO("numfile")← 4
3=INFO("origin")← $A:$A$1
4=INFO("system")← pcdoc
5=INFO("osversion")← Windows (64-bit) NT 10.00
6=INFO("release")← 16.0
7=INFO("recalc")← 自動

ERROR.TYPE : エラー種別

ERROR.TYPE はエラー種別を 1(#NULL!)、2(#DIV/0!)、3(#VALUE!)、4(#REF!)、5(#NAME!)、6(#NUM!)、7(#N/A)、8(#GETTING_DATA) などの数値で返します。

ERROR.TYPE()
AB
1#DIV/0!=IF(ERROR.TYPE(A1)=2,"0割エラー!","")← 0割エラー!

他の情報関数

他の情報関数には下記があります。

ISERROR(値) : エラーのときにTRUE
ISNA(値) : #N/A のときに TRUE を返します。
ISERR(値) : #N/A 以外のエラーのときにTRUE
ISBLANK(値) : 空白セルのときにTRUE
ISEVEN(値) : 偶数のときにTRUE
ISODD(値) : 奇数のときにTRUE
ISLOGICAL(値) : 論理値のときにTRUE
ISNUMBER(値) : 数値のときにTRUE
ISTEXT(値) : 文字列のときにTRUE
ISNONTEXT(値) : 文字列以外のときにTRUE
ISREF(値) : セル参照のときにTRUE
ISFORMULA(値) : 数式のときにTRUE (Excel 2013~)
ISOMITTED(引数) : LAMBDA引数が省略されていればTRUE (Office 365~)

論理関数

AND : かつ

引数で指定したすべての条件が TRUE であれば TRUE を返します。

AND(条件1,条件2,...)

下記の例では、A1 が "o" かつ A2 が "o" かつ A3 が "o" であれば "o" を、さもなくば "x" を表示します。

AB
1o=IF(AND(A1="o",A2="o",A3="o"),"o","x")← o
2o
3o

OR : または

引数で指定した条件のうちどれかひとつでも TRUE であれば TRUE を返します。

OR(条件1,条件2,...)

下記の例では、A1 が "o" または A2 が "o" または A3 が "o" であれば "o" を、さもなくば "x" を表示します。

AB
1x=IF(OR(A1="o",A2="o",A3="o"),"o","x")← o
2x
3o

NOT : 否定

引数の条件が TRUE であれば FALSE を、FALSE であれば TRUE を返します。

NOT(条件)

下記の例を示します。

AB
1o=NOT(A1="o")← FALSE

XOR : 排他的論理和

条件の内 TRUE の個数が奇数の時は TRUE を、偶数の時は FALSE を返します。Excel 2013 以降で使用できます。

XOR(条件1,条件2,条件3,...)
ABC
1oo=XOR(A1="o",B1="o")← FALSE
2ox=XOR(A2="o",B2="o")← TRUE
3xo=XOR(A3="o",B3="o")← TRUE
4xx=XOR(A4="o",B4="o")← FALSE

TRUE/FALSE : 真/偽

TRUE は常に TRUE を、FALSE は常に FALSE を返します。

TRUE()
FALSE()
A
1=IF(TRUE(),"o","x")← o
2=IF(FALSE(),"o","x")← x

IF : もし

条件が TRUE であれば 値1 を、さもなくば 値2 を返します。

IF(条件,値1,値2)

下記の例では、A列と B列の値が等しければ "o" を、さもなくば "x" を表示します。

ABC
1123123=IF(A1=B1,"o","x")← o
2ABCXYZ=IF(A2=B2,"o","x")← x

IFS : もし(複数)

条件1 が TRUE であれば 値1 を、条件2 が TRUE であれば 値2 を、いずれの条件も FALSE であれば #N/A エラーを返します。条件と値のペアは127個まで指定できます。Excel 2019 以降で使用できます。

IFS(条件1,値1,条件2,値2,...)

下記の例は、A1が90以上であれば "S" を、80以上であれば "A" を、70以上であれば "B" を、さもなくば "C" を返します。

A
182
2=IFS(A1>=90,"S",A1>=80,"A",A1>=70,"B",TRUE,"C")← A

IFNA : もし#N/Aであれば

値1 が #N/A であれば 値2 を、さもなくば 値1 を返します。Excel 2013 以降で使用できます。

IFNA(値1,値2)

下記の例は、VLOOKUP() が値を見つけられるとその値を、#N/A エラーを返すと "Not Found" を返します。

AB
1Tokyo=IFNA(VLOOKUP("Kyoto",A1:A3,1,FALSE),"Not Found")← Not Found
2Osaka
3Nagoya

IFERROR : もしエラーであれば

値1 がエラーであれば 値2 を、さもなくば 値1 を返します。

IFERRROR(値1,値2)

下記の例は、VLOOKUP() が値を見つけられるとその値を、見つけられず #N/A や #REF! などのエラーを返すと "ERR" を返します。

AB
1Tokyo=IFERROR(VLOOKUP("Kyoto",A1:A3,1,FALSE),"ERR")← ERR
2Osaka
3Nagoya

SWITCH : 値がaであればA、bであればB、cであればC...

値 が 値1 であれば 結果1、値2 であれば 結果2、値3 であれば 結果3, ...、いずもマッチしなければ 規定値 を返します。値と結果のペアは126個まで指定できます。Excel 2016 以降で使用できます。

SWITCH(値,値1,結果1,値2,結果2,値3,結果3,...,規定値)

下記の例は、A1 の値が "Red" であれば "#F00"、"Green" であれば ""#0F0"、"Blue" であれば "#00F"、いずれにもマッチしなければ "?" を返します。

AB
1Green=SWITCH(A1,"Red","#F00","Green","#0F0","Blue","#00F","?")← #0F0

検索/行列関数

ROW/COLUMN : 行番号/列番号

ROW は行番号(1~)、COLUMN は列番号(1~)を返します。範囲 を省略すると現在のセルを対象とします。

ROW([範囲])
COLUMN([範囲])
A
1=ROW()← 1
2=COLUMN()← 1
3=ROW(C5)← 5
4=COLUMN(C5)← 3

ROWS/COLUMNS : 行数/列数

ROWS は 範囲 の行数、、COLUMNS は 範囲 の列数を返します。

ROWS(範囲)
COLUMNS(範囲)
A
1=ROWS(A1:E10)← 10
2=COLUMNS(A1:E10)← 5

INDEX : 指定範囲のX行Y列目の値

INDEX は 範囲 の中から 行番号、列番号 で指定したセルの値を返します。行番号、列番号は 範囲 の左上を起点とします。

INDEX(範囲, 行番号, [列番号])
ABCD
1=INDEX(B2:D4,3,3)← s-tanaka
2山田太郎やまだたろうt-yamada
3鈴木次郎すずきじろうj-suzuki
4田中三郎たなかさぶろうs-tanaka

MATCH : 指定範囲の中から何番目にマッチしたか

MATCH は 検査範囲 の中から 検索値 を探し、見つかった位置を返します。検査範囲は1列または1行である必要があります。[照合の種類] が 0 の時は 条件 一致を行います。1 を指定すると 検索範囲 の中から 検索値 より小さな中の最大値、-1 を指定すると 検索範囲 の中から 検索値 より大きな中の最小値とマッチします。デフォルトは 1 です。データは、1 の時は昇順に、-1 の時は降順にソートしておく必要があります。

MATCH(検索値, 検査範囲, [照合の種類])

下記に例を示します。D1 は A1:A3 の中から 田中三郎 が 3番目に見つかるので 3、D2 は 80 より小さな最大値 72 が 2番目に見つかるので 2、D3 は C1:C3 が降順にソートされていないので #N/A エラーとなります。

ABCD
1山田太郎t-yamada43=MATCH("田中三郎",A1:A3,0)← 3
2鈴木次郎j-suzuki72=MATCH(80,C1:C3,1)← 2
3田中三郎s-tanaka93=MATCH(80,C1:C3,-1)← #N/A

INDIRECT : セル参照文字列をセル参照に変換

INDIRECT はセル参照を示す 参照文字列 をセル参照に変換します。参照形式 に TRUE を指定すると A1 形式のセル名、FALSE を指定すると R1C1 形式のセル名と見なします。省略時は TRUE になります。

INDIRECT(参照文字列, [参照形式])

下記に例を示します。D1 には xxx.xlsx ファイルの Sheet1 シートの B3 セル値が、D2 には C3:C8 の合計値が表示されます。

ABCD
1xxx.xlsxSheet1B3=INDIRECT("["&A1&"]"&B1&"!"&C1)
2xxx.xlsxSheet1C3:C8=SUM(INDIRECT("["&A2&"]"&B2&"!"&C2))

VLOOKUP : X列が...である行のY列の値

範囲 の中から 検索値 にマッチする行の、列番号 で指定する列の値を取得します。列番号は範囲列を 1 として数えます。検索方法は近似検索を行う場合は TRUE、完全一致検索を行う場合は FALSE を指定します。省略時は TRUE ですが、ほとんどのケースで FALSE を指定します。

VLOOKUP(検索値, 範囲, 列番号, [検索方法])

下記に例を示します。B1:E3 の中で B列が "鈴木次郎" である行の、B列から数えて 4列目の値 suzuki@example.com が検索されます。FALSE を指定しているので完全一致で検索します。

ABCDE
1山田太郎t-yamadaやまだたろうyamada@example.com
2鈴木次郎j-suzukiすずきじろうsuzuki@example.com
3田中三郎s-tanakaたなかさぶろうtanaka@example.com
4=VLOOKUP("鈴木次郎",B1:E3,4,FALSE)← suzuki@example.com

検索方法に TRUE を指定すると、検索値以下の最大値にマッチします。下記の例で 得点 列から 87 を TRUE で検索すると、87 以下の得点の中で 87 に最も近い 80 にマッチします。範囲は昇順に並べておく必要があります。

ABC
1得点成績
20D
360C
470B
580A
690S
7
8山田87=VLOOKUP(B8,A$2:B$6,2,TRUE)← A
9鈴木65=VLOOKUP(B9,A$2:B$6,2,TRUE)← C
10田中92=VLOOKUP(B10,A$2:B$6,2,TRUE)← S

HLOOKUP : X行が...である列のY行の値

VLOOKUP の列方向版です。

HLOOKUP(検索値, 範囲, 行番号, [検索方法])

下記に例を示します。A2:C4 の中で 2行目が "鈴木次郎" である列の、2行目から数えて3行目の値 "すずきじろう" が検索されます。

ABC
1
2山田太郎鈴木次郎田中三郎
3t-yamadaj-suzukis-tanaka
4やまだたろうすずきじろうたなかさぶろう
5=HLOOKUP("鈴木次郎",A2:C4,3,FALSE)← すずきじろう

XLOOKUP : X列が~である行のY列の値

VLOOKUP の改良版です。Microsoft 365 以降で使用できます。検索範囲 の中から 検索値 にマッチする行の、戻り範囲の値を返却します。

XLOOKUP(検索値, 検索範囲, 戻り範囲, [見つからない場合], [一致モード], [検索モード])

[見つからない場合] には、見つからなかった場合の返却値(省略時は #N/A)を指定します。

[一致モード] には下記を指定します。省略した場合は 0 となります。

[検索モード] には下記を指定します。省略した場合は 1 となります。

ABCD
1山田太郎t-yamadaやまだたろうyamada@example.com
2鈴木次郎j-suzukiすずきじろうsuzuki@example.com
3田中三郎s-tanakaたなかさぶろうtanaka@example.com
4=XLOOKUP("鈴木次郎",A1:A3,D1:D3)← suzuki@example.com
5=XLOOKUP("浜田四郎",A1:A3,D1:D3,"Not Found")← Not Found

HYPERLINK はセルにハイパーリンクを表示します。ハイパーリンクをクリックすると指定したファイル、シート、セルに移動したり、ブラウザでリンクページを表示したりすることができます。別名 を省略するとリンク先が表示されますが、別名 を指定するとリンク先の代わりに別名が表示されます。

HYPERLINK(リンク先, [別名])
A
1=HYPERLINK("#C3")← 同シートのC3セル
2=HYPERLINK("#Sheet1!C3")← Sheet1シートのC3セル
3=HYPERLINK("#'Sheet2(xxx)'!C3")← シート名がメタ文字を含む場合は '...' で囲む
4=HYPERLINK("#MYCELL32")← MYCELL32 という名前が付けられたセル
5=HYPERLINK("xxx.xlsx")← xxx.xlsxファイル
6=HYPERLINK("[xxx.xlsx]Sheet1!C3")← xxx.xlsxファイルのSheet1のC3セル
7=HYPERLINK("[C:\Temp\xxx.xlsx]Sheet1!C3")← C:\Temp\xxx.xlsxファイルのSheet1のC3セル
8=HYPERLINK("[https://www.example.com\xxx.xlsx]Sheet1!C3")← https://www.example.com\xxx.xlsxファイルのSheet1のC3セル
9=HYPERLINK("#C3", "[参照]")← リンク文字の代わりに "[参照]" を表示

ADDRESS : 列/行番号からセル参照文字列を得る

ADDRESS は 行番号、列番号 で示されるセルのセル参照文字列 (例:"A1") を得ます。参照型には 1($A$1形式)、2(A$1形式)、3($A1形式)、4(A1形式) のいずれかを指定します。参照形式 に 0 を指定すると R1C1 形式で返します。

ADDRESS(行番号, 列番号, [参照型], [参照形式], [シート名])
A
1=ADDRESS(1,1,1)← $A$1
2=ADDRESS(1,1,2)← A$1
3=ADDRESS(1,1,3)← $A1
4=ADDRESS(1,1,4)← A1
5=ADDRESS(1,1,1,0)← R1C1

OFFSET : セル参照からX行Y列目のセルを参照する

OFFSET は 参照 で指定したセルから 行数 分下、列数 分右のセルを参照します。

OFFSET(参照, 行数, 列数, [高さ], [幅])
ABC
1102030
2405060
3708090
4100110120
5=OFFSET(A1,2,1)← 80 (A1の2行下1列右)
6=SUM(OFFSET(A1,2,1,2,2))← 400 (Hから2行・2列分の合計)

数学関数

ROUND/ROUNDUP/ROUNDDOWN : 四捨五入/切り上げ/切り捨て

ROUND は四捨五入、ROUNDUP は切り上げ、ROUNDDOWN は切り捨てを行います。桁数 はどの桁で四捨五入・切り上げ・切り捨てしたいかを指定します。

ROUND(数値, 桁数)
ROUNDUP(数値, 桁数)
ROUNDDOWN(数値, 桁数)
A
1=ROUND(1234.123, 2)← 1234.12
2=ROUND(1234.123, 1)← 1234.1
3=ROUND(1234.123, 0)← 1234
4=ROUND(1234.123, -1)← 1230
5=ROUND(1234.123, -2)← 1200
6=ROUNDUP(1234.123, 0)← 1235
7=ROUNDDOWN(1234.123, 0)← 1234

INT/TRUNC : 小数切り捨て

INT と TRUNC は小数を切り捨てて整数にします。TRUNC は ROUNDDOWN(数値, 0) と同じ動作をします。INT は正数では ROUNDDOWN(数値, 0) と同じ動作、負数では ROUNDUP(数値, 0) と同じ動作になります。実例を参照してください。

INT(数値)
TRUNC(数値)
ABCDE
1INTTRUNCROUNDDOWNROUNDUP
22.52223
31.51112
40.50001
5-0.5-100-1
6-1.5-2-1-1-2
7-2.5-3-2-2-3

CEILING/FLOOR : 基準値の倍数に切り上げ/切り捨て

ROUNDUP, ROUNDDOWN は桁数を指定して切り上げ・切り捨てしますが、CEILING, FLOOR を使用すると例えば、0, 5, 10, 15, 20, 25, ...のように 5 の倍数になるように切り上げ、切り下げすることができます。

CEILING(数値, 基準値)
FLOOR(数値, 基準値)
A
1=CEILING(12, 5)← 15 (5の倍数になるように切り上げ)
2=FLOOR(17, 5)← 15 (5の倍数になるように切り捨て)

SUM : 合計

SUM は指定した 数値 の合計を返します。数値 にはセル参照を指定することもできます。

SUM(数値1, [数値2], ...)
ABC
114=SUM(1,2,3)← 6 (1と2と3の合計)
225=SUM(A1:B3)← 21 (A1からB3セルの合計)
336=SUM(A1:A3,B1:B3)← 21 (A1-A3とB1-B3セルの合計)

SUMIF : 条件付き合計

SUMIF は 範囲 の中で 検索条件にマッチする行(または列)の合計値を返します。検索したい範囲と合計したい範囲が異なる場合は 合計範囲 を指定することができます。条件の指定方法は「条件」を参照してください。

SUMIF(範囲, 検索条件, [合計範囲])
ABC
1電車賃交通費240
2Aスーパー食費1,200
3カラオケ娯楽費2,400
4Bスーパー食費800
5=SUMIF(C1:C4,">=1000")← 3,600 (1,000円以上の合計)
6=SUMIF(B1:B4,"食費",C1:C4)← 2,000 (B列が"食費"であるものの合計)

SUMIFS : 複数条件付き合計

SUMIFS は 条件範囲 が 条件 にマッチする行(または列)の、合計対象範囲 の合計値を返します。条件は最大127個指定できます。Excel 2019 以降で使用できます。条件の指定方法は「条件」を参照してください。

SUMIFS(合計対象範囲, 条件範囲1, 条件1, ...)

下記に例を示します。B1:B5 が "食費" で、C1:C5 が "現金" である行の D1:D5 の合計を求めます。

ABCD
1電車賃交通費Suica240
2Aスーパー食費現金1,200
3カラオケ娯楽費PayPay2,400
4Bスーパー食費カード800
5C食堂食費現金1,600
6=SUMIFS(D1:D5,B1:B5,"食費",C1:C5,"現金")← 2,800

SUBTOTAL : フィルタ対応集計

SUBTOTAL は、範囲 に対して 集計方法 で指定した集計を行います。フィルタ機能で行の表示がフィルタリングされている場合、表示されている行のみを集計の対象とするのが特徴です。

SUBTOTAL(集計方法, 範囲1, [範囲2], ...)

集計方法には下記を指定します。よく使用するのは 3(COUNTA) と 9(SUM) です。

1 : 平均(AVERAGE)
2 : 数値の個数(COUNT)
3 : データ個数(COUNTA)
4 : 最大値(MAX)
5 : 最澄値(MIN)
6 : 積(PRODUCT)
7 : 標準偏差推定値(STDEV)
8 : 標準偏差(STDEVP)
9 : 合計(SUM)
10 : 分散推定値(VAR)
11 : 分散(VARP)

下記に例を示します。下記の例では4行目がフィルタリングされて表示されていませんが、表示されているセルのみを対象として集計する点が特徴です。

AB
1名前個数
2AAA12
3BBB8
5DDD20
6=SUBTOTAL(9,B2:B5)← 40(フィルタで表示されているB列の合計)
7=SUBTOTAL(3,A2:A5)← 3(フィルタで表示されているA列の個数)

SUMPRODUCT : 積の合計

SUMPRODUCT は 配列1, 配列2, ... の各要素同士の積の合計を計算します。

SUMPRODUCT(配列1, [配列2], ...)
ABC
1商品単価個数
2AAA3002
3BBB1503
4CCC4504
5=SUMPRODUCT(B2:B4,C2:C4)← 2850 (単価×個数の合計)

応用例として、下記の様に AAA 商品の S サイズの個数の合計を求めることもできます。

ABCDE
1商品サイズ個数
2AAAS12
3BBBM32
4CCCL45
5AAAS14
6CCCM30
7
8AAAS=SUMPRODUCT((A2:A6=A8)*(B2:B6=B8)*(C2:C6))← 26

RAND : 乱数

RAND は 0 以上 1 未満の乱数を返します。

RAND()
A
1=RAND()← 例:0.24170189
2=ROUNDDOWN(RAND()*11,0)← 0~10の乱数
3=ROUNDUP(RAND()*10,0)← 1~10の乱数

その他の数学関数

その他の数学関数には下記などがあります。

SQRT(数値) : 正の平方根
POWER(数値) : べき乗
MOD(数値) : 除算したときの剰余
PI() : 円周率π
ABS(数値) : 絶対値
LN(数値) : 自然対数
LOG(数値, [底]) : 底を底とする対数
LOG10(数値) : 10を底とするの対数
SIN(数値) : サイン
COS(数値) : コサイン
TAN(数値) : タンジェント
ASIN(数値) : アークサイン
ACOS(数値) : アークコサイン
ATAN(数値) : アークタンジェント
ATAN2(X座標, Y座標) : X,Y座標のアークタンジェント

統計関数

COUNT : 数値の個数

COUNT は 値1, 値2, ... の中で数値の個数を返します。日時も内部的にはシリアル値として扱われるので数値と見なされます。数値 にはセル参照も指定できます。

COUNT(値1, [値2], ...)

下記の例では A列の中の数値の個数を数えます。

AB
1成績=COUNT(A:A)← 3
287
365
492
5

COUNTA : データの個数

COUNTA は 値1, 値2, ... の中で空ではないデータの個数を返します。数値 にはセル参照も指定できます。#N/A や #REF! などのエラーもカウントします。

COUNTA(値1, [値2], ...)

下記の例では A列の中の何らかのデータ(エラーを含む)が入力されているセルの個数を数えます。

AB
1成績=COUNTA(A:A)← 4
287
365
492
5

COUNTIF : 条件を満たすセルの個数

COUNTIF は 範囲 の中から 検索条件 を満たすセルの個数を返します。条件に AND などの論理値を用いることはできません。

COUNTIF(範囲, 検索条件)
AB
1成績=COUNTIF(A:A,65)← 1 (65にマッチするセル数)
287=COUNTIF(A:A,">80")← 2 (80以上のセル数)
365
492
5

COUNTIFS : 複数条件を満たすセルの個数

COUNTIFS は 範囲 の中から 検索条件 を満たすセルの個数を返します。範囲 と 検索条件 のペアは複数指定することができます。

COUNTIF(範囲1, 検索条件1, 範囲2, 検索条件2, ...)
AB
1成績=COUNTIFS(A:A,">=50",A:A,"<90")← 2 (50以上90未満のセル数)
287
365
492
5

MAX/MIN : 最大/最小

MAX は最大値、MIN は最小値を返します。数値 にはセル参照も指定できます。

MAX(数値1, [数値2], ...)
MIN(数値1, [数値2], ...)
ABCD
1名前1回目2回目=MIN(60,80,70)← 60 (60,80,70の最小値)
2山田8778=MIN(B2:C4)← 65 (B2:C4の最小値)
3鈴木6569=MAX(B2:C4)← 95 (B2:C4の最大値)
4田中9295=MAX(B2,C2)← 87 (B2とC2の最大値)
5

AVERAGE : 平均

AVERAGE は 数値1, 数値2, ... の平均値を返します。数値 にはセル参照も指定できます。

AVERAGE(数値1, [数値2], ...)
ABCD
1名前1回目2回目=AVERAGE(60,80,70)← 70 (60,80,70の平均)
2山田8778=AVERAGE(B2:C4)← 81 (B2:C4の平均)
3鈴木6569=AVERAGE(B3,C3)← 67 (B3とC3の平均)
4田中9295
5

MEDIAN : 中央値

MEDIAN は 数値1, 数値2, ... の中央値を返します。中央値は成績順にソートした場合に真ん中の人の点数です。数値が偶数の場合は真ん中の人が2人になるためその平均値をとります。数値 にはセル参照も指定できます。

MEDIAN(数値1, [数値2], ...)
ABCD
1名前1回目2回目=MEDIAN(60,80,70)← 70 (60,80,70の中央値)
2山田8778=MEDIAN(B2:B4)← 87 (B2:B4の中央値)
3鈴木6569=MEDIAN(B2:C4)← 82.5 (B2:C4の中央値)
4田中9295
5

LARGE/SMALL : 大きな方・小さな方からN番目

LARGE は 配列 の大きな方から 順位 で指定した順位の値を得ます。SMALL は小さい方から数えます。

LARGE(配列, 順位)
SMALL(配列, 順位)
ABCD
1名前1回目2回目=LARGE(B2:B4,2)← 87 (B列の中で2番目の大きな値)
2山田8778=SMALL(C2:C4,2)← 78 (C列の中で2番目に小さな値)
3鈴木6569
4田中9295
5

RANK : ランク付け

RANK は 数値 が 範囲 の中で何番目かを調べます。順序に 0 を指定すると数値の高い方が上位、1 を指定すると低い方が上位になります。省略すると 0 とみなします。

RANK(数値, 範囲, [順序])
ABCD
1名前1回目2回目1回目順位
2山田8778=RANK(B2,B$2:B$4)← 2
3鈴木6569=RANK(B3,B$2:B$4)← 3
4田中9295=RANK(B4,B$2:B$4)← 1
5

FORECAST.LINEAR : 予測値

Yリスト、Xリストの関係から X が 数値 の時の Y の値を、回帰直線 (Y=a+bX) で予測します。

FORECAST.LINEAR(数値, Yリスト, Xリスト)
AB
110133
220240
330280
440460
550539
660563
770=ROUND(FORECAST.LINEAR(A7,B$1:B$6,A$1:A$6),0)← 692
880=ROUND(FORECAST.LINEAR(A8,B$1:B$6,A$1:A$6),0)← 784
990=ROUND(FORECAST.LINEAR(A9,B$1:B$6,A$1:A$6),0)← 876

文字列関数

LEN/LENB : 文字数/バイト数

LEN は 文字列 の文字数を、LENB は 文字列 のバイト数を返します。LEN は日本語も1文字と数えます。LENB は日本語を2文字と数えます。

LEN(文字列)
LENB(文字列)
AB
1月火水木金土日=LEN(A1)← 7
2=LENB(A1)← 14

LEFT/LEFTB : 左からN文字/Nバイト

LEFT は文字列の左から N 文字、LEFTB は文字列の左から N バイトを取り出して返します。N を省略すると 1文字/1バイト分取り出します。

LEFT(文字列,[N])
LEFTB(文字列,[N])
AB
1月火水木金土日=LEFT(A1,2)← 月火
2=LEFTB(A1,4)← 月火

RIGHT/RIGHTB : 左からN文字/Nバイト

RIGHT は文字列の右から N 文字、RIGHTB は文字列の右から N バイトを取り出して返します。N を省略すると 1文字/1バイト分取り出します。

RIGHT(文字列,[N])
RIGHTB(文字列,[N])
AB
1月火水木金土日=RIGHT(A1,2)← 土日
2=RIGHTB(A1,4)← 土日

MID/MIDB : M文字/バイト目からN文字/Nバイト

MID は文字列の M文字目から N文字を、MIDB は文字列の Mバイト目から Nバイトを取り出して返します。

MID(文字列,M,N)
MIDB(文字列,M,N)
AB
1月火水木金土日=MID(A1,3,2)← 水木
2=MIDB(A1,5,4)← 水木

FIND/FINDB : 文字列検索

FIND, FINDB は 対象 文字列の中から 検索文字列 が最初に現れる位置を返します。FIND は文字数、FINDB はバイト数で数えます。開始位置 を指定すると開始位置以降の文字列を調べます。

FIND(検索文字列, 対象, [開始位置])
FINDB(検索文字列, 対象, [開始位置])
AB
1月火水木金土日=FIND("水",A1)← 3
2=FINDB("水",A1)← 5

SEARCH/SEARCHB : 文字列検索

SEARCH, SEARCHB は FIND, FINDB と似た機能を持ちます。FIND/FINDB が大文字・小文字を区別するのに対して、SEARCH/SEARCHB は区別しません。また、SEARCH/SEARCHB は "*" などのワイルドカードを使用することができます。

SEARCH(検索文字列, 対象, [開始位置])
SEARCHB(検索文字列, 対象, [開始位置])
AB
1This is Japan.=SEARCH("IS",A1)← 3
1This is Japan.=SEARCH("J*N",A1)← 9

UPPER/LOWER/PROPER : 大文字化/小文字化

UPPER は大文字に、LOWER は小文字に変換します。PROPER は単語の先頭のみを大文字にします。

UPPER(文字列)
LOWER(文字列)
PROPER(文字列)
AB
1This is Japan.=UPPER(A1)← THIS IS JAPAN.
2=LOWER(A1)← this is japan.
3=PROPER(A1)← This Is Japan.

ASC/DBCS/JIS : 全角・半角変換

ASC は全角文字を半角文字に、DBCS は半角文字を全角文字に変換します。ただし、日本語版 Excel では DBCS の代わりに JIS を使用します。

ASC(文字列)
DBCS(文字列)
JIS(文字列)
AB
1イロハABC=ASC(A1)← イロハABC
2=JIS(A1)← イロハABC
3=DBCS(A1)← #NAME?

REPLACE/REPLACEB : 文字列置換

REPLACE は 文字列 の M文字目から N文字を 置換文字 に置換します。REPLACEB は文字数ではなくバイト数で数えます。

REPLACE(文字列,M,N,置換文字)
REPLACEB(文字列,M,N,置換文字)
AB
1ヤサイスクナメニンニクマシマシ=REPLACE(A1,4,4,"マシマシ")← ヤサイマシマシニンニクマシマシ
2=REPLACEB(A1,7,8,"マシマシ")← ヤサイマシマシニンニクマシマシ

SUBSTITUTE : 文字列置換

SUBSTITUTE は 文字列 中の 検索文字列 を 置換文字列 に置換します。N は省略可能で、N を省略するとマッチするものすべてを置換します。指定すると N番目にマッチするもののみを置換します。

SUBSTITUTE(文字列,検索文字列,置換文字列,[N])
AB
1BANANA=SUBSTITUTE(A1,"A","a")← BaNaNa
2=SUBSTITUTE(A1,"A","a",2)← BANaNA

TRIM : 空白や改行削除

SUBSTITUTE は 文字列 中の冒頭や末尾の空白や改行を削除します。単語間に2つ以上の空白があると1つの空白に変換します。

TRIM(文字列)
AB
1   This     is     Japan.    =TRIM(A1)← This is Japan.

CONCAT/CONCATENATE : 文字列連結

CONCAT は 文字列1, 文字列2, 文字列3, ... を連結したものを返します。文字列は253個まで指定できます。文字列 にはセル参照を指定することもできます。Excel 2019 以降で使用できます。CONCATENATE も CONCAT と同等の動作となりますが、互換性のために残されており、将来廃止される可能性があります。

CONCAT(文字列1, [文字列2], ...)
ABC
1ABCXYZ=CONCAT(A1,B1)← ABCXYZ
2=CONCAT(A1:B1)← ABCXYZ
3=CONCAT("ABC","XYZ")← ABCXYZ

TEXT : 書式設定

TEXT は 値 を 表示形式 で書式設定します。表示形式には、書式設定のユーザ定義で指定可能な文字列を指定できます。

TEXT(値, 表示形式)
AB
12024年8月25日=TEXT(A1,"yyyy/mm/dd")← 2024/08/25

REPT : 文字列の繰り返し

TEXT は 文字列 を 回数 で指定した回数繰り返した文字列を返します。

REPT(文字列, 回数)
A
1=REPT("A", 5)← AAAAA
2=REPT("ABC", 3)← ABCABCABC

EXACT : 正確な文字列比較

EXACT は 文字列1 と 文字列2 を正確に比較します。= 演算子で比較した場合は大文字・小文字が無視されますが、EXACT で比較した場合は大文字・小文字の違いも異なると判断されます。

EXACT(文字列1,文字列2)
ABC
1Wordword=IF(A1=B1,"o","x")← o
2=IF(EXACT(A1,B1),"o","x")← x

CHAR/CODE : 文字コード・文字変換

CHAR は文字コードを文字に変換します。CODE は文字列の先頭の文字を文字コードに変換します。日本語の場合は JISコードとして扱います。たとえば「あ」の文字コードは JISコード 2422(16進数)を10進数に変換した 9250 がとなります。ただし、Web版 Excel では CODE("あ") を正常に解釈できず、エラーを示す "?" の文字コード 63 を返すようです。

CHAR(文字コード)
CODE(文字列)
A
1=CHAR(65)← A
2="A"&CHAR(9)&"B"← A(TAB)B
3=CHAR(9250)← あ
4=CODE("A")← 65
5=CODE("あ")← 9250

UNICHAR/UNICODE : Unicodeコード・文字変換

UNICHAR はUnicodeのコードポイントを文字に変換します。UNICODE は文字列の先頭の文字を Unicode のコードポイントに変換します。「あ」は Unicode で U+3042(16進数)ですが、これを10進数に変換した 12354 となります。Excel 2013 以降で使用できます。

UNICHAR(Unicodeコードポイント)
UNICODE(文字列)
A
1=UNICHAR(12354)← あ
2=UNICODE("あ")← 12354

PHONETIC : ふりがな

PHONETIC は参照セルのフリガナを取り出します。Excel のセルには漢字が表示されていてもふりがな情報が記憶されています。例えば「なかた」を変換して「中田」と入力されたセルには「ナカタ」が、「なかだ」を変換して「中田」と入力されたセルには「ナカダ」というふりがなが記憶されています。ふりがなは [ホーム]-[フォント]-[ふりがなの表示] で表示することができます。Web版Excelではサポートされていません。

PHONETIC(参照)
AB
1中田ナカタ=PHONETIC(A1)← ナカタ
2中田ナカダ=PHONETIC(A2)← ナカダ

その他

セル参照

セルは下記の様に参照します。

C3				# C3セル(相対参照)
$C$3				# C3セル(絶対参照)
C3:D5				# C3~D5の範囲のセル
Sheet1!C3			# Sheet1 の C3セル
'Sheet1(xx)'!C3			# シート名が()を含む場合
[xxx.xlsx]Sheet1!C3		# xxx.xlsx ファイルを参照
'C:\Data\[xxx.xlsx]Sheet1'!C3		# フォルダを指定
'C:\Data\[xxx(xx).xlsx]Sheet1(xx)'!C3	# ファイル名やシート名が()を含む場合

HYPERLINK で指定する場合はフォルダとファイル名の書き方が少し異なります。

[C:\Data\xxx(xxx).xlsx]'Sheet1(xxx)'!C3

条件

条件には次のようなものを指定できます。

C3		# C3セルの内容と合致している
"<>"&C3		# 値がC3セルの内容と異なる
10		# 値が10である
">10"		# 値が10より大きい
"A"		# 値が "A" である
"A??"		# 値が "A" で始まる3文字である
"A*"		# 値が "A" で始まる文字列である
"A~*"		# 値が "A*" である (~はメタ文字を無効化する)

エラー

Excel で発生する主なエラーには下記のものがあります。エラーは IFERROR を用いて表示しないようにしたり、"Not Found" など分かりやすいメッセージで表示することができます。

#VALUE!
式や値に何らかのエラーがある場合に発生します。例えば、"300円" というセルと "5個" という文字列のセルに対して * 演算子で掛け算を行おうとした場合などに発生します。
#NUM!
数値に問題がある場合、例えば、数値が -2^1024~2^1024 の範囲に収まらない場合などに発生します。
#N/A!
該当なし(Not Applicable)、利用不可(Not Available)、アサイン無し(No Assign)などを示すエラーです。VLOOKUP() で検索した値が見つからない場合などに発生します。
#REF!
参照先エラー。=Sheet1!C3 などで参照していたシートが削除された場合などに発生します。
#DIV/0!
ゼロ割りエラー。値を 0 で割った場合に発生します。
#NULL!
重複セルに関するエラーです。SUM(A1:B3 B3:C3) のようにセル範囲をスペースで連結すると双方のセル範囲に重複して含まれるセルが対象となりますが、SUM(A1:A3 C1:C3) のように重複するセルが見つからない場合などに発生します。
#GETTING_DATA
関数の処理時間が長くかかりすぎた場合などに発生します。
#####
セルの横幅が値を表示できない程度に狭い場合に発生します。