集計フィールドの数式

次の表に、Microsoft.SharePoint.SPFieldCalculated クラスの Formula を使用して集計フィールドに実装できるさまざまな種類の数式に関する情報を示します。

条件式

次の数式を使用して、ステートメントの条件をテストし、Yes または No の値を返すこと、OK または Not OK などの代替値をテストすること、または null 値を表す空白やダッシュを返すことができます。

ある数値が別の数値より大きいか小さいかを確認する

この比較を実行するには IF 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

15000

9000

=[列 1]>[列 2]

列 1 が列 2 より大きいか (Yes)

15000

9000

=IF([列 1]<=[列 2], "OK", "Not OK")

列 1 が列 2 以下であるか (Not OK)

列の内容の比較後に論理値を返す

結果が論理値 (Yes または No) の場合は、AND 関数、OR 関数、および NOT 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

15

9

8

=AND([列 1]>[列 2], [列 1]<[列 3])

15 は 9 より大きく 8 より小さいか (No)

15

9

8

=OR([列 1]>[列 2], [列 1]<[列 3])

15 は 9 より大きいか、または 8 より小さいか (Yes)

15

9

8

=NOT([列 1]+[列 2]=24)

15 + 9 は 24 と等しくないか (No)

結果が別の計算の場合、または Yes か No 以外の値の場合は、IF 関数、AND 関数、および OR 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

15

9

8

=IF([列 1]=15, "OK", "Not OK")

列 1 の値が 15 と等しい場合は "OK" を返します。(OK)

15

9

8

=IF(AND([列 1]>[列 2], [列 1]<[列 3]), "OK", "Not OK")

15 が 9 より大きく 8 より小さい場合は "OK" を返します。(Not OK)

15

9

8

=IF(OR([列 1]>[列 2], [列 1]<[列 3]), "OK", "Not OK")

15 が 9 より大きいか 8 より小さい場合は "OK" を返します。(OK)

ゼロを空白またはダッシュとして表示する

ゼロを表示するには単純な計算を実行します。空白またはダッシュを表示するには、IF 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

10

10

=[列 1]-[列 2]

最初の数値から 2 番目の数値を引いた値。(0)

15

9

=IF([列 1]-[列 2],"-",[列 1]-[列 2])

値がゼロの場合はダッシュを返します。(-)

列のエラー値を非表示にする

エラー値の代わりにダッシュ、#N/A、または NA を表示するには、ISERROR 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

10

0

=[列 1]/[列 2]

