だらけ日記過去ログ:2004年4月28日(木)「マクロなしExcelばなし」

光希桃AnimeStation

Count Start 1997.9.6
だらけ日記

2004年4月28日(木)「マクロなしExcelばなし」このエントリーを含むはてなブックマーク

 新番終番はこのリストでOKかな…。感想サイトリンク集もこっそり追加修正しておきました。

 日記というのは日々思ったりやったりしたことを綴るもの…、つことで懲りずにExcelメモ。興味のない方はさっくり読み飛ばしちゃってくださいな。IE見の場合はフォントサイズを「小」にしないと表が見にくいです。(Ctrlキーを押しながらマウスホイールを上へくるっと回すべし)

 前回のExcel話で、感想率、終了番組評価、新番組継続率の入力フィールドはデータを入力すると、下表のようになる、と書きました。

表1:データ入力表
ABCDEFG..
1サイトサイト番組評価コメント略・URL
  サイト番組評価コメント略・URL
  サイト番組評価コメント略・URL
  サイト番組評価コメント略・URL
2サイトサイト番組評価コメント略・URL
  サイト番組評価コメント略・URL
  サイト番組評価コメント略・URL
  サイト番組評価コメント略・URL
  サイト番組評価コメント略・URL


 感想率表の場合、E列のデータは感想率、つまり0%〜100%までの数値が入ります(0%は入らないけど)。ですから、サイトごとの感想扱い率や番組ごとの感想率はSUMIF関数を使い、サイトごと/番組ごとに感想率を拾い合計し、取り扱い数で割ることによって計算が可能です。

 しかし、継続率や終了番組評価の場合、Eの評価列に入るのは「不可」「継続」、「駄作」「殿堂入り」などの、数値ではないデータが入ります。そして、ただその「不可」や「駄作」などの数を数えるのではなく、番組ごとにそれぞれの数を数える必要があるわけです。それはつまり、感想率表において、「(1)ある番組における(2)感想率20%以下になっている サイト数はいくつ?」というような二重の検索条件をクリアしなければならないというのと同じ、ということになったりします。

 Excelにおいて、二重の検索条件から検索するには、Database関数を使う必要があります。ですが、Database関数は他の関数とはちょっと扱いが違ってややこしかったりするのと、フィールド名(列の名前)が必須だったりするため、正直 なんかよくわからん のです。何かうまくいくイメージがわかないのよね。

 つことで知ってる範囲で、集計する方法を考えてみた。まず考えたのはこれー

表2:新番調査シートVer.1
ABCDEFGH
1
サイト番組不可視聴
なし
見切
継続
21サイト1サイト1番組1   1
3  サイト1番組2   1
4  サイト1番組3  1 
5  サイト1番組4 1  
62サイト2サイト2番組1  1 
7  サイト2番組2 1  
8  サイト2番組3  1 
9  サイト2番組41   
10  サイト2番組5   1

※意味のあるところだけ抜粋

 見ての通り、さっきの表1のようなシートから、別シートにコピーし、その際「不可」〜「継続」を別の列に数値「1」として表示するようにした表です。

 AD列は表1からリンク貼り付けするだけだから特に何も書かないけども(でもセルに「0」が入らないような工夫はする)、EH列の各セルには、

(例えばE2セルの場合)
 =IF(表1!E2=$E$1,1,"")

のような計算式が入っています。この場合「表1の評価が入った列(E列)にフィールド名(列の一番上:この場合は「不可」)と同じものが入っていたら、“ 1 ”としなさい」という式ですね。

 列が分かれたことにより、検索列における検索条件がひとつとなり、例えば、「番組3」の「見切り」とされた数をもとめる場合、SUMIF関数を用いて

 =SUMIF(D:D,番組3,G:G)
 ※単純化してあります

 という計算式で求めることができます。これは感想率集計でも使ったように、「D列に『番組3』とある行をG列(見切り列)において合計しなされ」というもので、表2で計算すると、D列に『番組3』と入っている行、行4と行8が計算対象行になり、結果 見切りのG列の計算は、G4+G8 というものになり、この場合「2」が出てきます。

 てなわけで、これで計算できるように…はなったんですが、この計算方法だと、今度の調査には対応しきれないのです。問題は表1のF列、そう、今回から導入予定の「コメント」欄ですな。

 表示する方法を考えた際、それぞれのコメントはまず「番組ごとにまとまっている」必要があり、かつそれは「継続〜不可/殿堂入り〜駄作」の順で表示されなければならない。表2の計算方法だと、その対応したコメントが引っ張り出せないのでぃす。そこで表2は結局

