SUMPRODUCT関数を利用して、複数条件に一致するデータを集計する

表を扱っている時に、特定の条件に当てはまる個所が何か所あるか、またその条件に一致する個数なり、金額なりの合計がいくらになるのか調べたいときがある。それも年月日などのデータが複数列に作成されていて、表の並び替えも面倒、これ一回きりの集計ではないから、使いまわしのできる集計表にしたい。そんなときがある。今職場で、年間の行事予定表があり、横に曜日が表示され、1週間で次の行になる、その表の中に給食回数や授業時間数を入力する表を作って、一括して集計する。まだ完成はしていないが、ここに示すのはその前段階の小さな表である。

表の中に、学年、年月日、種類、個数というものが、2列にわたって入っている次のような表があります。このデータは「学年」などとそのデータの範囲にわかりやすく名前を定義してあります。関数の計算式を見るときはそのように見て下さい。

この表の中で、ある学年の、ある月の、ある種類の数を数え、その時の個数を集計したい。

3つの条件に合う表内のデータ集計

学年年月種類回数個数
11104x14
21104o15
31104x14
学年、年月、種類の3つの条件に合う表内のデータの集計を行う

こんなときに利用できるのが、SUMPRODUCT関数である。この関数を次のように使って集計する。

SUMPRODUCT関数を利用して複数条件に一致する数値の計算

学年年月種類回数個数
11104x=SUMPRODUCT((学年A=I16)*(TEXT(月日A,"yymm")=J16)*(種類A=K16)+(学年B=I16)*(TEXT(月日B,"yymm")=J16)*(種類B=K16))=SUMPRODUCT((学年A=I16)*(TEXT(月日A,"yymm")=J16)*(種類A=K16)*個数A+(学年B=I16)*(TEXT(月日B,"yymm")=J16)*(種類B=K16)*個数B)
21104o=SUMPRODUCT((学年A=I17)*(TEXT(月日A,"yymm")=J17)*(種類A=K17)+(学年B=I17)*(TEXT(月日B,"yymm")=J17)*(種類B=K17))=SUMPRODUCT((学年A=I17)*(TEXT(月日A,"yymm")=J17)*(種類A=K17)*個数A+(学年B=I17)*(TEXT(月日B,"yymm")=J17)*(種類B=K17)*個数B)
31104x=SUMPRODUCT((学年A=I18)*(TEXT(月日A,"yymm")=J18)*(種類A=K18)+(学年B=I18)*(TEXT(月日B,"yymm")=J18)*(種類B=K18))=SUMPRODUCT((学年A=I18)*(TEXT(月日A,"yymm")=J18)*(種類A=K18)*個数A+(学年B=I18)*(TEXT(月日B,"yymm")=J18)*(種類B=K18)*個数B)
上の表の中でのSUMPRODUCT関数の使い方。数式をそのまま表示する。

この結果が、次のようになる。

3つの条件に合う表内のデータ集計

学年年月種類回数個数
11104x14
21104o15
31104x14
学年、年月、種類の3つの条件に合う表内のデータの集計を行う

この時に注意が必要なのは、年月日の日付をTEXT関数でYY/MMと表示するのだが、集計の表の中の「1104」と入力する前に、これらの年月を入力する欄のセル範囲を

セルの書式>表示形式>文字列

と設定しておく必要がある。数字を入力後などに文字列にしてもエクセルは別のものと読んでしまうようである。

このことに気づかせてくれたのは、次のサイトである。感謝したい。

エクセルトラブル回避テクニック

エクセルである月の日数を調べたいとき

エクセルでその月の日数を調べたいとき
A年B月の日数は
=DAY(DATE(A,B+1,1)-1)
DATE(A,B+1,1)はB月の翌月の初日1日のシリアル値を求める式である。
翌月の1日のシリアル値が分かれば、その数から1日引けば、求めるB月の最後の日が指定できる。
DAY(B月の最後の日)とすれば、「B月の最後の日」のシリアル値が、最後の日の数字(31,30,28など)と求めることができる。

WP-Table Reloaded の便利なインポート機能

WP-Table Reloaded の便利なインポート機能というページに、エクセルで作成したファイルをCSV形式に変換してインポートしても日本語が文字化けするのを回避する説明が載っている。

見事に、文字化けを回避することができた。これだと、エクセルで作成したデータをコピーして貼り付けるという操作だけで完成させることができる。

