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

◆ 今日の問題 「二つのうち大きい値を選ぶ」

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

 次の表で、数値1と数値2のうち、大きいほうをC列に入れるには?
 ただし、IF関数は使わないこと。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃数値1 │数値2 │大きい数│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃  1234│  1322│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃  2240│  2360│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃  2480│  3220│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃  1660│  3110│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃  2343│  2422│    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  C2のセルを選択

  =MAX(A2:B2) あるいは、=MAX(A2,B2)と入力して、Enter

  C2のセルを選択して、フィルハンドルをダブルクリック

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

 ・最初に取り上げたのが、超簡単とも言える MAX関数です。しかし、基
  本的な関数をバカにしてはいけません。関数をマスターするための心
  が潜んでいます。

 ・通常、MAX関数は、=MAX(セル範囲) の形で設定します。また、バージ
  ョンが、2002以上の方ならば、[Σ]マークの右の小さい▼をクリック
  して「最大値」を選ぶ方法もあります。単に範囲内の最大値を選ぶだ
  けならば、それで十分です。

 ・しかし、更に使いこなしたいのならば、正式な書式を理解する必要が
  あります。

   正式な書式は「=MAX(数値1,数値2,数値3,・・・)」 です。

  つまり、本来は、セル範囲を入れるのではなく、数値を入れて、その
  中で最大のものを返すわけです。(数値は、最大30まで入れられます)

 ・簡単な例を挙げてみましょう。まずは、直接数値を入れる方法から。

   =MAX(1) → 1 =MAX(2) → 2

  何の意味もありませんが、引数が一つでも働きます。

   =MAX(1,2) → 2 =MAX(5,2) → 5

  こちらのほうが少しマシですが、これも、実践的にはあまり意味があ
  りませんね。そこで、セル番地を入ます。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃数値1 │数値2 │大きい数│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃  1234│  1322│=MAX(A2,B2)    │    ┃

  これならば、二つの中で最大、つまり、大きいほうを取り出すことが
  できます。

  この場合は、=MAX(A2:B2)でも、=MAX(A2,B2)でも同じですが、通常、
  =MAX(セル範囲)の形しか使ったことがない人は多いものです。

 ・そこで、これからは、カンマ区切りも注目しましょう。そうすること
  により応用範囲が広くなっていきます。次回以降、その辺の例も示し
  ていくつもりです。


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

◆ 今日の問題 「最低値を下回らないようにする」

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

 次の表のように、30以下のものは、すべて「30」にするには?ただし、
 B列に設定する関数は、IF関数を使わず、MAX関数を使うものとする。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃数値  │結果  │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃   55│   55│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃   28│   30│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃   62│   62│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃   12│   30│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃   30│   30│    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  B2のセルを選択

  =MAX(A2,30)、あるいは、=MAX(30,A2)と入力して、Enter

  B2のセルを選択して、フィルハンドルをダブルクリック

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

 ・前回申し上げたカンマ区切りの方法を知っている人には簡単な問題だ
  ったでしょう。

   復習すると =MAX(数値1,数値2,数値3,・・・)

  これが、本来の正式な書式でした。ここでは、A2のセルと「30」を比
  べて大きいほうを求めています。こうすることにより、30以上の数値
  は、そのままで、30以下の数値は、30になります。

 ・このようにカンマ区切りで設定することにより、ちょっとした応用技
  が可能になります。[Σ]マークの右の小さい▼をクリックして「最大
  値」を選ぶ方法ばかりやっていると、このような手は使えません。是
  非、単純な関数を見直してください。


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

