┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.041==│
   └──────────────────────────┘

◆ 今日の問題 「計算方法だけでなく項目名も切り替える」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  前回は、C2のセルにD列の数字を入れるだけで、その計算が出来るよ
  うにしたが、今回は、A8に計算方法も表示するようにしたい。A8に関
  数を設定せよ。
  (例えば、C2に、1 を入れると、A8に「平均」が表示されるように)

  ※ 前回の表。B8には、=SUBTOTAL(C2,B2:B7) が入っているので、C2
    のセルにD列の数字を入れると、それに応じた計算が行われる。
     例)9を入れると「合計」が計算される

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃氏名  │得点  │計算方法│    9│合計  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃大場佳代│  1200│    │    1│平均  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃阿部沙織│  1600│    │    4│最大値 ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃山形三重│  1400│    │    5│最小値 ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃高橋由美│  1300│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃本間貝菜│  1200│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃7┃惣田ヨネ│  1100│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃8┃    │=SUBTOTAL(C2,B2:B7)     │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  A8のセルに =VLOOKUP(C2,D1:E4,2,0) と入力

 ─────────────────────────────────

 ・つまり、D1:E4 を検索する表として利用するということです。それさ
  えわかれば、普通のVLOOKUP関数と同じです。

 ・VLOOKUP関数 は、指定された表の左端列と一致する値を同じ行から取
  り出す役目をします。公式は、

    =VLOOKUP(検索値,表の範囲,列番号,検索の型)

  これまで何度も取り上げました。一番やさしい例は、122号 で説明し
  ていますので、初めての方は参考にしてください。

☆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━★

 ・前号と本号はセットで使うといいと思います。そうすれば、どんな計
  算をしたのか一目瞭然です。計算方法を切り替えるだけでなく、項目
  名も切り替えられるようにしましょう。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.042==│
   └──────────────────────────┘

◆ 今日の問題 「複数の当たり数字から当たり・外れを表示させる」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  3つの当たりくじがある。当選番号の欄(B1:D1) に数字を入れると、
  当選した人に「当たり」と表示するように関数を設定せよ。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃当選番号│    4│   21│   34│    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃    │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃番号  │氏名  │結果  │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃    1│飯田沙織│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃    2│安田恵子│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃    3│阿部冬美│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃7┃    4│矢口麻衣│当たり │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃8┃    5│吉沢仁美│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃9┃    6│辻村望美│    │    │    ┃
  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
   ┠─╂────┼────┼────┼────┼────┨
   ┃23┃   20│後藤麻里│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃24┃   21│駕籠亜生│当たり │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃25┃   22│石川里奈│    │    │    ┃
  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
  〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
   ┠─╂────┼────┼────┼────┼────┨
   ┃37┃   34│中沢綾子│当たり │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃38┃   35│高橋愛乃│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃39┃   36│小川真子│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃40┃   37│新関理沙│    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  C4のセルに =IF(OR(A4=$B$1,A4=$C$1,A4=$D$1),"当たり","")

  フィルハンドルをダブルクリック

 ─────────────────────────────────

 ・B1、C1、D1のいずれかが一致していれば当たりですから、OR関数を使
  います。OR関数の意味は「または」。つまり、部分一致していればい
  いということです。

 ・注意していただきたいのは、コピーする関係上、当選番号が動かない
  ように絶対参照にすることです。そうしないと、B1、C1、D1の部分が
  スライドしてしまいます。(絶対参照については参考を見てください)

 ・他にも、=IF(COUNTIF($B$1:$D$1,A4),"当たり","")でもOK。これは、
  COUNTIF関数で、0 以外は当たりを 0 の場合は空白をということです。
  こちらならば、一致した場合は、1 になりますので当たりが表示され
  ます。

 ◆参考◆ 絶対参照と相対参照について
 -----------------------------------------------------------------

  絶対参照とは、フィルハンドルでコピーしても値の変化しない参照方
  法です。例えば、「$A$1」ように、$ マークをつけると、その部分は
  変化しません。「$A1」や「A$1」のように片方だけ固定することもで
  きます。

  それに対して、通常使っているセル参照が、相対参照で、単に、A1の
  ように表記します。これは、フィルハンドルでコピーすると、相対的
  に変化します。

  絶対参照を作りたいときは、直接 $マークをつけもいいのですが、と
  りあえず、A1と入力した時点で、F4キーを押すと、自動的に絶対参照
  になります。また、F4キーを続けて押すと、片方だけ固定など、いろ
  いろなパターンが順番に現れますから、試してみてください。

  F4キーは、関数の貼り付けボックスを使い、数式パレットを使ってい
  るときも有効です。また、後から、その部分をクリックして、変更す
  ることも可能ですので十分利用してください。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.043==│
   └──────────────────────────┘