エラー (#DIV/0) になります。

10

0

=IF(ISERROR([列 1]/[列 2]),"NA",[列 1]/[列 2])

値がエラーの場合は NA を返します。

10

0

=IF(ISERROR([列 1]/[列 2]),"-",[列 1]/[列 2])

値がエラーの場合はダッシュを返します。

日付と時刻の数式

次の数式を使用して、日付への日数、月数、または年数の加算、2 つの日付の差の計算、時間から 10 進値への変換など、日付と時刻に基づく計算を実行できます。

日付を加算する

日付に日数を加算するには、加算 (+) 演算子を使用します。

注意

日付を操作する場合、集計列の戻り値の型は日付と時刻に設定する必要があります。

列 1

列 2

数式

説明 (考えられる結果)

6/9/2007

3

=[列 1]+[列 2]

2007 年 6 月 9 日に 3 日を加算します (6/12/2007)

12/10/2008

54

=[列 1]+[列 2]

2008 年 12 月 10 日に 54 日を追加します (2/2/2009)

日付に月数を加算するには、DATE 関数、YEAR 関数、MONTH 関数、および DAY 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

6/9/2007

3

=DATE(YEAR([列 1]),MONTH([列 1])+[列 2],DAY([列 1]))

2007 年 6 月 9 日に 3 か月を加算します (9/9/2007)

12/10/2008

25

=DATE(YEAR([列 1]),MONTH([列 1])+[列 2],DAY([列 1]))

2008 年 12 月 10 日に 25 か月を加算します (1/10/2011)

日付に年数を加算するには、DATE 関数、YEAR 関数、MONTH 関数、および DAY 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

6/9/2007

3

=DATE(YEAR([列 1])+[列 2],MONTH([列 1]),DAY([列 1]))

2007 年 6 月 9 日に 3 年を加算します (6/9/2010)

12/10/2008

25

=DATE(YEAR([列 1])+[列 2],MONTH([列 1]),DAY([列 1]))

2008 年 12 月 10 日に 25 年を加算します (12/10/2033)

日付に日数、月数、および年数の組み合わせを加算するには、DATE 関数、YEAR 関数、MONTH 関数、および DAY 関数を使用します。

列 1

数式

説明 (考えられる結果)

6/9/2007

=DATE(YEAR([列 1])+3,MONTH([列 1])+1,DAY([列 1])+5)

2007 年 6 月 9 日に 3 年 1 か月と 5 日を加算します (7/14/2010)

12/10/2008

=DATE(YEAR([列 1])+1,MONTH([列 1])+7,DAY([列 1])+5)

2008 年 12 月 10 日に 1 年 7 か月と 5 日を加算します (7/15/2010)

2 つの日付の差を計算する

この計算を実行するには DATEDIF 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

01-Jan-1995

15-Jun-1999

=DATEDIF([列 1], [列 2],"d")

2 つの日付の間の日数を返します (1626)

01-Jan-1995

15-Jun-1999

=DATEDIF([列 1], [列 2],"ym")

年の部分を無視して、日付の間の月数を返します (5)

01-Jan-1995

15-Jun-1999

=DATEDIF([列 1], [列 2],"yd")

年の部分を無視して、日付の間の日数を返します (165)

2 つの時刻の差を計算する

標準時間形式 (時間:分:秒) で結果を表示するには、減算演算子 (-) および TEXT 関数を使用します。このメソッドを使用するには、時間が 24 時間以下、分および秒が 60 以下である必要があります。

列 1

列 2

数式

説明 (考えられる結果)

06/09/2007 10:35 AM

06/09/2007 15:30:00 AM

=TEXT([列 2]-[列 1],"h")

2 つの時刻の間の時間数 (4)

06/09/2007 10:35 AM

06/09/2007 15:30:00 AM

=TEXT([列 2]-[列 1],"h:mm")

2 つの時刻の間の時間と分 (4:55)

06/09/2007 10:35 AM

06/09/2007 15:30:00 AM

=TEXT([列 2]-[列 1],"h:mm:ss")

2 つの時刻の間の時間、分、および秒 (4:55:00)

1 つの時間単位に基づいて結果全体を表示するには、INT 関数を使用するか、HOUR 関数、MINUTE 関数、または SECOND 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

06/09/2007 10:35 AM

06/10/2007 3:30 PM

=INT(([列 2]-[列 1])*24)

2 つの時刻の間の合計時間数 (28)

06/09/2007 10:35 AM

06/10/2007 3:30 PM

=INT(([列 2]-[列 1])*1440)

2 つの時刻の間の合計分数 (1735)

06/09/2007 10:35 AM

06/10/2007 3:30 PM

=INT(([列 2]-[列 1])*86400)

2 つの時刻の間の合計秒数 (104100)

06/09/2007 10:35 AM

06/10/2007 3:30 PM

=HOUR([列 2]-[列 1])

差が 24 を超えない場合に、2 つの時刻の間の時間数 (4)

06/09/2007 10:35 AM

06/10/2007 3:30 PM

=MINUTE([列 2]-[列 1])

差が 60 を超えない場合に、2 つの時刻の間の分数 (55)

06/09/2007 10:35 AM

06/10/2007 3:30 PM

=SECOND([列 2]-[列 1])

差が 60 を超えない場合に、2 つの時刻の間の秒数 (0)

時間を変換する

時間を標準時間形式から 10 進数に変換するには、INT 関数を使用します。

列 1

数式

説明 (考えられる結果)

10:35 AM

=([列 1]-INT([列 1]))*24

12:00 AM からの時間数 (10.583333)

12:15 PM

=([列 1]-INT([列 1]))*24

12:00 AM からの時間数 (12.25)

時間を 10 進数から標準時間形式 (時間:分:秒) に変換するには、除算演算子と TEXT 関数を使用します。

列 1

数式

説明 (考えられる結果)

23:58

=TEXT(列 1/24, "hh:mm:ss")

12: 00 AM からの時間数、分数、および秒数 (00:59:55)

2:06

=TEXT(列 1/24, "h:mm")

12: 00 AM からの時間数と分数 (0:05)

ユリウス日を挿入する

ユリウス日は、現在の年と年初からの日数の組み合わせである日付形式を表します。たとえば、2007 年 1 月 1 日は 2007001 と表され、2007 年 12 月 31 日は 2007365 と表されます。この形式は、ユリウス暦に基づいていません。

日付をユリウス日に変換するには、TEXT 関数および DATEVALUE 関数を使用します。

列 1

数式

説明 (考えられる結果)

6/23/2007

=TEXT([列 1],"yy")&TEXT(([列 1]-DATEVALUE("1/1/"& TEXT([列 1],"yy"))+1),"000")

2 桁の年でのユリウス形式の日付 (07174)

6/23/2007

=TEXT([列 1],"yyyy")&TEXT(([列 1]-DATEVALUE("1/1/"&TEXT([列 1],"yy"))+1),"000")

4 桁の年でのユリウス形式の日付 (2007174)

日付を天文学で使用されるユリウス日に変換するには、定数 2415018.50 を使用します。この数式は、1900 の日付体系を使用している場合に 1901 年 3 月 1 日より後の日付に対してのみ機能します。

列 1

数式

説明 (考えられる結果)

6/23/2007

=[列 1]+2415018.50

天文学で使用されているユリウス形式での日付 (2454274.50)

日付を曜日として表示する

日付を曜日のテキストに変換するには、TEXT 関数および WEEKDAY 関数を使用します。

列 1

数式

説明 (考えられる結果)

19-Feb-2007

=TEXT(WEEKDAY([列 1]), "dddd")

日付の曜日を計算し、完全な曜日名を返します (Monday)

3-Jan-2008

=TEXT(WEEKDAY([列 1]), "ddd")

日付の曜日を計算し、省略された曜日名を返します (Thu)

数学的な数式

次の数式を使用して、数値の加算、減算、乗算、除算、平均値や中央値の計算、数値の丸め、値のカウントなど、さまざまな数学計算を実行できます。

数値を加算する

1 行の 2 つ以上の列の数値を加算するには、加算演算子 (+) または SUM 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

6

5

4

=[列 1]+[列 2]+[列 3]

最初の 3 列の値を加算します (15)

6

5

4

=SUM([列 1],[列 2],[列 3])

最初の 3 列の値を加算します (15)

6

5

4

=SUM(IF([列 1]>[列 2], [列 1]-[列 2], 10), [列 3])

列 1 が列 2 より大きい場合は、その差と列 3 を加算します。それ以外の場合は 10 と列 3 を加算します (5)

数値を減算する

1 行の 2 つ以上の列の数値を減算するには、減算演算子 (-) または負の数値を指定した SUM 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

15000

9000

-8000

=[列 1]-[列 2]

15000 から 9000 を減算します (6000)

15000

9000

-8000

=SUM([列 1], [列 2], [列 3])

負の値を含め、最初の 3 列の数値を加算します (16000)

2 つの数値の差を割合として計算する

減算 (-) 演算子および除算 (/) 演算子と、ABS 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

2342

2500

=([列 2]-[列 1])/ABS([列 1])

変化の割合 (6.75% または 0.06746)

数値を乗算する

1 行の 2 つ以上の列の数値を乗算するには、乗算演算子 (*) または PRODUCT 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

5

2

=[列 1]*[列 2]

最初の 2 列の数値を乗算します (10)

5

2

=PRODUCT([列 1], [列 2])

最初の 2 列の数値を乗算します (10)

5

2

=PRODUCT([列 1],[列 2],2)

最初の 2 列の数値と 2 を乗算します (20)

数値を除算する

1 行の 2 つ以上の列の数値を除算するには、除算演算子 (/) を使用します。

列 1

列 2

数式

説明 (考えられる結果)

15000

12

=[列 1]/[列 2]

15000 を 12 で除算します (1250)

15000

12

=([列 1]+10000)/[列 2]

15000 と 10000 を加算し、合計を 12 で除算します (2083)

数値の平均を計算する

平均は平均値とも呼ばれます。1 行の 2 つ以上の列の数値の平均を計算するには、AVERAGE 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

6

5

4

=AVERAGE([列 1], [列 2],[列 3])

最初の 3 列の数値の平均 (5)

6

5

4

=AVERAGE(IF([列 1]>[列 2], [列 1]-[列 2], 10), [列 3])

列 1 が列 2 よりも大きい場合は、その差と列 3 の平均を計算します。それ以外の場合は、値 10 と列 3 の平均を計算します (2.5)

数値の中央値を計算する

中央値は、順序付けられた数値の範囲の中心にある値です。数値のグループの中央値を計算するには、MEDIAN 関数を使用します。

A

B

C

D

E

F

数式

説明 (結果)

10

7

9

27

0

4

=MEDIAN(A, B, C, D, E, F)

最初の 6 列の数値の中央値 (8)

範囲内の最小数または最大数を計算する

1 行の 2 つ以上の列の最小数または最大数を計算するには、MIN 関数および MAX 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

10

7

9

=MIN([列 1], [列 2], [列 3])

最小数 (7)

10

7

9

=MAX([列 1], [列 2], [列 3])

最大数 (10)

値をカウントする

数値をカウントするには、COUNT 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

Apple

12/12/2007

=COUNT([列 1], [列 2], [列 3])

数値を含む列の数をカウントします。日付と時刻、テキスト、および null 値は除外します (0)

$12

#DIV/0!

1.01

=COUNT([列 1], [列 2], [列 3])

数値を含む列の数をカウントしますが、エラーおよび論理値は除外します (2)

数値を割合で増減する

この計算を実行するにはパーセント (%) 演算子を使用します。

列 1

列 2

数式

説明 (考えられる結果)

23

3%

=[列 1]*(1+5%)

列 1 の数値を 5% 増やします (24.15)

23

3%

=[列 1]*(1+[列 2])

列 1 の数値を列 2 のパーセント値 (3%) だけ増やします (23.69)

23

3%

=[列 1]*(1-[列 2])

列 1 の数値を列 2 のパーセント値 (3%) だけ減らします (22.31)

数値を累乗する

この計算を実行するには、指数演算子 (^) または POWER 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

5

2

=[列 1]^[列 2]

5 の 2 乗を計算します (25)

5

3

=POWER([列 1], [列 2])

5 の 3 乗を計算します (125)

数値を丸める

数値を丸めるには、ROUNDUP 関数、ODD 関数、または EVEN 関数を使用します。

列 1

数式

説明 (考えられる結果)

20.3

=ROUNDUP([列 1],0)

20.3 を最も近い整数に切り上げます (21)

-5.9

=ROUNDUP([列 1],0)

-5.9 を最も近い整数に切り上げます (-5)

12.5493

=ROUNDUP([列 1],2)

12.5493 を 100 分の 1 単位 (小数点以下 2 桁) に切り上げます (12.55)

20.3

=EVEN([列 1])

20.3 を最も近い偶数に切り上げます (22)

20.3

=ODD([列 1])

20.3 を最も近い奇数に切り上げます (21)

数値を切り捨てるには、ROUNDDOWN 関数を使用します。

列 1

数式

説明 (考えられる結果)

20.3

=ROUNDDOWN([列 1],0)

20.3 を最も近い整数に切り捨てます (20)

-5.9

=ROUNDDOWN([列 1],0)

-5.9 を最も近い整数に切り捨てます (-6)

12.5493

=ROUNDDOWN([列 1],2)

12.5493 を 100 分の 1 単位 (小数点以下 2 桁) に切り捨てます (12.54)

数値を最も近い数値または小数に四捨五入するには、ROUND 関数を使用します。

列 1

数式

説明 (考えられる結果)

20.3

=ROUND([列 1],0)

小数部が .5 より小さいため、20.3 を切り捨てます (20)

5.9

=ROUND([列 1],0)

小数部が .5 より大きいため、5.9 を切り上げます (6)

-5.9

=ROUND([列 1],0)

小数部が -.5 より小さいため、-5.9 を切り捨てます (-6)

1.25

=ROUND([列 1], 1)

数値を最も近い 10 分 1 単位 (小数点以下 1 桁) に四捨五入します。丸められる部分は 0.05 以上なので、数値は切り上げられます (結果 : 1.3)

30.452

=ROUND([列 1], 2)

数値を最も近い 100 分 1 単位 (小数点以下 2 桁) に四捨五入します。丸められる 0.002 の部分は 0.005 より小さいため、数値は切り捨てられます (結果 : 30.45)

数値を 0 より上の有効桁に丸めるには、ROUND 関数、ROUNDUP 関数、ROUNDDOWN 関数、INT 関数、および LEN 関数を使用します。

列 1

数式

説明 (考えられる結果)

5492820

=ROUND([列 1],3-LEN(INT([列 1])))

数値を 3 桁の有効桁に四捨五入します (5490000)

22230

=ROUNDDOWN([列 1],3-LEN(INT([列 1])))

数値を 3 桁の有効桁に切り捨てます (22200)

5492820

=ROUNDUP([列 1], 5-LEN(INT([列 1])))

数値を 5 桁の有効桁に切り上げます (5492900)

テキスト数式

次の数式を使用して、複数の列の値の結合や連結、列の内容の比較、文字やスペースの削除、文字の繰り返しなど、テキストを操作できます。

テキストの大文字と小文字を変更する

テキストの大文字と小文字を変更するには、UPPER 関数、LOWER 関数、または PROPER 関数を使用します。

列 1

数式

説明 (考えられる結果)

nina Vietzen

=UPPER([列 1])

テキストを大文字に変更します (NINA VIETZEN)

nina Vietzen

=LOWER([列 1])

テキストを小文字に変更します (nina vietzen)

nina Vietzen

=PROPER([列 1])

テキストをタイトル ケース (単語の先頭文字を大文字、2 文字目以降を小文字) に変更します (Nina Vietzen)

姓と名を結合する

姓と名を結合するには、アンパサンド演算子 (&) または CONCATENATE 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

Carlos

Carvallo

=[列 1]&[列 2]

2 つの文字列を結合します (CarlosCarvallo)

Carlos

Carvallo

=[列 1]&" "&[列 2]

2 つの文字列をスペースで区切って結合します (Carlos Carvallo)

Carlos

Carvallo

=[列 2]&", "&[列 1]

2 つの文字列をコンマとスペースで区切って結合します (Carvallo, Carlos)

Carlos

Carvallo

=CONCATENATE([列 2], ",", [列 1])

2 つの文字列をコンマで区切って結合します (Carvallo,Carlos)

異なる列のテキストと数値を結合する

テキストと数値を結合するには、CONCATENATE 関数、アンパサンド演算子 (&)、または TEXT 関数とアンパサンド演算子を使用します。

列 1

列 2

数式

説明 (考えられる結果)

Yang

28

=[列 1]&" sold "&[列 2]&" units."

上記の内容を語句に結合します (Yang sold 28 units.)

Dubois

40%

=[列 1]&" sold "&TEXT([列 2],"0%")&" of the total sales."

上記の内容を語句に結合します (Dubois sold 40% of the total sales.)

注意   TEXT 関数は、基になる値 (0.4) の代わりに、列 2 の書式設定された値を追加します。

Yang

28

=CONCATENATE([列 1]," sold ",[列 2]," units.")

上記の内容を語句に結合します (Yang sold 28 units.)

テキストを日付または時刻と結合する

テキストを日付または時刻と結合するには、TEXT 関数およびアンパサンド演算子 (&) を使用します。

列 1

列 2

数式

説明 (考えられる結果)

Billing Date

5-Jun-2007

="Statement date: "&TEXT([列 2], "d-mmm-yyyy")

テキストを日付と結合します (Statement date: 5-Jun-2007)

Billing Date

5-Jun-2007

=[列 1]&" "&TEXT([列 2], "mmm-dd-yyyy")

異なる列のテキストと日付を 1 つの列に結合します (Billing Date Jun-05-2007)

列の内容を比較する

1 つの列を別の列または値の一覧と比較するには、EXACT 関数と OR 関数を使用します。

列 1

列 2

数式

説明 (考えられる結果)

BD122

BD123

=EXACT([列 1],[列 2])

最初の 2 列の内容を比較します (No)

BD122

BD123

=EXACT([列 1], "BD122")

列 1 の内容を文字列 "BD122" と比較します (Yes)

列値またはその一部が特定のテキストと一致するかどうかを判断する

列値またはその一部が特定のテキストと一致するかどうかを調べるには、IF 関数、FIND 関数、SEARCH 関数、および ISNUMBER 関数を使用します。

列 1

数式

説明 (考えられる結果)

Vietzen

=IF([列 1]="Vietzen", "OK", "Not OK")

列 1 が Vietzen かどうかを判断します (OK)

Vietzen

=IF(ISNUMBER(FIND("v",[列 1])), "OK", "Not OK")

列 1 に文字 v が含まれているかどうかを判断します (OK)

BD123

=ISNUMBER(FIND("BD",[列 1]))

列 1 に BD が含まれているかどうかを判断します (Yes)

空白以外の列をカウントする

空白以外の列をカウントするには、COUNTA 関数を使用します。

列 1

列 2

列 3

数式

説明 (考えられる結果)

Sales

19

=COUNTA([列 1], [列 2])

空白以外の列数をカウントします (2)

Sales

19

=COUNTA([列 1], [列 2], [列 3])

空白以外の列数をカウントします (2)

テキストから文字を削除する

テキストから文字を削除するには、LEN 関数、LEFT 関数、および RIGHT 関数を使用します。

列 1

数式

説明 (考えられる結果)

Vitamin A

=LEFT([列 1],LEN([列 1])-2)

左から開始して 7 (9-2) 文字を返します (Vitamin)

Vitamin B1

=RIGHT([列 1], LEN([列 1])-8)

右から開始して 2 (10-8) 文字を返します (B1)

列の先頭と末尾から空白を削除する

列から空白を削除するには TRIM 関数を使用します。

列 1

数式

説明 (考えられる結果)

Hello there!

=TRIM([列 1])

先頭と末尾から空白を削除します (Hello there!)

列内の文字を繰り返す

列内の文字を繰り返すには、REPT 関数を使用します。

数式

説明 (考えられる結果)

=REPT(".",3)

ピリオドを 3 回繰り返します (...)

=REPT("-",10)

ダッシュを 10 回繰り返します (----------)

See Also

参照

SPFieldCalculated