E97C010(Excel97)
項目
内容説明
Excel97からLotus1-2-3の関数と互換性を持つように設計された新しい関数セットが用意されました。
これらの関数名の末尾はすべて A であることから A関数 と称されます。
新規に用意された A 関数は以下のとおりです。
AVERAGEA
MINA
MAXA
STDEVA
STDEVPA
VARA
VARPA
A関数は文字列および論理値の扱いが非A関数とは基本的に異なります。下記に比較表を示します。
値の種類 非A関数 A関数
---------------------------------------------------------
数値 通常どおり 通常どおり
文字列 無視されます 値 0
TRUE 論理値 無視されます 値 1
FALSE 論理値 無視されます 値 0
E97C009(Excel97)
項目
内容説明
入力規則のリストで元の値(セル範囲)を動的に設定する方法を示します。
リストのセル範囲が増えたり減ったりした場合でも自動的に対応します。
リストのセル範囲は Sheet2!$c$2 から下方向にあるとして、このリストに名前を付けておきます。
メニュー[挿入]-[名前]-[定義]を開き[名前]に list1、参照範囲に
=OFFSET(Sheet2!$c$2,,,COUNTA(Sheet2!$c:$c))
と入力します。
[データ]-[入力規則]の[元の値]には =list1 と入力します。
E97C008(Excel97)
項目
内容説明
ある金額を構成する最小単位の紙幣及び硬貨がそれぞれ何枚必要かを求めます。
金額のセル $F$12 の場合の式を示します。通常名前を定義して用いると良いでしょう。
金種 | 必要枚数の式
|
10000円 | =INT($F$12/10000)
|
5000円 | =INT(MOD($F$12,10000)/5000)
|
2000円 | =INT(MOD($F$12,5000)/2000)
|
1000円 | =MOD(INT(MOD($F$12,5000)/1000),2)
|
1000円 (2千円札を用いない) | =INT(MOD($F$12,5000)/1000)
|
500円 | =INT(MOD($F$12,1000)/500)
|
100円 | =INT(MOD($F$12,500)/100)
|
50円 | =INT(MOD($F$12,100)/50)
|
10円 | =INT(MOD($F$12,50)/10)
|
5円 | =INT(MOD($F$12,10)/5)
|
1円 | =MOD($F$12,5)
|
1000円札の枚数は2000年夏に登場する2000円札に対応しています。
2000円札を用いない場合の式も示しています。
E97C007(Excel97)
項目
内容説明
MINワ−クシ−ト関数の引数に0が含まれていて最小値が0の場合結果は当然ながら0になります。
0を除外した最小値を求めるには次のように配列数式を用います。
セル範囲C5:C50で0を除外した最小値を求める例
=MIN(IF(C5:C50=0,"",C5:C50)
上記を入力し[Ctrl]+[Shift]キ−を押した状態で[Enter]キーで確定します。
数式バ−には {=MIN(IF(C5:C50=0,"",C5:C50)} と表示されます。
E97C006(Excel97)
項目
内容説明
他のブックの値を参照したい場合がよくあります。通常、参照するブックを開いて処理を行いますがセル値を参照するだけなら開く必要はありません。
式を次ぎのように入力します。
例:ブック名 c:\dat\book1.xls シート名 Sheet1 参照セル A:2
='c:\dat\[book1.xls]Sheet1'!$A$2
同様の処理をマクロで行うには次のようになります。
Range("A2").FormulaR1C1 = "='c:\dat\[book1.xls]Sheet1'!R2C1"
この式の状態では自動リンクが設定されています。数値に変換するには次ぎのようにします。
With Range("A2")
.FormulaR1C1 = "='c:\dat\[book1.xls]Sheet1'!R2C1"
.Value = .Value
End With
E97C005(Excel97)
項目
内容説明
Excelで連立方程式を解くには、2つの配列の行列積を返すMMULT関数と、行列の逆行列を返すMINVERSE関数を用います。
例として 次の3元1次連立方程式を解く手順を示します。
x+2y+3z=10
-4x-5y-6z=20
7x+8y=-30
- 解の[配列C]{x,y,z}は [配列A]の逆行列×[配列B]によって求められます。
[式] [配列A] [配列B]
1x+2y+3z=10 1 2 3 10
-4x-5y-6z=20 -4 -5 -6 20
7x+8y+0z=-30 7 8 0 -30
[配列A]をセル範囲 B2:D4に、[配列B]をセル範囲 E2:E4に入力します。
B C D E
2 1 2 3 10
3 -4 -5 -6 20
4 7 8 0 -30
- セル範囲 F2:F4 を選択し数式 =MMULT(MINVERSE(B2:D4),E2:E4) を入力し、配列数式として入力するため [Ctrl]+[Shift]キ−を押した状態で[Enter]キーで確定します。
配列数式が確定されると 数式バーには次のように{}(中カッコ)で囲まれた数式が表示されます。
{=MMULT(MINVERSE(B2:D4),E2:E4)}
- 計算結果はセル範囲 F2:F4に表示され、解は x=-32.22222222,y=24.44444444,z=-2.222222222となります。
B C D E F
2 1 2 3 10 -32.22222222
3 -4 -5 -6 20 24.44444444
4 7 8 0 -30 -2.222222222
E97C004(Excel97)
項目
セルに入力されているセル指定の文字列を使って間接的なセルの指定を行う
内容説明
セルに入力されているシート名(Sheet1等)やセル文字列(A1等)を使って、そのセルの値を得る方法です。
セルに入力されている文字列を介して間接的なセルの指定を行うにはINDIRECT関数を用います。
例1
セルA1に Sheet1、シートSheet1のA2に 111 が入力されている場合
INDIRECT(A1 & "!A2") = 111
例2
セルB1に B2、B2に 222 が入力されている場合
INDIRECT(B1) = 222
例3
セルC1に 2、C2に 333 が入力されている場合
INDIRECT("C" & C1) = 333
E97C003(Excel97)
項目
内容説明
グラフを作るまでもなく簡単に値を視覚的に表したたい場合に、セルの値に応じた数のマークを隣のセルに表示する方法を示します。
REPT関数を用いるとセルに簡単なヒストグラム(横棒グラフ)を作成出来ます。
次の例のように表示するにはB1に数式
=REPT("*",A1/10)
と入力し下にコピーします。マーク(*■●♪...)やA1/10の部分は適宜設定して下さい。
A B C D
1 10 *
2 50 *****
3 32 ***
E97C002(Excel97)
項目
内容説明
セルで改行するには[Alt]+[リタ-ン]キ−を押しますが、数式により、改行して任意の書式で値を表示する方法です。
数式バ−に次のように入力します。CHAR(10)が改行コ−ドになります。
=TEXT(A1,"@") & CHAR(10) & TEXT(A1/A$6,"(0.0%)")
なお、セルの書式は[書式]-[セル]-[配置]タブの[折り返して全体を表示する]をチェックしておく必要があります。
E97C001(Excel97)
項目
内容説明
年月日から経過年月を算出する方法を紹介します。
TODAY()-誕生年月日 では端数の処理でうまくいきません。期間内の満年数や満月数を返すDATEDIF関数を用います。
- 誕生日のデータを元に今日の満年齢を算出する
満年齢を表示するセルに次のような式を入力します。
=DATEDIF(C3,TODAY(),"Y")
TODAY()は今日の年月日です。この部分は "98/4/1" 等と固定値を入力したり、又はセルを指定する事も出来ます。
C3の部分は誕生日のセルです。誕生日は90/1/1 やH1.1.1 等と日付形式で入力されているものとします。
なお、満年齢を表示したセルは数値として計算に用いる事が出来ます。
- 勤続年月や経験年月を算出する
表示するセルに次のような式を入力します。
=DATEDIF(C3,TODAY(),"Y") &"/"& DATEDIF(C3,TODAY(),"YM")
C3が入社年月日などに該当します。
「K窓」
Copyright(C) kmado. All Rights Reserved.
E-Mail: kmado@aqua-r.tepm.jp