◆ 今日の問題 「上限値を上回らないようにする」

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

 次の表のように、1200以上のものは、すべて「1200」にするには?ただ
 し、B列に設定する関数は、IF関数を使わないこと。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃数値  │結果  │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃  1240│  1200│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃  1055│  1055│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃  1360│  1200│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃   880│   880│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃  1070│  1070│    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  B2のセルを選択

  =MIN(A2,1200)、あるいは、=MIN(1200,A2)と入力して、Enter

  B2のセルを選択して、フィルハンドルをダブルクリック

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

 ・前回とは逆に上限値がある場合の処理方法です。MAX関数とMIN関数は、
  最大値と最小値の違いはありますが、使い方は、まったく一緒です。
  このようにカンマ区切りを使うことにより、簡単かつ実践的な式を作
  ることが可能になります。

 ・上限値がある場合、下限値がある場合をまとめると

   =MAX(セル番地,下限値)   =MIN(セル番地,上限値)

  のようになります。セル番地の部分は、セル範囲でもかまいません。
  どちらにしても、単純な関数をうまく使えるようにしましょう。


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

◆ 今日の問題 「上限値と下限値を定める」

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

 次の表のように、1000以上のものは、すべて「1000」に、500 未満のも
 のは、すべて「500」にするには? ただし、B列に設定する関数は、IF
 関数を使わないこと。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃数値  │結果  │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃  1080│  1000│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃   850│   850│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃   360│   500│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃   440│   500│    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃   960│   960│    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  B2のセルを選択

  =MAX(MIN(A2,1000),500)と入力して、Enter

  B2のセルを選択して、フィルハンドルをダブルクリック

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

 ・例えば、A2の1080で考えてみると、まず、MIN関数で、 1080と1000の
  どちらが小さいかを評価します。この場合は、1000のほうが小さいで
  すから、1000になります。次に、MAX関数で、1000と500を比べて大き
  いほうを選びます。その結果、1000になるわけです。

   =MAX(MIN(A2,1000),500)   →   =MAX(1000,500) → 1000
        ↓               ↑
     MIN(A2,1000)・・・A2は、1080だから、1000

  同じように、A4の 340 で考えると

   =MAX(MIN(A4,1000),500)   →   =MAX(340,500)  → 500
        ↓               ↑
     MIN(A4,1000)・・・A4は、340だから、 340

  このように、MAX関数とMIN関数を組み合わせることにより、上限値と
  下限値があるデータを処理することができます。
  
 【まとめ】 上限値、下限値の両方を処理する式

   =MAX(MIN(数値,上限値),下限値)


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

◆ 今日の問題 「複数行を合計する」

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

  下のような3列に並んでいる表がある。E9のセルに全部の合計を入れ
  たい。E9に入れる式は?

┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
┃ ┃A   │B   │C   │D   │E   │F   ┃
┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
┃1┃日付  │売り上げ│日付  │売り上げ│日付  │売り上げ┃
┠─╂────┼────┼────┼────┼────┼────┨
┃2┃1月1日│ 20,000│1月7日│ 24,000│1月13日│ 20,000┃
┠─╂────┼────┼────┼────┼────┼────┨
┃3┃1月2日│ 30,000│1月8日│ 30,000│1月14日│ 64,000┃
┠─╂────┼────┼────┼────┼────┼────┨
┃4┃1月3日│ 16,000│1月9日│ 20,000│1月15日│ 30,000┃
┠─╂────┼────┼────┼────┼────┼────┨
┃5┃1月4日│ 20,000│1月10日│ 52,000│1月16日│ 20,000┃
┠─╂────┼────┼────┼────┼────┼────┨
┃6┃1月5日│ 30,000│1月11日│ 20,000│1月17日│ 38,000┃
┠─╂────┼────┼────┼────┼────┼────┨
┃7┃1月6日│ 24,000│1月12日│ 24,000│1月18日│ 55,000┃
┠─╂────┼────┼────┼────┼────┼────┨
┃8┃    │    │    │    │    │    ┃
┠─╂────┼────┼────┼────┼────┼────┨
┃9┃    │    │    │合計  │    │    ┃
┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  E9のセルに、=SUM(B2:B7,D2:D7,F2:F7)と入力して、Enter

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

 ・基本中の基本の SUM関数ですが、案外、この技ができない人がいます
  ので取り上げてみました。SUM関数もMAX関数と同じように、

   =SUM(数値1,数値2,数値3・・・)

  とカンマ区切りするのが基本です。しかし、通常は、=SUM(セル範囲)
  で使う方が多いので、本来のカンマ区切りが忘れ去られている場合が
  あります。

  カンマ区切りがわかっていれば、本問のように、セル範囲をカンマで
  区切ることにより複数行を合計することができます。

 ・もちろん、[Σ] ボタンを押して、B2:B7をドラッグした後、Ctrlキー
  を押しながら、D2:D7、F2:F7とドラッグしても同じです。自動的に、
  カンマが入り、上記と同じ式が入ります。

 ・大切なことは、カンマで区切られたものがすべて合計されるというこ
  と。例えば、=SUM(セル範囲,10) とすれば、セル範囲を合計したもの
  に、10を加えたものが答えになります。それがわかると応用範囲が広
  がりますので頭に入れておいてください。


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