◆ 今日の問題 「最新の顧客を5人別表示にする」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  下図のように、A列に予約客の名前を次々書いていき、最新の5名を
  C2からC6までに表示させるようにしたい。C2からC6に関数を設定せよ。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃氏名  │    │最新5名│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃石田  │    │二瓶  │←現在の一番下  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃小山  │    │千田  │←下から2番目  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃酒井  │    │星川  │←下から3番目  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃大牟田 │    │西山  │←下から4番目  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃原島  │    │中   │←下から5番目  ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃7┃黒田  │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃8┃中   │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃9┃西山  │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃10┃星川  │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃11┃千田  │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃12┃二瓶  │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃13┃    │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃14┃    │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃15┃    │    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃16┃    │    │    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  C2のセルに、=INDIRECT("a"&COUNTA(A:A)-ROW()+2) と入力

  フィルハンドルで、C6までコピー

 ─────────────────────────────────

 ・今回は、INDIRECT関数を使う方法を採用しました。INDIRECT関数は、
  これまで何度か取り上げましたが、

   =INDIRECT(文字列としてのセル番地)

  で、セル番地の内容を表示します。ですから、

   =INDIRECT("A1")

  と、ダブルクォーテーション("")で、くくると、文字列と認識される
  ため、A1のセルの内容を表示します。

  注意していただきたいのは、=INDIRECT(セル番地)との区別です。

   =INDIRECT(A1)

  とやると、今度は、A1のセルの内容ではなく、A1のセルに入っている
  セル番地の内容を返します。例えば、A1のセルに、B2と入っていれば、
  B2の内容を表示するということです。この違いを理解しましょう。

 ・ここでは、まず、「a」という文字列に、COUNTA関数を使って、A列の
  総数を数えます。そうすることにより、最終行のセル番地を取得する
  ことができます。(※「A:A」は、A列全体という意味)

  例題でいうと、A列の総数は、12ですから、a&12 で、A12ということ
  になります。

 ・その後ろについている、ROW()+2 は、そのままコピーするための工夫
  です。わかりやすく式を作ると

   C2のセル =INDIRECT("a"&COUNTA(A:A)-0) 1番下のセル
   C3のセル =INDIRECT("a"&COUNTA(A:A)-1) 下から2番目のセル
   C4のセル =INDIRECT("a"&COUNTA(A:A)-2) 下から3番目のセル
   C5のセル =INDIRECT("a"&COUNTA(A:A)-3) 下から4番目のセル
   C6のセル =INDIRECT("a"&COUNTA(A:A)-4) 下から5番目のセル

  ということです。しかし、一つ一つ式を作るのが面倒ですので、行番
  号を表す ROW関数を使い、引き算の部分と一致させます。

   C2のセル 2行目にある → =ROW()は、2 → 2-2=0
   C3のセル 3行目にある → =ROW()は、3 → 3-2=1
   C4のセル 4行目にある → =ROW()は、4 → 4-2=2
   C5のセル 5行目にある → =ROW()は、5 → 5-2=3
   C6のセル 6行目にある → =ROW()は、6 → 6-2=4

  このように、ROW関数 をうまく使うことにより、一つの式をコピーす
  ることができます。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.044==│
   └──────────────────────────┘