表3:新番調査シートVer.2
ABCDEFGHIJKL
1
サイト番組不可視聴なし見切り継続
21サ1サ1番1      サ1番1
3  サ1番2      サ1番2
4  サ1番3    サ1番3  
5  サ1番4  サ1番4    
62サ2サ2番1    サ2番1  
7  サ2番2  サ2番2    
8  サ2番3    サ2番3  
9  サ2番4サ2番4      
10  サ2番5      サ2番5

※意味のあるところだけ抜粋
※長いのでサイト→サ/番組→番に変わってます


という表3に変更。EL列に数値ではなくサイト名や番組名を表示させるようにしました。出し方は表2における1を表示させる方法とさほど変わらないので割愛。

 表2で行った、各番組ごとの各評価集計は、SUMIFではなくCOUNTIFを使い、たとえば、番組3の見切り数を数える場合(さっきの例と同じです)、

 =COUNTIF(J:J,番組3)

 のように、J列の番組3を数えるという計算で求めることができます。ですが、COUNTIF関数はSUMIF関数のように、検索列と計算(合計)列を別に持つことができないため、各サイトにおける評価数を集計するために、サイト名を表記した列(EGIK列)が別に必要になっていたりします。

 さて、これでなぜ各番組ごと、各評価ごとの「コメント」が拾えるようになるのかというと、それは、「それぞれの評価ごとに分かれた列において、番組タイトルのある行番号が拾えるようになるから」ですね。行番号、つまり上から何行目にあるかがわかることにより、それに対応したコメントを拾うことができるのです。

 表3はもともと、表1のE列(評価列)を8列に分解したというだけのもので、表3にある評価は列は変わっていても、行番号は表1と同じです。そしてコメントは表1のF列固定で記入されています。つまり、表3のそれぞれの評価列にある番組名を見つけた行番号をそのまま表1のコメント列の行番号に当てはめて引っ張り出せば、ある番組のある評価のコメントが出てくるという算段です。

 具体的にはMATCH関数を使います。例によって「番組3」の「見切り」評価をつけている行番号を引っ張り出すには…

 =MATCH(番組3,$J$1:$J$10000,0)

 のようにすれば、J列の頭から検索し、「4」(行)という値が出ます。次の「番組3」を探すには同じ計算式では出せませんが、これもOFFSET関数を使い検索範囲を変更してやれば問題なく算出することが出来ます。<10月31日のだらけ日記参照(ちょっと違うけど)

 出てきた「4」の数値をもとに、表1から、

 =INDEX(表1!$F$1:$F$10000,4(さっきの計算結果:行),1(列))

 というある範囲から(この場合はF1〜F10000)指定した行および列の値を引っ張り出すINDEX関数をもって、コメントを検出、出力します。

 実際はこの基本計算に加え、検索値が見つからなかった場合のエラー表示をしないようにしたり(エラー値がそのままあると計算できないため)、うっかりミスをしないようなチェックセルを入れたり、コメントにサイトリンクを併記した形のHTMLを出力するための形にしていたりするので、もうちょっとだけ複雑になっています。

 そんな感じにだいたい形になってきてます。あとは集計しながら微調整だろうなぁ。

光希桃AnimeStationのミドルサイズバナーです。これ以外も説明書のコーナーとかにありますので、そちらもご利用下さい。

Contents
だらけ日記過去ログ一覧
だらけ日記 過去ログ最新
あにめ感想にっきV3
旧・あにめ感想にっき
アニメ感想Navi
感想率調査 過去ログ
みきももアンテナ
はてなダイアリー出張所
ママレード・ボーイforever[!]
ママレード・ボーイ補完計画2
タイピングソフトレビュー
アニメ塗りCG
巡礼旅行のコーナー
お持ち帰りのコーナー
自己紹介
更新されない旧日記
サイト説明
更新履歴
Link
いきつけサイト
塚の中。
シャドールーム
帝国大劇場別館
12萌ンキーズ
みでぃずふぁーむ
アニ鳴館
エネルギー吸収と発散
放蕩オペラハウス
No Anime No Life
楽画喜堂
簡易メッセージ
SSL標準装備の無料メールフォーム作成・管理ツール | フォームメーラー
Name:
Mail:
Message:

ここに書かれた内容を
ネタにしてもいいですか?