◆ 今日の問題 「累計をSUM 関数だけでする」

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

  下の図のようにC列に累計が出るようにしたい。C2に計算式を入れ
  て完成させなさい。ただし、足し算は使わず、必ず、SUM 関数を使う
  こと。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃日付  │入場人数│累計  │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃1月1日│  1000│  1000│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃1月2日│  1500│  2500│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃1月3日│  1200│  3700│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃1月4日│  3200│  6900│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃1月5日│  3400│  10300│    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  C2のセルを選択して、=IF(B2="","",SUM($B$2:B2)) と入力して、
  Enter キーで確定

  C2のセルを選択して、フィルハンドルでダブルクリック

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

 ・まず、IF関数で、空白の場合は空白にします。そして、空白でない場
  合にSUM 関数を入れます。式を先に入れておく場合に使います。

 ・ポイントは、SUM($B$2:B2)の部分。つまり、先頭を固定し、後方をス
  ライドさせる方法です。先頭は、$ マークがついていますから絶対参
  照。コピーしても位置が変化することがありません。それに対して、
  後方は、相対参照。コピーしたときスライドします。

  関数部分を図に表すと、下のようになります。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃日付  │入場人数│累計  │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃1月1日│  1000│=IF(B2="","",SUM($B$2:B2)) ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃1月2日│  1500│=IF(B3="","",SUM($B$2:B3)) ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃1月3日│  1200│=IF(B4="","",SUM($B$2:B4)) ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃1月4日│  3200│=IF(B5="","",SUM($B$2:B5)) ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃1月5日│  3400│=IF(B6="","",SUM($B$2:B6)) ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

  これで、常に累計していることがわかるでしょう。

 ・このように、累計したいときは、先頭を固定して後方をスライドさせ
  る方法がベストです。始点部分のセル番地を「絶対参照:相対参照」
  の形にするだけでできます。

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

 ・この先頭固定技は、これまでにも、何度か取り上げました。あらゆる
  ところで使える技ですので、しっかりマスターしてください。尚、絶
  対参照と相対参照の意味がわからない方は、下を参考にしてください。

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

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

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

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

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


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