◆ 今日の問題 「常時、年間の残り日数を数える」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  本日から、今年あと何日と表示させたい。関数を設定せよ。ただし、
  年が変わっても自動的に表示できるようにすること。

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  任意のセルに、=DATEDIF(TODAY(),DATE(YEAR(TODAY()),12,31),"D")
  と入力

 ─────────────────────────────────

 ・1年が 365日と決まっていれば、引き算を使う方法もありますが、閏
  年がある以上、それに対応できるようにしなければなりません。

  今回の関数の構造は、基本的には、DATEDIF 関数を使って年末までの
  日数を数えるものです。

  DATEDIF関数は、期間を求める関数で、公式は

   =DATEDIF(開始日,終了日,単位)

  単位は、「年」ならば "Y"、「月」ならば "M"、「日」ならば "D"を
  使います。ここでは、日にちを求めるわけですから、"D" を使います。

  解答の関数式は、おおまかに言うと、下のようになります。

   =DATEDIF(開始日,終了日,単位)
         ↓   ↓
        今日 その年の最後の日
         ↓   ↓
       TODAY() DATE(YEAR(TODAY()),12,31)

  今日の日付は、TODAY関数を使えば、常に、本日の日付を表せます。

  問題は、終了日ですが、その年の最後の日は、DATE関数をうまく使う
  ことにより可能になります。

  DATE関数は、=DATE(年,月,日) で、日付を作成します。

  ですから、=DATE(2006,12,31) で、2006/12/31 という日付データを
  作ることができるのです。

  今回の問題は、年が変わっても対応できるようにしなければならない
  ので、年の部分を少し工夫する必要があります。

  そこで、YEAR(TODAY()) で、本日の「年」を抽出します。これにより
  年が変わっても自動的に、その年の「年」になるので、常に、その年
  の残り日数を数えることができるのです。

☆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━★

 ・この式をどこかに入れておけば、常に年間カウントダウンを作ること
  ができます。12月31日には、0 が表示され、元旦になると、364(閏年
  ではない場合)が、自動的に表示されます。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.045==│
   └──────────────────────────┘

◆ 今日の問題 「常時、月間の残り日数を数える」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  今月は、残り何日と表示させたい。関数を設定せよ。ただし、月が変
  わっても自動的に表示できるようにすること。