写真用紙サイズ、その他の用紙のサイズ比較表

用紙サイズ比較表

サイズ名 / サイズ等縦mm横mm縦横比
名刺55911.655
L判891271.427
はがき1001481.48
KGサイズ1021521.49
2L1271781.402
B61281821.422
キャビネ1301801.385
A51482101.419
B51822571.412
六つ切り2032541.251
A42102971.414
四つ切り2543051.201
B42573641.416
A32974201.414
A3ノビ3294831.468
半切り3564321.213
B33645151.415
A24205941.414
全紙4575601.225
大全紙5086101.201
全倍6009001.5
写真用紙L判、2L、はがき、コピー用紙B版、A版等様々な用紙を縦横のサイズを示し、縦横比を比較する。

写真をL版の用紙に印刷するときに、何気なく用紙にフィットさせる拡大縮小などと適当に選んでいたら、必要な部分が切れていた。用紙サイズもいろいろ、デジカメの写真サイズもいろいろ。

そんな縦横比について、今後のために一覧表を作成してみる。

wordpressで表を作成するのに、プラグインWP-Table Reloadedを使う

A1BCDE
2種類価格個数合計
3りんご1005500
4みかん407280
5バナナ1002200
6パイナップル2701270
7かき806480

プラグインの新規追加でWP-Table Reloadedを検索、インストール、有効にして使用していく。

このプラグインで表を作成し、表のショートコードをコピーしブログ記事の必要個所にそのIDを張り付ける。

エクセルの表を扱うように、列内のデータを並び替えることも可能という、プラグインである。

忙中、閑あり。苦中、楽あり。#mysky

DSC_1977.JPG

忙中、閑あり。苦中、楽あり。死中、活あり。壺中、天あり。意中、人あり。腹中、書あり。
とんなに忙しい中にもほっとする一瞬は必要であり、どんなに苦しい状況の中にも楽しみを見出ださなければなりません。絶体絶命の危機であっても死ぬ気でやれば必ず道は開けるものであり、自分の世界を明確に持っておかなければなりません。心には常に尊敬する師をもち、腹には自分の哲学をもっておかなければなりません。

安岡正篤『六中観(りくちゅうかん)』
女子駅伝、野球などで知られる岡山県南西部にある興譲館高校では論語の授業に力を入れている。
忙中、閑ありはよく耳にするが、そのあとはよく知らなかった。

No tags for this post.

小寒の冷たさ和む日の出かな#mysky #photoikku #俳句 #川柳

DSC_1973.JPG

1月6日、この冬一番の寒さとなる氷点下8度の午前7時20分の朝焼け。
そんな寒さを吹き飛ばしてくれる朝焼け。
東の空をオレンジに焼いている、そんな色からの暖かさ、そしてそんな空を見ることのできた嬉しさで心暖まる。
そんな喜び方を教えてもらったTweet の#mysky ありがとう。

No tags for this post.

寒締めの野菜と同じ北の人#mysky #photoikku #俳句 #川柳

DSC_1961.JPG

ホウレン草や白菜などの野菜は、霜や雪にさらされることにより、甘さを増します。
これを寒締めというそうです。
北の雪国の人が、人に優しく接するのも長い冬の間、雪に閉ざされたなかで生活するからでしょうか。

「山陽新聞2012.1.5作州ワイド版」に次のような内容が載っていた。一般的なホウレン草の糖度が4〜5度に対して、寒締めすると12度にもなるという。
岡山県の特産館みまさかでは、寒締めしたホウレン草を彩菜みまさかとして出荷しているという。

No tags for this post.

この秘帳誰にも見せぬ猫マンマ#猫 #photoikku #川柳

temp.jpg

猫にも秘密文書があるのかもしれない。
この人にはこのタイミングで鳴けば餌がもらえるとか、撫でてもらえるとか。
でもその事は猫だけの秘密。
人に知られるようなことがあれば、猫世界を追い出されてしまう。
なーんてね?

No tags for this post.

エクセルの複数シートでのセルの値を集計するINDIRECT(複数シートではcountifができない)

