起点となるセルから指定行数、指定列数をずらしたセルの中身を関数値とする。OFFSETとINDEXはセルを指定するか、セル範囲を指定するかの違い。INDEXは表の中の要素を選ぶということが目的の関数なので、セル範囲の外のセルを参照しようとすると参照エラーになる。OFFSETの場合は、単に、あるセルを基準として何番目のセルを指し示すという目的なので、行数列数はマイナスでもよい。「アドレス操作」のための関数と考えた方が良い。
=OFFSET(A1,4,3) (1) =OFFSET(A1,RANDBETWEEN(0,9),0) (2)
(1)は「=D5」と書いたのと同じ。
(2)は、セルA1:A10の中からランダムに一つを選ぶ。
OFFSETの4,5番目の引数として行数、列数を指定すると、関数値はセル範囲となる。
ADDRESS(行番号,列番号,参照方式)
は、セルの座標を指定して、セル記号(A1のような)を生成する関数。「参照方式」で相対参照、絶対参照、複合参照形式にできる。
関数値は文字列($A3のように)なので、その中身のデータを参照するにはINDIRECT
関数を使う。
=INDIRECT(ADDRESS(10,5,2))
これは「=E$10」と書いたのと同じ
LOOKUP関数は、検索文字が左端、あるいは上端になければいけないという制約がある。MATCH関数は任意のベクトルを指定して検索するので、これとINDEX関数を組み合わせれば、任意の列をキーにするLOOKUP関数の拡張版が実現できる。
=INDEX(A1:A9,MATCH(B1:B9,"A"),0)
キーが右端についているデータテーブルがセルA1:B9にあり、B列を検索してA列から該当のデータを取り出す場合の書き方である。
VLOOKUP関数の変換表が簡単なものならば、関数の引数として生成することが出来る。
=VLOOKUP(A9,{0,"F";60,"C";70,"B";80,"A"},2)
これは、A9の内容が60未満ならばF、60以上70未満ならばC、...という文字を返す関数になっている。数値はそのまま、文字列は""で囲む必要があり、キーの数値・文字列は大きさの順番に並んでいなければいけないことは、通常のvlookup関数と同じです。
検索する数値が1,2,3,...のような連続した自然数ならば、CHOOSEという関数を使ってもよい。
リストはカンマで区切られた任意の文字列。リストの中のn番目の要素を関数値とする。リストはセル範囲ではなく、カンマ区切りでなければいけない。
=CHOOSE(A1,"◎","○","▲","×") (1) =CHOOSE(B2, STDEV(C1:C10), STDEVP(C1:C10)) (2)
(1)は、セルA1が1,2,3,4のときに、それぞれの文字が表示される。VLOOKUP関数の簡易版といってもよい。
(2)は、セルB2が1の時不偏分散の平方根が、セルB2が2の時標本分散の平方根が計算される。
2次元のデータテーブルが入力されているとき、表の周辺に各行の和、各列の和を計算するために、一々「=sum(...)」関数を入力しなくてもすむ方法がある。データ表に右一列分、下に一行分追加してアクティブにし、「ホーム」→「編集」→「合計」ボタンをクリックすると、各列の和、各行の和が一度に計算される(セルA1:C5にデータがあるとき、セルA1:D6をドラッグしてアクティブにし、「ホーム/編集/合計」ボタンをクリック)
「ある変数がa,b,c,d,eのいずれかならば」というように、同一条件が多数ある場合は集合的な書き方が許される。
=IF(OR(A1={2006,2004,2001}),"vintage","average")
連続した空白文字を一つの空白文字で置き換える場合は「TRIM」
文字列を検索して、特定の文字列を別の文字列で置き換える場合は「SUBSTITUTE」
* たとえば、「=substitute(a1," "," ")」(全角空白を半角空白に置き替える)
特定の位置にある文字列を入れ替える場合は「REPLACE」(文字列の内容は問わない)
*
たとえば、「=replace(文字列,開始位置,文字数,置換文字列)」(「文字数」を0とすれば、開始位置(の手前)に文字列を挿入するだけ)
*
たとえば、「="〒"&replace(a1,4,0,"-")」(郵便番号1650031を"〒165-0031"と変換する)
ページトップへもどる
date(yy,mm,dd) | 年、月、日を入力して通算日数を計算する |
weekday(date) | 通算日数の曜日を数字で返す(1が日曜日、7が土曜日) |
eomonth(date,mm) | 通算日数からmm月後の最終日の通算日数を計算する(mm<0ならば遡る) |
day(date) |
通算日数を年月日に換算したときの「日」を返す |
weekday()関数で曜日の番号を計算し、「表示形式」を「aaa」とする。「ddd」とすると、英語の3文字略称が表示される
=INDEX({"日","月","火","水","木","金","土"},WEEKDAY(DATE($B$2,$B$3,B5)))
としても良い
最初の週の空白をどう表現するかが決め手。指定月の初日の曜日をweekday()関数で調べ、列番号がそれより小さければ空白、等しければ 「1」、さもなければ左隣の次の日、を入力するようにすればよい。
=if(weekday(date(yy,mm,1))>column(),"",if(weekday(date(yy,mm,1))=column(),1,a5+1))
2週目からは、前の日がその月の月末でない限り、1を加え、さもなければ空白を入力するような数式を入力すればよい
(daysはその月の日数)。
=if(a6>=days,"",a6+1)
ある月(yy/mm/dd)
の
日数を求めるには、翌月の1日から、その月の1日の差を計算すればよい。
=if(mm<12,date(yy,mm+1,1)-
date(yy,mm,1),31)
あるいは、eomonth() 関数が使えれば、その月の最終日が計算できるので、簡単。
=day(eomonth(date(yy,mm,1),0))
帯分数は、整数部分と分数部分の間に半角スペースを挟めばよい(例、「1 1/6」のように) 。整数部分がない場合は 0と入力するが、0は表示されない
「ホーム」→「数値」→「表示形式」メニューから「分数」オプションを選ぶと、整数部分と分数部分の間に半角スペースを入れて表示されるようになる。(例、「1.222」と入力して、そのセルを「分数」表示形式にすると「1 2/9」と表示される。1.23と入力しても「1 2/9」と表示されるので、実数を入力した場合は分母が一桁の分数に近似されるらしい)
通常の計算に従って行われ、分数形式で表示される。が、あまり信用しない方がよい。たとえば、セルA3に「0 1/5」、セルA4に「0 1/3」と入力して、セルA5に「=A3+A4」と入力すると、表示されるのは「1/2」! セルA5をクリックすると、数式バーには0.53333と正しく表示されているので、計算は正しいが、分数表示にすると、通分はしないで分母が一桁の分数で近似表示されるようだ。
「挿入/関数...」メニューを選び、「関数の分類」の選択肢から適当な分類を選ぶと、「関数名」がリストされます。その中から必要なものを選び、 「この関数のヘルプ」をクリックすると使用例が表示されます。とても全部は説明し尽くすことはできません。「ヘルプ」はかなり丁寧に書いてありますから、たいていはそれでわかるはずです。
SQRT | 平方根(SQRT) |
SIN COS TAN | 三角関数(SIN COS TAN ...) |
EXP | 指数関数(EXP)、対数関数(LN LOG LOG10) |
ABS | 絶対値(ABS) |
ROUND | 四捨五入(ROUND)、切捨て(FLOOR ROUNDDOWN TRUNC)、切り上げ(CEILING ROUNDUP) |
MOD | 割り算のあまり(MOD) |
FACT | 階乗(FACT) |
GCD LCM | 最大公約数(GCD)、最小公倍数(LCM) |
SUM | 合計(SUM) |
AVERAGE | 平均(AVERAGE) |
MAX MIN | 最大値(MAX)、最小値(MIN) |
STDEV STDEVP | 標準偏差(STDEV、STDEVP) |
COUNT | 数える(COUNT COUNTA COUNTIF) |
CORREL | 相関係数(CORREL) |
FREQUENCY | 度数分布(FREQUENCY) |
IF | 条件分岐(IF) |
AND OR NOT | 条件式(AND OR NOT) |
TRUE FALSE | 論理定数(TRUE FALSE) |
Ctrl キーと Shift キーを押しながら Enter キーを押します
MMULT | 行列の積(MMULT) |
MDETERM | 行列式(MDETERM) |
MINVERSE | 逆行列(MINVERSE) |
SUMPRODUCT | 内積(SUMPRODUCT) |
TRANSPOSE | 転置(TRANSPOSE) |
NPV | 現在正味価値(NPV) |
FV | 将来価値(FV) 定額の支払いを定期的に行い、利率が一定であると仮定して、投資の将来価値 |
PMT | 定額支払い額(PMT) 一定利率の支払いが定期的に行われる場合の、ローンの定期支払額 |
PV | 現在価値(PV) 将来行われる一連の支払いを、現時点で一括払いした場合の合計金額 |
IRR | 内部収益率 |
NOW TODAY | 現在時刻(NOW TODAY) |
YEAN MONTH DAY | 年(YEAR)、月(MONTH)、日(DAY) |
WEEKDAY WEEKNUM | 週(WEEKDAY WEEKNUM) |
TIME HOUR | 時刻(TIME HOUR) |
SECOND | 秒(SECOND) |
EOMONTH |
月数経過後の日付 |
VLOOKUP HLOOKUP | 表検索(VLOOKUP HLOOKUP) |
DCOUNT DSUM ... | データベース関数(DCOUNT DSUM DAVERAGE ...) |
http://www.arkfact.com/excel/01/nyumon1-99.html
http://www.arkfact.com/excel/01/nyumon1-99.html