A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  任意のセルに、=DATEDIF(TODAY(),EOMONTH(TODAY(),0),"D")と入力

 ─────────────────────────────────

 ・前回は、年間のカウントダウンでしたが、今回は、月間のカウントダ
  ウンです。考え方は同じです。まずは、DATEDIF関数を使います。

  DATEDIF関数は、期間を求める関数で、=DATEDIF(開始日,終了日,単位)
  でした。
   (詳しくは http://www.pat.hi-ho.ne.jp/hirosilk/fc041.htm#44

 ・今回の関数式の構造は、

   =DATEDIF(開始日,終了日,単位)
         ↓   ↓
        今日 その月の最後の日
         ↓   ↓
       TODAY() EOMONTH(TODAY(),0)

  EOMONTH関数は、指定した開始日から、指定した月数の月末の日付を
  返す関数です。ここでは、当月の最後の日付が返されます。

  この関数は、「分析ツール」がアドインされていないと使用できませ
  ん。[ツール]−[アドイン]で「分析ツール」にチェックを入れて
  ください。

  詳しくは、↓を参考にしてください。
  http://www.pat.hi-ho.ne.jp/hirosilk/fc031.htm#k036

  つまり、常に、その日から、その月の末日までの日数を数えることが
  できます。一つ式を作っておけば、月が変わっても、ずっと使えるの
  です。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.046==│
   └──────────────────────────┘

◆ 今日の問題 「一つ上のセルとの増減を計算する」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  下の図のように、一つ前のセルとの増減を示したい。B3に関数を設定
  せよ。ただし、行の削除を行っても式が壊れないようにすること。

  ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
  ┃ ┃A   │B   │C   │D   │E   ┃
  ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
  ┃1┃数値  │増減  │    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃2┃  1000│    │    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃3┃  1200│   200│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃4┃  1300│   100│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃5┃  1200│  -100│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃6┃  1200│    0│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃7┃  1300│   100│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃8┃    │    │    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃9┃    │    │    │    │    ┃
  ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  B3のセルに =IF(ISBLANK(A3),"",A3-OFFSET(A3,-1,0)) と入力

  必要な分だけ、フィルハンドルでコピー

 ─────────────────────────────────

 ・まず、A列のセルが空白の場合、右隣のセルを空白にする処理をしま
  す。今回は、ISBLANK 関数を使ってみました。もし、A3のセルが空白
  ならば、空白を。そうでなければ、A3-OFFSET(A3,-1,0,1,1)の処理を
  しなさいという意味です。

  問題の表は、A列のセルに数字を入れたらB列に増減が現れなければ
  意味がありませんから、この処理は必須です。ISBLANK 関数を使う代
  わりに =IF(A3="","",A3-OFFSET(A3,-1,0)) としてもかまいません。

 ・今回の主眼は、OFFSET関数です。この関数は、基準となるセルを中心
  として、そのセルからの距離でセル番地を取得します。

  公式は、=OFFSET(基準,行数,列数,[高さ],[幅]) です。ちょっと複雑
  ですので、一つ一つ解説します。

   基準:元になるセル番地(ここから距離をはかります)

   行数:行単位で動かす値(どのように動かすのかを数値で指定)

      0   動かさない

     正の数 下方向へ(「1」ならば1つ、「2」ならば2つ下へ)

     負の数 上方向へ(「-1」ならば1つ、「-2」ならば2つ上へ)

   列数:列単位で動かす値(どのように動かすのかを数値で指定)

      0   動かさない

     正の数 右方向へ(「1」ならば1つ、「2」ならば2つ右へ)

     負の数 左方向へ(「-1」ならば1つ、「-2」ならば2つ左へ)

   高さ:選択する行数を指定(省略可能、省略のときは「1」)

    幅 :選択する列数を指定(省略可能、省略のときは「1」)

  つまり、基準になるセルの一つ上の場合、行数は「-1」、列数は「0」
  になります。

  したがって、OFFSET(A3,-1,0) の部分の意味は、A3の一つ上のセル、
  つまり、A2ということになります。

  この設定にすると、(基準のセル)−(一つ上のセル)という計算が
  できるようになり、行を削除しても計算が狂いません。

☆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━★

 ・今回の方法、単純に考えると、=IF(ISBLANK(A3),"",A3-A2) でもいい
  ように思われます。もちろん、それでも正しく計算はされます。しか
  し、行を削除すると、参照するセル番地がなくなるため、エラーにな
  ってしまいます。その辺の違いを理解してください。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.047==│
   └──────────────────────────┘

◆ 今日の問題 「階乗を求める」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  任意の数の人間を1列に並べたい。下図のように、A2に人数を入れた
  ら、B2に順序の総数が入るように関数を組め。

  ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
  ┃ ┃A   │B   │C   │D   │E   ┃
  ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
  ┃1┃人数  │順序総数│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃2┃    │    │    │    │    ┃
  ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  B2のセルに =FACT(A2) と入力

 ─────────────────────────────────

 ・これは、この関数を知っているかどうかという問題です。FACT関数は、
  階乗を求める関数です。n個のものからn個を取る順列と同じことで
  すが、これを知っていると、かなり便利。

 ・例えば、6人を並べる並べ方は、何と 720通りもあります。数字を入
  れて確認してください。組合わせと違い順序も考慮も入れると、一気
  に数字が増えるのです。ちなみに、10人ならば、3628800 恐ろしい数
  字になります。

☆━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━★

 ・数字のマジックってすごいものですね。4人ならば、24通りなのに、
  5人になると、一気に 120通りになる。並べるという行為は、かなり
  大変な作業だと実感します。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.048==│
   └──────────────────────────┘

◆ 今日の問題 「2進数を調べる」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  下図のように、10進数の数字を2進数にしたい。関数を設定せよ。

  ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
  ┃ ┃A   │B   │C   │D   │E   ┃
  ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
  ┃1┃10進数 │2進数 │    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃2┃   10│  1010│    │    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃3┃   100│ 1100100│    │    │    ┃
  ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  B2のセルに =DEC2BIN(A2) と入力
  
  フィルハンドルでコピー

  (※)この関数は、分析ツールがオンになっていないと使用できませ
     ん。[ツール]−[アドイン]から「分析ツール」にチェック
     を入れてください。

 ─────────────────────────────────

 ・DEC2BIN 関数は、10進数を2進数に変換する関数です。公式は、
 
   =DEC2BIN(数値あるいはセル番地)

  です。ただし、511 までの数字しか変換されません。それ以上はエラ
  ーになります。(10ビットまでしか変換できないため)


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.049==│
   └──────────────────────────┘

◆ 今日の問題 「上位○%のタイムを求める」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  下図のように、E1のセルに、0から1の間の数字を入れて、上位○%に
  あたるタイムを表示させたい。E2のセルに関数を作成せよ。
  ( 0は最低、1は最高タイムを表し、0.2なら上位20%相当のタイム、
    0.5なら平均タイムを表すものとする)

  ┏━┳━━━━┯━━━━┯━━━━┯━━━━━┯━━━━┓
  ┃ ┃A   │B   │C   │D    │E   ┃
  ┣━╋━━━━┿━━━━┿━━━━┿━━━━━┿━━━━┫
  ┃1┃氏名  │タイム │    │上位○% │   0.2┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃2┃村崎色部│ 1:02:12│    │該当タイム│ 1:05:20┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃3┃清原納言│ 1:02:56│    │     │    ┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃4┃因幡福子│ 1:03:12│    │     │    ┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃5┃山内百代│ 1:04:02│    │     │    ┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃6┃木下音々│ 1:04:12│    │     │    ┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃7┃前田 梅│ 1:05:00│    │     │    ┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃8┃浅井市代│ 1:05:33│    │     │    ┃
  ┠─╂────┼────┼────┼─────┼────┨
  ┃9┃京極初代│ 1:06:33│    │     │    ┃
  ┗━┻━━━━┷━━━━┷━━━━┷━━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  E2のセルに =PERCENTILE(B2:B9,1-E1) と入力

  E2のセルの表示形式を h:mm:ss にする

 ─────────────────────────────────

 ・今回扱ったのは、PERCENTILE関数です。この関数は、百分率で、率に
  位置する値を返します。

  公式は、=PERCENTILE(セル範囲,率) 率は、1を100%とし、小数で指
  定します。

 ・今回は、タイムを扱っていますので、タイムの良いほう、つまり、数
  値の低いほうを上位としますので、1からE1の数値を引く形にしまし
  たが、点数などを扱う場合など、数値の大きいほうを上位にしたい場
  合は、そのまま、率を入れるだけで大丈夫です。

 ・それから、表示形式は、ユーザー定義を使って「時:分:秒」の形に
  しました。解答には書きませんでしたが、念のために、操作を確認し
  ておきます。

   [書式]−[セル]から「表示形式」のタブを開く

   「分類」から「ユーザー定義」を選ぶ

   「種類」から「h:mm:ss」を選ぶ
    (ない場合は、種類の上の細いボックスに直接入力してください)

 ・この関数は、今回の例のようにタイムの目安に使ったり、率で合格を
  決める場合などに使えます。


   ┌──────────────────────────┐
   │【関数コレクションシリーズ】   ==Number.050==│
   └──────────────────────────┘

◆ 今日の問題 「相対的にポイントを付ける」

Q━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  下図のように得点が記された表がある。これに対し、百分率でポイン
  トを付けたい。C列に関数を設定せよ。
  (下図のように、最も得点が高いものを「100」最も低いものを「0」
   として、残りを相対的に記してください)

  ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
  ┃ ┃A   │B   │C   │D   │E   ┃
  ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
  ┃1┃氏名  │得点  │ポイント│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃2┃広山晴海│  4840│  71.4│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃3┃高橋直子│  8230│  85.7│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃4┃渋井洋子│  4020│  57.1│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃5┃野口瑞樹│  8800│   100│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃6┃戸佐玲子│  2100│  28.5│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃7┃千葉政子│  1840│  14.2│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃8┃増田朱実│  1680│    0│    │    ┃
  ┠─╂────┼────┼────┼────┼────┨
  ┃9┃有盛悠子│  2400│  42.8│    │    ┃
  ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

A━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━☆

  C2のセルに =PERCENTRANK($B$2:$B$9,B2)*100 と入力

  フィルハンドルでコピー

 ─────────────────────────────────

 ・今回は、PERCENTRANK 関数です。この関数は、順位を相対的につける
  関数で、公式は次の通りです。

   =PERCENTRANK(セル範囲,セル番地)
            (※)セル範囲は絶対参照で設定してください

  この関数は、範囲内で、その値が全体の何%に値するのかを調べるこ
  とができます。

 ・通常のRANK関数は、順位しか出ませんが PERCENTRANK関数は、相対的
  な位置が出ますので、例えば、上位60%が合格というような計算をす
  る場合は便利です。

 ・尚、今回は、ポイント計算ということで、全体に 100をかけましたが、
  かけないで、表示形式を%にしてもかまいません。


★ エクセルの小技へ ★ ★ TOPのページへ ★ ★ 便利技(001〜010)へ ★