エクセルの複数シートでのセル集計にINDIRECTを利用する。
シート間をまたがってcountifができないので
集計をするシートのあいているところに集計に必要な数値を入れる
シート名:セルG1:K1
集計をするセルは各シートの同一セル。
集計セルの行列地番を列番号:F4
同         行番号:F5~
集計セルがF5からF20まで続くため行番号をF5:F20まで
=(INDIRECT(ADDRESS($F5,$F$4,,,G$1))
 
いくつかのサイトで記載されていることをURLとその表記を掲載する。
下記のサイトによる
=INDIRECT(G1&"!E5")
では、値がとれなかった。この時シート名を各シートのA1セルに入力している名前をシート名にしていた(マクロ使用)。このA1のセルに数字を入れると、
=INDIRECT(G1&"!E5")
で値を取ることができた。
 
には、集計作業をしているシートの空いている列などを作業領域にし、
INDIRECT()を使って一旦各表の該当セルへの参照を集めておけば、お望みのCOUNTIFが可能です。
例えば10枚あるシートのA3セルを集計したいとします。
ここでは作業領域をHとIにしてみます。
H1~H10にシート名を入れておき、Iには =INDIRECT(H1&"!A3")として、オートフィルでI1~I10「=INDIRECT(H10&"!A3")」までを埋めます。
これで、I列に各シートのA3の参照がならびましたので、同じシートの任意のセルで=COUNTIF(I1:I10,"○")を掛けてみてください。
 
INDIRECT関数は、引数に指定されたセルに入力されているデータを使ってセルを参照してくれる関数です。
A2セルに
「4月」と入力されているときに
「=INDIRECT(A2&"!B33")」は
「='4月'!B33」と同じ意味になります。
上記の数式でINDIRECT関数の引数のうち「A2」はセルの相対参照ですから、下方向にオートフィルすれば
「=INDIRECT(A3&"!B33")」
「=INDIRECT(A4&"!B33")」
と変化しA3・A4セルにシート名を入力しておけば、それぞれのシートのB33セルの値を表示するようになります。
 
セルA1に入力されたシート名の、セルB3を参照する場合
=INDIRECT(A1& "!B3")
また上記ではセルB3が固定になってますが、
セルA1 に参照したい【シート名】をいれ
セルA2 に参照したい【セル番地】まで入れておくと
なお、使い勝手がよくなるかも知れませんね。
=INDIRECT(A1& "!" & A2)
使用する関数:ADDRESS と INDIRECT
例:
Sheet1のA1にSheet2という文字列が入っているとします。
Sheet2のA2に「参照する値」とい文字列が入っているとします。
式:
=INDIRECT(ADDRESS(2,1,,,A1))
これで、=Sheet2!A2 と同じ結果になります。
解説:
=ADDRESS(2,1,,,A1) のみですと、Sheet2!$A$2という文字列になります。その後、INDIRECTを使うことにより、値を取得します。

エクセルの複数シートでのセル集計にINDIRECTを利用(countifができない)
シート間をまたがってcountifができないので集計をするシートのあいているところに集計に必要な数値を入れるシート名:セルG1:K1集計をするセルは各シートの同一セル。集計セルの行列地番を列番号:F4同         行番号:F5~集計セルがF5からF20まで続くため行番号をF5:F20まで(INDIRECT(ADDRESS($F5,$F$4,,,G$1))
いくつかのサイトで記載されていることをURLとその表記を掲載する。下記のサイトによる=INDIRECT(G1&"!E5")では、値がとれなかった。この時シート名を各シートのA1セルに入力している名前をシート名にしていた(マクロ使用)。このA1のセルに数字を入れると、=INDIRECT(G1&"!E5")で値を取ることができた。
http://q.hatena.ne.jp/1147068497

には、集計作業をしているシートの空いている列などを作業領域にし、INDIRECT()を使って一旦各表の該当セルへの参照を集めておけば、お望みのCOUNTIFが可能です。例えば10枚あるシートのA3セルを集計したいとします。ここでは作業領域をHとIにしてみます。H1~H10にシート名を入れておき、Iには =INDIRECT(H1&"!A3")として、オートフィルでI1~I10「=INDIRECT(H10&"!A3")」までを埋めます。これで、I列に各シートのA3の参照がならびましたので、同じシートの任意のセルで=COUNTIF(I1:I10,"○")を掛けてみてください。
http://www.relief.jp/itnote/archives/001697.php

にはINDIRECT関数は、引数に指定されたセルに入力されているデータを使ってセルを参照してくれる関数です。A2セルに「4月」と入力されているときに「=INDIRECT(A2&"!B33")」は「='4月'!B33」と同じ意味になります。上記の数式でINDIRECT関数の引数のうち「A2」はセルの相対参照ですから、下方向にオートフィルすれば「=INDIRECT(A3&"!B33")」「=INDIRECT(A4&"!B33")」と変化しA3・A4セルにシート名を入力しておけば、それぞれのシートのB33セルの値を表示するようになります。
http://oshiete.goo.ne.jp/qa/3547667.html

セルA1に入力されたシート名の、セルB3を参照する場合   =INDIRECT(A1& "!B3")また上記ではセルB3が固定になってますが、セルA1 に参照したい【シート名】をいれセルA2 に参照したい【セル番地】まで入れておくとなお、使い勝手がよくなるかも知れませんね。   =INDIRECT(A1& "!" & A2)
http://q.hatena.ne.jp/1166863251使用する関数:ADDRESS と INDIRECT
例: Sheet1のA1にSheet2という文字列が入っているとします。 Sheet2のA2に「参照する値」とい文字列が入っているとします。式: =INDIRECT(ADDRESS(2,1,,,A1)) これで、=Sheet2!A2 と同じ結果になります。解説: =ADDRESS(2,1,,,A1) のみですと、Sheet2!$A$2という文字列になります。その後、INDIRECTを使うことにより、値を取得します。

抱擁と重石とは猫紙一重#photoikku #猫 #川柳

154420_065.jpg

トラジをいじめてるんじゃないよ。
トラジだって苦しんでもないし。
私はトラジを優しく包んであげてるの。
トラジはあったかそうだよ。
人を変な目で見ないで、お願い。
トラジも喜んでるのかな?
時々、長い尻尾を左右に振ってる。
CAT :猫,

No tags for this post.

エクセルで表示されている行だけの行数をカウントする #エクセル

エクセルで表を作成しているときに、場合によって表示しなくてよい行がある。しかし表示されている行だけの個数を番号表示して、ものの準備をしたいことがある。そんなとき有効なのが、この関数だ。

表示されている行数をカウント表示したい列に

=SUBTOTAL(102,$B$2:B2)

とA2セルに入力し、表のA列の最後まで数式をコピーする。

これでどのように表示・非表示をしても、表示されている行だけの個数を番号表示できる。

上の関数の括弧の中の「102」というのは、COUNT関数を示しており、表示されている行をB2からB○○までカウントしなさいということを意味している。

「102」以外の集計の仕方については

http://office.microsoft.com/ja-jp/excel-help/HP010062463.aspx?CTT=5&origin=HA010215738

に詳しく説明されている。このサイトでいいことを教えていただいた。

銀世界ふと秋の色懐かしむ#photoikku #俳句 #川柳

111118_102608.jpg

雪が辺り一面を覆ってしまうと、時々は春や夏や秋の色合いを思い出す。
色が変わるからそれぞれの季節をよく感じるのだろう。
雪。白くて冷たい。ふわふわして軽いけど知らぬ間に重く固くなっていく。
枯れ葉や黒い土やごみなど一切を白いベールで覆ってくれる。
白一色だけど、光を受けて輝き、枯れ木や竹や杉や桧について、引き立てている。
普段何気ないものを際立たせる真っ白な雪。白色だけど輝き、軽いように見えて次第に重さを実感させ、空の汚れだけを地面に残して、何事もなかったかのように消えてしまう。

No tags for this post.

猫二人メダカの水を飲みたがり#川柳 #photoikku #猫

DSC_1941.JPG

水はあなたたちの指定席に置いてありますよ。
どうしてわざわざメダカの鉢の巻き簀を外して、そんなところの水を飲もうとするの?!
メダカさんがびっくりするじゃないの?
えっ?メダカが入っているから美味しいんだって!?
まさか、メダカまで飲んじゃないよね?
1、2、3、4、5・・・
大丈夫みたいかな?
いい出汁が出てるのかな?

今年もよろしくお願いします。

No tags for this post.

底冷えの中で朝陽も身にしみる#mysky #photoikku #俳句 #川柳

DSC_1943-1.jpg

30日の写真。
よく冷え込んだ。木々も凍りついているようだ。
朝陽も寒くてなかなか布団から抜け出せないのか、顔を出すのがやっと8時前。
楽しませてもらった。
また、年が明けても楽しませてください。

No tags for this post.