OpenOfficeで過去5年間の最多安打の記録を調べる INDEX関数とMATCH関数を使用した例 

送信者 OpenOffice

上の表は、過去5年間の5人の選手の安打記録です。右端に表示しているのが、この5人のうちでの最多安打の記録です。
この記録の求め方を、ここでは紹介します。
数式と構成MATCH関数の注意 ●記録の本数を求める該当のセルを塗りつぶす ●参考記事とサンプルファイル

数式と構成

G列には個人別の最多安打が表示されています。また、7行目には年間最多安打が表示されています。個人別の最多安打と年間最多安打の記録が交差するところを、過去5年間の記録だと考えてよさそうです。

何年に記録された安打数が年間最多安打
年別の最多安打の記録の中で、一番大きい数字が記録されている年が分かればいいのでINDEX関数とMATCH関数を使って検索します。
関数名:MATCH関数
書式:=MATCH(検索する値;範囲;タイプ)
何ができる:検索する値が、範囲の中で何行目(何列目)にあるかを返す
平たく書くと:=MATCH(MAX(B7:F7);A7:F7;0)で、4が返されます。

注意すること:検索する値を求めるMAX関数での範囲の指定と、MATCTH関数の範囲の指定です。
MAX関数で範囲を指定するときは、対象の数字が列挙されているB列からF列を対象にして、MAX(B7;F7) としても問題ありません。が、MATCH関数では、見出し列のA列から範囲を指定する必要があります。MATCH関数で、B7:F7と範囲を指定してしまうと、3が返されて、INDEX関数と組み合わせるときに支障が出ます。

さて、MATCH関数で4という値を得ることができたのでこの値を、INDEX関数に当てはめて、何年に記録されたかを求めます。
関数名:INDEX関数
書式:=INDEX(範囲;行番号;列番号)
何ができる:指定した行番号と列番号が交差するセルにある値を返す
平たく書くと:=INDEX(A1:F7;1;MATCH(MAX(B7:F7);A7:F7;0))で、2009が返されます。
求める値は、1行目に表示されている年なので1と指定し、MATCH関数で得られる値を列番号に当てはめて年を求める数式です。

誰が記録した安打数が年間最多安打
年を求めたのと同じ要領で、INDEX関数とMATCH関数を組み合わせて求められます。まず、MATCH関数で、何行目にあるデータかを求めます。
=MATCH(MAX(G2:G6);G1:G6;0) これで、G2:G6のなかにある最大の値がG1:G6のなかで上から何行目にあるかが求められます。
上の例の場合6行目にあるので、6が返されます。このデータをINDEX関数に当てはめると、
=INDEX(A1:G6;MATCH(MAX(G2:G6);G1:G6;0);1) 範囲のなかで、選手名を求めたいので列番号を1と指定し、MATCH関数で得られる値を行番号に当てはめて選手名を求める数式です。

*MATCH関数の注意
MATCH関数のタイプ(照合の型を1に指定すると、検索値以下の最大の値が検索対象になります。
ただし、データを昇順に並べ替えておく必要があります。
MATCH関数のタイプ(照合の型を-1に指定すると、検索値以上の最小の値が検索対象になります。
ただし、データを降順に並べ替えておく必要があります。
とは言いながら、上の表の場合、年に数字を入れているからか、並べ替えのとき見出し行を設定できません。したがって、一行目も並べ替えの対象になってしまいます。これを回避するためには、年の数字のあとに、年などの文字を入れて文字列として認識できる形にしなければいけないようです。OpenOfficeでは。

記録の本数を求めるには
これは簡単で、MAX関数で対象の範囲から最大の本数を求めればいいので、=MAX(B2:F7) で求められます。

さらに該当データを塗りつぶすには
B2セルを選択します。
ツールバーの書式から、条件付きの書式設定で設定します。
書式の条件を「セルの値が」「次の値に等しい」に指定し、値をMAX($B$2:$F$6)にして、OKをクリックします。
新しいスタイルをクリックして背景タブを選択し、塗りつぶしたい色を選択してOKをクリックします。
B2セルをコピーして、対象のほかのセルに書式を貼り付けます。書式の貼り付け方は、こちら

このサンプルファイルは、calc079.odsをダウンロードしてください。
参考記事:
OpenOfficeで成績表のなかの特定のデータにささっとアクセスする