●Excelなどの関数で条件で抽出した集合を扱う場合。
別のセルに、その集合を抜き出すしかないのでしょうか?
●経緯
家計簿の集計をしています。「おやつ」項目から頻出する出費額を知りたいと思いMode関数を使おうとしたのですが、一つのセル内で思った通りの関数がなかなか出来ません。(結局、並び替え機能を使って問題は解決しました。)
なぜ一つのセルで、思った通りにモード関数が使えないのかと考えたとき、
ある条件で抽出した集合を、別のセルに書き出さない限り関数内で取り扱えないからだと気がつきました。
以前から表計算ソフトでなんか、不便だと思ってたところは、だいたいこれが原因のようです。
で、本当にこれはできないのでしょうか?それとも、私のテクニック不足?
私は普段マクロも使わない初心者です。
VBAなど難しい機能は使えないので、できれば関数だけで事を処理したいと思っているのですが。
Excel の場合、「配列数式」というものを使うとできたりします。
ちょっと試してみましたので、まずはシートを見てください。
D2 が、普通に Mode 関数を使った場合。
D3 は、配列数式を使って、Mode 関数に「おやつ」の行だけを指定した場合です。
「おやつ」のデータは以下のような感じ。
おやつ: 100,100,200,100,100,200
まず、D3 のセルに、以下のように入力します。
=mode(if(a1:a20="おやつ",b1:b20,""))
普通なら Enter キーを押すところですが、Shift キーと Ctrl キーを押しながら Enter キーを押してください。
D3 のセルにカーソルを合わせてみると、入力した式が中括弧で囲まれているのが分かると思います。
この中括弧が「配列数式として扱っている」という目印になってます。
配列数式は知っていると便利な場面もあるのですけれど、ちょっと上級編な感じ。
ぼくも決まった場面でしか使えなかったりします (^^;
Excel の場合、「配列数式」というものを使うとできたりします。
ちょっと試してみましたので、まずはシートを見てください。
D2 が、普通に Mode 関数を使った場合。
D3 は、配列数式を使って、Mode 関数に「おやつ」の行だけを指定した場合です。
「おやつ」のデータは以下のような感じ。
おやつ: 100,100,200,100,100,200
まず、D3 のセルに、以下のように入力します。
=mode(if(a1:a20="おやつ",b1:b20,""))
普通なら Enter キーを押すところですが、Shift キーと Ctrl キーを押しながら Enter キーを押してください。
D3 のセルにカーソルを合わせてみると、入力した式が中括弧で囲まれているのが分かると思います。
この中括弧が「配列数式として扱っている」という目印になってます。
配列数式は知っていると便利な場面もあるのですけれど、ちょっと上級編な感じ。
ぼくも決まった場面でしか使えなかったりします (^^;
おおっ出来ました!これは凄い。
iPhoneのNumbersで試したところ、残念ながらできず。やはりExcelは必須。
たとえば、A列に科目、B列に金額が入っている時に最頻値を求めるには
=MODE(IF(A1:A100="おやつ",B1:B100,""))
という数式を入力して、Ctrl + Shift + Enter で確定してみてください。
参考
日経PC21 / 初めての「配列数式」① 1行おきの実績値を一気に合計
参考サイトで色々勉強したいと思います。
回答ありがとうございました。
おおっ出来ました!これは凄い。
2014/02/12 02:43:19iPhoneのNumbersで試したところ、残念ながらできず。やはりExcelは必須。