◆ 今日の問題 「出納帳に式を入れる」

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

  下の図のような出納帳風の表がある。E3のセルには、どんな式を入れ
  ればいいか?

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃日付  │概要  │収入金額│支出金額│差引残高┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃    │(繰越金)│    │    │ 100,000┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃2月1日│食材  │    │ 46,200│ 53,800┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃    │調理器具│    │ 32,000│ 21,800┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃    │洗剤  │    │   280│ 21,520┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃    │売り上げ│ 246,500│    │ 268,020┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃7┃2月2日│食材  │    │ 32,000│ 236,020┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃8┃    │電気器具│    │  4,000│ 232,020┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃9┃    │売り上げ│ 314,300│    │ 546,320┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  E3のセルを選択

  =IF(AND(C3="",D3=""),"",SUM($E$2,$C$3:C3)-SUM($D$3:D3))と入力

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

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

 ・まず、「IF(AND(C3="",D3=""),""」の部分は、C3のセルD3のセルの両
  方が空白だったら空白にするということです。問題は、そうでない場
  合の処理。よく「E2+C3-D3」という式が使われます。もちろん、それ
  でも正しく計算されます。

 ・ただし、正解の式とは、かなり違います。何もなければ、どちらも正
  しく計算されるのですが、出納帳のようなものでは、後から行を挿入
  したり削除したりする場合があります。「E2+C3-D3」の式では、1行
  削除した時点で、一気に式が崩れます。それに対し、正解の式ならば、
  壊れることなく、そのまま使えます。

 ・また、行を挿入した場合、正解の式ならば、挿入した部分のみ上の式
  をフィルハンドルでコピーすればいいのですが、「E2+C3-D3」の式で
  は、その後ろにある式をすべて変更しなければなりません。フィルハ
  ンドルでコピーした後、もう一度、フィルハンドルをダブルクリック
  すればいいだけなのですが、それを忘れると正しい計算ができません。

 ・正解の式は、繰越金とそのセルまでの収入金額の合計からそのセルま
  での支出金額合計を引くという形をとっています。これで、正しい計
  算が行われるのです。尚、繰越金は、必ず絶対参照で入れてください。

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

 ・今回も、先頭固定、後方スライドという方式を使いました。このよう
  に合計する範囲を伸ばしていけるのが特徴です。前回も、お話しまし
  たように、始点部分のセル番地を「絶対参照:相対参照」の形にする
  だけでできますから、あらゆるところで使えないかを考えてみてくだ
  さい。


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

◆ 今日の問題 「関数だけで連続番号を入れる」

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

  下の図のように連続番号を入れたい。ただし、A1のセルに関数を入
  れて、フィルハンドルでコピーするものとする。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃    1│    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃    2│    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃    3│    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃    4│    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃    5│    │    │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃    6│    │    │    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  A1のセルに =ROW() と入力

  フィルハンドルをドラッグしてコピー

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

 ・普通、連続番号をつけるときは、A1のセルに「1」と入力してから
  [Ctrl]キーを押しながら、フィルハンドルでドラッグするか、A1の
  セルに「1」、A2のセルに「2」と入れて、二つのセルを選択して
  フィルハンドルでドラッグします。

  しかし、今回は、ROW関数 を使いました。この関数は、

   =ROW(セル番地) そのセル番地が属する行番号を返す

  つまり、=ROW(A5)ならば「5」、=ROW(C7)ならば「7」という具合に
  数値を返してくれます。また、 =ROW() のように、引数を入れない
  場合は、そのセルの位置の行番号を返してくれます。

 ・今回は、この性質を利用して、連続番号を作りました。この方法のい
  いところは、「行を挿入しても削除しても連番が崩れない」という点
  です。単に連続番号を作った場合は、挿入や削除をしたとき、改めて
  連番を打ち直さなければなりません。常時、連番を維持したい場合は、
  この方法を使いましょう。

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

 ・今回は、1行目から連番をつけましたが、2行目からつけたいときは、
  =ROW()-1 のように、マイナスをつけて調節してください。もちろん、
  3行目からならば、=ROW()-2 ですね。ROW関数 は、行番号を返すだ
  けの単純な関数ですが、脇役として大きな働きをします。必須の関数
  です。


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

◆ 今日の問題 「一つの式だけで九九の表を作る」

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

  下の図のような九九の表を作りたい。A1のセルに一つだけ式を入れ
  て、一発で完成させるにはどうしたらいいか?

  ┏━┳━━┯━━┯━━┯━━┯━━┯━━┯━━┯━━┯━━┓
  ┃ ┃A │B │C │D │E │F │G │H │I ┃
  ┣━╋━━┿━━┿━━┿━━┿━━┿━━┿━━┿━━┿━━┫
  ┃1┃  1│  2│  3│  4│  5│  6│  7│  8│  9┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃2┃  2│  4│  6│  8│ 10│ 12│ 14│ 16│ 18┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃3┃  3│  6│  9│ 12│ 15│ 18│ 21│ 24│ 27┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃4┃  4│  8│ 12│ 16│ 20│ 24│ 28│ 32│ 36┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃5┃  5│ 10│ 15│ 20│ 25│ 30│ 35│ 40│ 45┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃6┃  6│ 12│ 18│ 24│ 30│ 36│ 42│ 48│ 54┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃7┃  7│ 14│ 21│ 28│ 35│ 42│ 49│ 56│ 63┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃8┃  8│ 16│ 24│ 32│ 40│ 48│ 56│ 64│ 72┃
  ┠─╂──┼──┼──┼──┼──┼──┼──┼──┼──┨
  ┃9┃  9│ 18│ 27│ 36│ 45│ 54│ 63│ 72│ 81┃
  ┗━┻━━┷━━┷━━┷━━┷━━┷━━┷━━┷━━┷━━┛

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

  A1からI9までを範囲選択

  =ROW()*COLUMN() と入力

  Ctrlキーを押しながらEnter

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

 ・前回取り上げた、 ROW関数は、行番号を取得するものでした。ちょっ
  と復習してみましょう。

   =ROW() で、そのセルの属する行番号を返す

  同じように、列番号を返すには、COLUMN関数を使います。使い方は、
  ROW関数 と同じで、=COLUMN(セル番地)で、そのセル番地の列の番号を
  を表します。例えば、=COLUMN(C6)だったら、C列ですから3番目なの
  で、「3」ということになります。また、=COLUMN()のように引数を入
  れない場合は、そのセルの属する列番号を表します。

   =COLUMN() で、そのセルの属する列番号を返す

  よって、=ROW()*COLUMN() の式で、行番号×列番号になりますから、
  A1のセルからはじめると、九九の表になるわけです。

 ・また、はじめに式を入れて、フィルハンドルなどでコピーしてもかま
  いませんが、範囲を指定し、Ctrl+Enter で入れたほうが速いです。
  Ctrl+Enter は、同じ値を一気に入れる技です。

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

 ・もし、B2のセルからはじめたい場合は、=(ROW()-1)*(COLUMN()-1)
  として、行番号、列番号を合わせてやってください。それから、一気
  に入力する方法は、範囲を指定して、Ctrlを押しながら、D、Rと押
  してもかまいません。


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

◆ 今日の問題 「数字を下二桁と上の桁に分ける」

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

  下の図のように、A列に入っている数字を、下二桁と上の桁に分ける
  には、B2、C2に、どのような式を作ればいいか?ただし、文字列
  操作関数は使わないこと。

   ┏━┳━━━━┯━━━━┯━━━━┯━━━━┯━━━━┓
   ┃ ┃A   │B   │C   │D   │E   ┃
   ┣━╋━━━━┿━━━━┿━━━━┿━━━━┿━━━━┫
   ┃1┃数字  │上の桁 │下二桁 │    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃2┃ 123456│  1234│   56│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃3┃  6460│   64│   60│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃4┃   24│    0│   24│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃5┃10040345│ 100403│   45│    │    ┃
   ┠─╂────┼────┼────┼────┼────┨
   ┃6┃  14578│   145│   78│    │    ┃
   ┗━┻━━━━┷━━━━┷━━━━┷━━━━┷━━━━┛

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

  B2のセルに =INT(A2/100) と入力

  C2のセルに =MOD(A2,100) と入力

  B2、C2のセルを選択して、フィルハンドルでダブルクリック

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

 ・まず、下二桁の上の桁の数値をとる方法ですが、割り算の整数部分以
  外を切り捨てることで実現します。そのために、INT関数 を使います。

  INT関数 は、小数点以下を正確に切り捨てる関数です。

   =INT(数値) で、もし、=INT(24.34) ならば、24になります。

  もちろん、直接数値を入れる代わりに、セル番地を入れて使うのが普
  通です。今回は、A2セルの数値を 100で割って、小数部分を切り捨て
  ました。すると、下二桁の上の桁の数値になりました。

 ・次に、下二桁を採る方法として、割り算の余りを利用します。こちら
  は、MOD関数 を使います。

  MOD関数は、割り算の余りを返す関数です。

   =MOD(数値,除数) で、=MOD(50,8) ならば、2になります。

   つまり、50÷8 で、余りが、2 ということです。

  ここでも、A2のセルの値を 100で割った余りを使いました。すると、
  割り切れなかった部分が余りですから、下二桁の数値が返されるので
  す。

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

 ・INT関数について一言。まず、Excel2002の[関数の挿入]ボックスの
  説明が間違っています。下がマイクロソフトの説明。

   数値を指定した数値より0に近い整数に丸めた値を返します

  これは、嘘も嘘、大嘘です。

  例えば、=INT(-24.5) と入れてみましょう。答えは、-25です。これ
  は、指定した数字より、Oから遠くなります。INT関数は、小数点以下
  を正確に切り捨てる関数ですから、当然、0 から遠くなるのです。

 ・何故、こんな間違いが、正式版の説明に書かれているのかといえば、
  切り捨てる方法がたくさんあるからです。そこで、今回は、私が、他
  のメルマガで書いたものを引用しておきます。参考にしてください。

----------------------------------------------------------------------

■ 上達のヒント「正確に切り捨てる」

 ・数字を丸める方法としては、ROUND3兄弟(ROUNDUP、ROUND、ROUNDDOWN)
  や、INT関数、TRUNC関数など、いろいろありますが、はっきり言って、
  かなりいい加減なものです。まあ、丸めること自体が、正確な数字か
  ら離れることですから、あまり神経質になることはないのですが、と
  きどき、INT関数について質問を受けることがあります。

  「INT関数は、整数部分以外を切り捨てる関数です」というような解説
  を書くと、それは違う、TRUNC関数だというような意見です。

 ・確かに、INT関数もTRUNC関数も、正の数のときは同じです。しかし、
  負の数のときが違います。

    35.6の場合 INT関数 →  35  TRUNC関数→ 35

   -35.6の場合 INT関数 → -36  TRUNC関数→ -35

  だから、正確に整数部分以外を切り捨てる関数は、TRUNC 関数だとい
  う主張です。でも、これ、少し変ではないですか?

 ・負の数は、中学1年生で習います。誰もが通ってきた道でしょう。そ
  して、負の数は、絶対値が大きくなるほど、値は小さくなるわけです。
  ですから、-35.6 の小数点以下を切り捨てた場合、やはり、-36 が正
  しいわけです。

 ・なぜなら、-35は、-35.6より大きいからです。切り捨てたのに数字が
  大きくなってしまうのは変ですね。それだと正の数の処理と負の数の
  処理が逆になってしまい整合性を欠きます。

 ・ですから、私は、INT 関数を正確に切り捨てる関数と呼んでいます。
  TRUNC関数やROUNDDOWN関数は、機械的に切り捨てる関数ということで
  す。また、厳密に言えば、ROUNDUP関数もROUNDDOWN関数も、負の数で
  は、逆にしなければなりません。そのまま使うと切り上げたのに小さ
  くなった、切り捨てたのに大きくなったということになるからです。

 ・本当の意味で、正確に処理しているのは、INT 関数です。しかし、最
  近、あちこちで、INT 関数が目の敵にされているのを見て、ちょっと
  書いてみました。理不尽ないじめられかたをされていると思ったので、
  ちょっとかばってみました。たまには、こういうお話もいいでしょう。
  実際は、最初に書いたように、あまり神経質になることはありません。
  どれを採用してもいいと思います。


★ エクセルの小技へ ★ ★ TOPのページへ ★ ★ 次へ(011〜020) ★