ただの備忘記録

忘れないように記録を残します。忘れるから記録に残してます。そして、その記録が役立つといいかな。

【Excelのメモ】チェック表の背景に自動的に色分けをする

2018年04月27日 | IT全般

チェック表を作るとき、必要な分だけ色の塗り分けをすることがあります。
例えば、有給休暇の管理表のように、会社が日数(回数)の上限を定め、消費する毎に日付きを記録するものがあるとします。

上図のようにAAAさんは4日の付与日数があるので、4つ目のマスまで色が付いています。これを毎回手動でやるのではなく、付与日数に応じて自動で色が付くようにしたいと思います。

G列には「4」「5」「3」と数値が入っています。
表示形式をユーザー定義で「0"日"」としているので、画面上は「4日」「5日」「3日」と表示されますが、セルには数値だけが入力されているので、計算式に使えます。

1行目のBからFまでの数字は日数と対応させるための数値です。

このように1行目の数値とG列の数値を使って、表の背景に色を付けます。

①範囲指定をB2からF6まで設定し、「ホーム」のメニューから「条件付き書式」の「新しいルール」を選択します。
B2のセルに条件付き書式を設定した後、B2からF6の範囲にコピーしても構いません。

②「数式を使用して、書式設定するセルを決定」を選択します。

③ルールの内容に「=(B$1<=$G2)」と数式を入力します。
[B2]のセルだけを考えると、「B1<=G2」の比較をしています。「1<=4」と置き換えられますので、この式は真となるため、書式が実行されます。

④条件が真の場合に表示される書式を「書式」ボタンを押して設定してください。
書式が設定できたら、上の画面に戻るので「OK」を押します。
これで、範囲全体にこの条件式が適用されて、色分けができます。

【条件式の解説】

③で条件式を[B2]に設定しました。
設定時に範囲指定をしている場合、左上のセルに入力した数式は、残りのセルにも自動的にコピーされます。
このとき「$」マークが重要なポイントとなります。

[B2]から[C2]にコピーしたとき、数式はどう代わるでしょうか。
「=(C$1<=$G2)」となります。「$」が付いていない場合、「=(C1<=H2)」となるので、1列目とG列の比較式ではなくなってしまいます。常に1行とG列は比較で使うため「$」を使ってコピー時の変化を止めています。(相対指定と絶対指定の違い)

条件式を書く場合は「=(条件式)」という書式を守って、()の中に条件式を1つ記述してください。


【Excelのメモ】RANKとMATCH

2018年04月24日 | IT全般

Excelにはフィルタを使った「並べ替え」という機能がありますが、データのシミュレーションをしながらリアルタイムに順位を確認したい場合や、元データの表が1行単位でないため「並び替え」が使えない場合もありますので、関数を使って並び替えを実現する方法としてメモを残しておきます。

●RANK関数

RANK関数を使うと表の数値に順位を付けることが出来ます。
例えば、成績表だと点数の順に1から番号を付けるので、並び替えに利用できます。

[D2] =RANK(C2,$C$2:$C$11)

順位を見ると、同順位があります。点数が同じなら順位も同じという訳です。
そこで、少し手を加えて同順位の場合、名簿の上にある方を優先順位とします。

[D2] =RANK(C2,$C$2:$C$11)+A2/100
[E2] =RANK(D2,$D$2:$D$11,1)

D列を仮順位に変更します。元の順位に番号の値を小数点以下に加えています。同順位がある場合、小数点以下で順位に差が出ます。
E列で、仮順位を元に再度RANKを使って順位を付けています。この時、仮順位の逆順(小さい順)に順位を付けます。

●VLOOKUP関数

順位が出たら、順位順の名簿を作りたいと思います。
右に新しく順位表を作成し、左の表の順位から同じ順位のデータを取りたいのでVLOOKUPを使ってみます。

[H2] =VLOOKUP($G2,$A$2:$D$11,3)

VLOOKUPを使うため、左の表はE列をA列に移動してあります。
右の順位表ですが、大きな問題が発生しています。1位〜3位がエラー表示、4位と5位は同じデータが表示されています。
VLOOKUPでは、上から順に数値を調べて行きますが、検索値を超えると手前の行に戻って値を取得します。そのため、検索範囲の一番左の列の数値が順番に並んでいないと期待の動作にならないのです。

[H2] =VLOOKUP($G2,$A$2:$D$11,3,FALSE)

VLOOKUPの引数の最後にFALSEを追加します。これによって検索条件が近似値から完全一致に変わり、#N/Aが正しく表示されます。

●MATCH関数

上記の並べ替えでは、VLOOKUPを使うために元の表の順番を変更していましたが、元の順序にE列を戻して、MATCHを組み込んでみます。

[H2] =VLOOKUP(MATCH($G2,$E$2:$E$11,0),$A$2:$C$11,2)
[I2] =VLOOKUP(MATCH($G2,$E$2:$E$11,0),$A$2:$C$11,3)

MATCHを使って左の表の順位から番号を調べています。このとき、3番目の引数「0」が重要で、完全一致の検索を行います。これを省略するとVLOOKUPと同じ問題が発生します。
MATCHを使って番号が分かったら、それを元にVLOOKUPで番号から点数までの範囲(A2:C11)を使います。

●INDEX関数

上記のMACTH関数をINDEX関数と組み合わせてみます。

[H2] =INDEX($B$2:$B$11,MATCH(G2,$E$2:$E$11,0))
[I2] =INDEX($C$2:$C$11,MATCH(G2,$E$2:$E$11,0))

H2では、MATCHで順位が範囲の何行目にあるかを調べて、INDEXでは名前の範囲から同じ行にある名前を表示しています。


【映画】レディ・プレイヤー1

2018年04月22日 | 映画
アリオ川口で「かわぐちパンフェスティバル」があると聞いたので行ってきました。
パンはあまり良い物に出会えませんでしたが、その後「レディ・プレイヤー1」を観てきました。
映像に集中するために吹替版にしたのは正解でしたが、座席が一番前だったのでとても見難かったのです。
数百という沢山のキャラクターが画面中にいますので、全体を見て楽しむべきでした。
ストーリーはとても分かりやすいし、ゲームや映画のネタがちりばめられており知ってる人はより楽しめる内容です。それくらいはもう予告を観たら分かりますよね。

ガンダムの登場シーンは予告編でも流れていますが、その後はしっかりと主役を務めています。何と戦っていたかは秘密ですね。
3Dモデルも格好良かったのですが、肩のWBのマーキングは最近のプラモデルにはないみたいですね。でも、リアルなシミュレーション系ゲームに登場しそうな感じでした。
30年後くらいの話ですが、あんなVRワールドが登場するのも時間の問題かも知れませんね。

http://wwws.warnerbros.co.jp/readyplayerone/