いい (^O^)
匿名ならいい (^-^)
やめてッ (>_<)

Powered by FormMailer.
Other
光希桃にメール
見てるアニメ
猫ピッチャー(再)
ヘボット!
こねこのチー ポンポンらー大冒険
ぴったんこ!ねこざかな
おはよう!コケッコーさん
きもしば
アバローのプリンセスエレナ
仮面ライダーエグゼイド(特撮)
モンハンストーリーズ RIDE ON
キラキラ☆プリキュア アラモード
DUEL MASTERS
ドラゴンボール
ふるさとめぐり日本の昔ばなし
サンリオキャラクターズ
ONE PIECE
ヴァンガードG NEXT
ミラクルちゅーんず!(特撮)
ちびまる子ちゃん
バトルガール ハイスクール
スカートの中はケダモノでした。
ボールルームへようこそ
最遊記RELOAD BLAST
賭ケグルイ
セントールの悩み
ベイブレードバースト ゴッド
パズドラクロス
がん がん がんこちゃん
恋と嘘
ひとりじめマイヒーロー
異世界食堂
アニメマシテ(実写)
はじめてのギャル
アイドルタイムプリパラ
レゴタイム
GO!GO!ゴマちゃん(2)
潔癖男子!青山くん
ナイツ&マジック
プリンセス・プリンシパル
天使の3P!
妖怪アパートの幽雅な日常
魔法陣グルグル
ナナマル サンバツ
アホガール
徒然チルドレン
BORUTO―ボルト―
遊☆戯☆王VRAINS
ねこねこ日本史(2)
カイトアンサ
イケメン戦国
クリオネの灯り
てーきゅう 9期
ノラと皇女と野良猫ハート
ラファンドール国物語
NEW GAME!!
異世界はスマートフォンとともに。
ヒミツのここたま
アイカツスターズ!
ポケットモンスターサン&ムーン
スナックワールド
月刊ブシロードTV(実写)
アニゲーイレブン(実写)
サクラクエスト
ゲーマーズ!
DIVE!!
コンビニカレシ
あにむす!(実写)
将国のアルタイル
チアフルーツ
リルリルフェアリル
あはれ!名作くん(2)
妖怪ウォッチ
ドラもん
18if
実力至上主義の教室へ
サクラダリセット
地獄少女 宵伽
時間の支配者
RWBY The Beginning
信長の忍び(2)
神撃のバハムートVS
喫茶安元(実写)
無責任ギャラクシー☆タイラー
メイドインアビス
捏造トラップ-NTR-
ぼのぼの
100%パスカル先生
プリプリちぃちゃん!!
タマ&フレンズ うちのタマ
トミカハイパーレスキュー
遊戯王DM 20th リマスター
FCバディファイト バッツ
フューチャー・アベンジャーズ
スパイダーマン
デジモン アプリモンスターズ
特捜警察ジャンポリス(実写)
僕のヒーローアカデミア(2)
境界のRINNE(3)
名探偵コナン
縁結びの妖狐ちゃん
THE REFLECTION WAVE ONE
ひなろじ
Re:CREATORS
Fate/Apocrypha
活撃/刀剣乱舞
戦姫絶唱シンフォギアAXZ
バチカン奇跡調査官
ゴー!ゴー!クックルン
わしも-wasimo-(5)
居残り視聴中(一部)
機動武闘伝Gガンダム(再)
ARIA The ORIGINATION 10
DVD視聴中/視聴予定
伝心・まもって守護月天!
スクールランブル3学期
まほろまてぃっく
まほろまてぃっく〜もっと〜
番組表リンク
TVガイド
しょぼいカレンダー
MOON PHASE

NHK [アニメ]
日本テレビ
TBS[アニメ]
フジテレビ [アニメ]
テレビ朝日 [アニメ]
テレビ東京 [アニメ]

東京MXテレビ[アニメ]
テレビ神奈川[アニメ]
テレビ埼玉

BS日テレ
BS朝日
BS-TBS
BSジャパン[アニメ]
BS FUJI

アニマックス
キッズステーション
ファミリー劇場[アニメ]
カートゥーンネットワーク
チャンネルNECO[アニメ]
日本映画専門CH
LOCAL LINK
RD-S502ネットdeナビ
RD-X5ネットdeナビ
RD-X4ネットdeナビ
RD-XS40ネットdeナビ
RD-X3ネットdeナビ
Amazon.co.jpアソシエイト