Excel

Excelで予定表を作る

ご無沙汰してます。相変わらず、「明日できること、今日すな」の見習いです。

なんだか、やることいっぱいだから、とりあえず予定表を作ってみよう!とトライしました。

こんなんできました(Excel2016使用)。

excel0909-1

毎月、きちっと予定表を作って管理すれば、できる見習い?てな感じです。
ささっと仕事ができるように、カレンダーを毎月作り直す必要がないように、ですです。時短です。
てなことで、2017年9月の予定表を作るときには、G1セルに「2017」、I1セルに「9」と入力するだけで、B3:C33まで、自動で日付と曜日が入ります。
そして、土曜日の行は青っぽく、日曜日の行は赤っぽく塗りつぶされることで、カレンダー感が出ます。そして、本日については、真っ赤に塗りつぶされることで、緊迫感が出てます。

これは、おもに「関数」と「条件付き書式」でできてます。
次にささっと作れるように、ビボー録です。

 

まずは、関数・・・・・・

★年と月を入れるだけで、自動で表示される

excel0909-2

入っている関数は、これだけ。まず、B3に「=DATE(G1,I1,1)」と入力。
これは、G1やI1を参照して、月初の1日目を取得します。
そして、B4に「=B3+1」が入ります。これは、B3の次の日ということ。Excelでは、1が1日となるので、これでOK。
あとは、オートフィルで式を下へコピーすれば大丈夫!

 

★一応、月末処理も・・・

でもでも、30日とか31日とか、月によって違うし、2月に至っては、どうなるのよ!って問題があります。

で、思いついたのが、B31からB33の式です。
B31には「=IF(B30=””,””,IF(MONTH(B30+1)=$I$1,B30+1,””))」としました。
これは、
「まず、直前の日のセルが空白だったらこのセルも空白よ!」ということからスタート。これは、本当はこのセルには入力する必要がないのだけど、その下2つのセルと同じにしておいたほうが管理上楽かなということと、オートフィルを使いたかったから。本来は、B32以降のセルに入れておけばよいものです。

で、上のセルが空白ではなかったら、次は「上のセルの日の次の日の月がI1で入力した月と同じであれば、上のセルの日に一日足した日を返しなさい。そうでなければ、空白よ!」という意味です。つまり、9月の予定表を作っているとき、単純に前の日を1日足していくと、10月1日の予定表が出てきてしまうことがあります。それを防ぐために、「もし、そのセルに表示される日が、次月ならば、空白にしておいてね♪」ということをしてます。

この3つのセルだけに、この式を入れたのは、31日分作った表の中で、一番短くなる可能性のある2月28日の次の日以降を処理するため。29日以降のセルで処理すればよいからです。

なお、C列については、B列をそのまま返しています。こんなことしないで「表示形式」でひとつのセルでやればいいじゃん!っていう突っ込みがあるかもですが、まあ、そこはご愛嬌ということで・・・・・・。許してください。なんとなくです。なんとなく。

 

あとは、「条件付き書式」で曜日と本日

条件付き書式で一気にいけます。

前にも、条件付き書式で、悩んだことがあるので、そのリンクはこちら。

まず、条件付書式を設定したいセル「B3:E33」を選択します。

excel0909-2-2

その状態で、「ホーム」→「条件付き書式」→「新しいルール」と進んで、「数式を使用して、書式設定するセルを決定」をクリックし、「次の数式を満たす場合に値を書式設定」に式を入れ、「書式」から「セルの書式設定」→「塗りつぶし」で塗りつぶしの色を設定していく流れです。

excel0909-2-3excel0909-2-4

「B3:E33」に設定している書式はこんな風です。

excel0909-3
上から、「本日なら、赤く塗りつぶしてね」です。なお、本日の塗りつぶしが行われた場合、曜日での色分けは無効にしたいので、「条件を満たす場合は停止」にチェックが入っています

次が、土曜日の場合に青っぽく塗りつぶす条件付き書式

その次が、日曜日の場合に赤っぽく塗りつぶす条件付き書式です。

 

★「本日なら、赤く塗りつぶしてね」

の式は、「=$B3=TODAY()」です。「$B3」と複合参照になっているのは、この条件に当てはまる場合には、その行のC、D、E列にも書式を適用してほしいから。Bの前に$マークをつけて、B列を固定させるけど、条件付き書式を下にコピーしたときには、4行目5行目と条件を移動させたいので、3の前には$をつけていません。

excel0909-4

★土曜日なら青っぽく塗りつぶす

の式は、「=WEEKDAY($B3)=7」です。B3をWeekday関数を使って、曜日を取得します。Weekday関数は、このように書くと、その曜日を日曜日を1として月曜日は2、火曜日は3というように、数字で返してくるので、土曜日の場合は、7と返します。だから「、7という数字が返ってきたときには、青っぽくしてね」となります。ここでも、「$B3」と複合参照で書いておきます。理由は、「本日なら、赤く塗りつぶしてね」と同じ。

excel0909-5

★日曜日なら赤っぽく塗りつぶす

の式は、「=WEEKDAY($B3)=1」です。これは、「土曜日なら青っぽく塗りつぶす」を日曜日に変えただけなので、理由もまったく同じ。おほほほほ。

excel0909-6

と、こんな感じで、予定表を作ってみました。どうでしょ。
おおお、気づいたら、もう、こんな遅い時間ではありませんか。予定表を作ったところで、本日も終了! あれ??????

 

前途多難な見習いです。皆様、ごきげんよう・・・・・・。(きゃー、どうしよう)

Excelで金種計算(複数の人にお金を分けるとき)

まとめてお金を下ろしてきて、複数の人に分けなければならない!でも、それぞれの金種で何枚ずつ出金すればいいのかしら????

計算がめちゃくちゃ苦手な見習が出くわした課題。銀行の出金伝票には、10000円、5000円、2000円、1000円…、それぞれの金種の枚数を指定する欄があって、そこに枚数を記入するのみだけど、指折り計算すると間違いがありそう。
そんなときに、必要枚数を計算してくれるExcelブックを考えました。
(スクリーンショットはExcel2013でとりましたが、基本的な機能だけなので、どのバージョンでもだいたい同じです)

金種計算用のブック

金種計算用のブック

こんな風なのです。B3:B17に、それぞれ必要な金額を入力していきます。とりあえず、私の場合、15人くらいに分けるのがマックスっぽかったので、15行分です。

すると、O列に、それぞれ10000円から1円まで必要枚数を算出した結果が表示されるというもの。つまり、黄色いエリアに入力するだけで、あとは自動計算になります。

ここで使うものは、基本的な関数と機能ばかり。関数についてはいくつか別案もあるけれども、基本的なもので作成してみました。

あと、2000円札については、あえて割愛。2000円札で出金したくないので…。

非表示の列で計算

非表示の列で計算

まず、最初にですが、実はC:K列を非表示にしてありました。ここで途中計算させることで、簡単な関数のみで計算ができます。配列をつかったりすることで、途中計算を省くこともできますが…。

★ポイント 表示形式

表示形式を使って、「円」や「枚」を表示させることで、それぞれの数をExcelに「数値」として認識させ、計算できるようにしています。
C2:K2には、左から10000、5000、1000、500、100、50、10、5、1と入力、N4:N12は、上から、10000、5000、1000、500、100、50、10、5、1と入力しておきます。

セルの書式設定から「ユーザー定義」

セルの書式設定から「ユーザー定義」

「円」とついているセルB3:B18、C2:K2、N4:N12は、表示形式を「#,###”円”」と設定する(ユーザー定義)。

「枚」とついているセルC3:K18、O4:O12は、表示形式を「#,##0″枚”」と設定する(ユーザー定義)。

表示形式の設定は、設定したいセルを範囲選択した状態でCtrl+1[ぬ]キーを押すと、一発で「セルの書式設定」画面になるので、簡単!

★ポイント C3:K17エリアの計算

このエリアは、それぞれ一人分に必要な金種を計算するエリアです。ここでは、B列に入力した金額をその行内でそれぞれの金種の枚数を計算します。

C3:C17の計算

ここはそれぞれ1万円札の枚数を計算します。C列では式を入力するのはC3のみで、あとはオートフィルします。

C3に入力するのは、「=ROUNDDOWN($B3/C$2,0)」です。この式の意味は、「B3の値をC2の値(つまり10000)で割り、その値を整数になるよう切り捨てする」という意味。

「$B3/C$2」とドルマークを使って複合参照にしたことで、C4:C17はオートフィルで簡単入力できます。(オートフィルの関係上「B3/$C$2」でもいける)

D3:K17の計算

このエリア、D3にのみ式を入力すれば、あとはオートフィルでいけます。

D3に入力するのは、「=ROUNDDOWN(MOD($B3,C$2)/D$2,0)」です。

この式の意味は、「B3の値(25637)をC2(10000)で割った余り、つまり5637を、D2(5000)で割って、その値を整数になるように切り捨てする」という意味です。

B3の値から10000円札で支払える金額を引いて、その数を5000円で割って整数で切り捨てすることで、5000円札の必要枚数を算出しています。

ここでポイントになるのは、それ以降の金種1000円札とか500円玉の扱いです。それぞれの金種の枚数を調べるときは、一つ前の金種で払えない端数の金額のみをその金種で払えるか調べるだけで大丈夫。(これが、2000円札が入ると、そうならないところがあるけれど…)

1000円札の枚数は、5000円で払えない端数のみ、500円の枚数は、1000円で払えない端数のみ、100円の枚数は500円で払えない端数のみ計算すればいい。

ということで、「MOD($B3,C$2)/D$2」というように複合参照を使ってあげることにより、D3:K17エリアは、D3にみに式を入力することで、あとはオートフィルでOKです。

★ポイント B18:K18の計算

ここは単純に合計を出すエリアなのでB18に「=SUM(B3:B9)」と入力して、C18:K18へオートフィルすればOK。

★ポイント O4:O12の式

C18:K18で、すでに答えは出ているのですが、C:K列は計算過程で、使う人には見えなくていい。だから非表示にします(C:Kを列選択後、右クリックから「非表示」)。で、C18:K18は、O4:O12に見やすく転記してあげます。

単なる転記なので、リンク貼り付けでOK。O4には「=C18」、O5には「=D18」、O6には「=E18」…というようにO12の「=K18」までリンク貼り付けを設定します。

★キー操作の短縮のため…データの入力規則

このブックでは、使用時には、B3:B17に半角で数値を入力するだけです。効率よく半角入力できるようにします。B3:B17を範囲選択後、「データ」⇒「データの入力規則」⇒「データの入力規則」⇒「日本語入力」⇒「日本語入力」を「オフ(英語モード)」にし、OKをクリックします。

データの入力規則で

データの入力規則で

★ミス予防に… セルの保護

このブック、使うときに入力するのは、B3:B17のみで、あとは入力すべきところではないです。間違って数式を消してしまわないよう、セルに保護をかけます。

B3:B17の「セルのロック」をはずします。B3:B17を選択後、「ホーム」⇒「書式」⇒「セルのロック」をクリックします。

セルのロックをはずす

セルのロックをはずす

その後、「ホーム」⇒「書式」⇒「シートの保護」をクリックし、「ロックされていないセル範囲の選択」にのみチェックをつけて「OK」をします。単なるミス防止なので、パスワードは設定しなくてもOK。

シートの保護はここから

シートの保護はここから

 

パスワードは任意に

パスワードは任意に

これで必要な設定はおわり。あとは、セルに色をつけたり、罫線を引いたりして、「どこに入力すればいいのかしら」と直感的にわかるようにしてあげれば完成。

「明日の私は、もう他人」なくらい物忘れが激しい見習ですが、これなら明日から大丈夫かしらん????

Excelの条件付き書式は、条件を決めるセルを複数にできるのか?

Excelの条件付き書式って、アクセス解析のときとか、結構、使い勝手がいいわねぇ、と思っている見習。今日は、ちょっと条件付き書式にトライです。(Excel2010を使用)

なんだかんだと使うことが多い、条件付き書式、最近、むむっと考え込んでしまうことがありました。そんなワケで、ビボー録。

それは、「Excelの条件付き書式は、条件を決めるセルを複数にできるのか?」ということ。日本語使用能力に難ありな見習の表現、なんと分かりやすいことでしょう。とにかく、こんなことがしたかったのです。

samp06

6人がテストを受けました。それも似たような試験をくり返し、3回。で、その3回の中で、一番高い得点を取ったのは誰?というのを、明確にしたい!ここでは、2回目のテストで95点をたたき出した石川さんの行にセルの背景に色がつけば、分かりやすいでしょ。って風です。

★条件付き書式のよくある使い方

ととと。条件付き書式って、「数式を使用して、書式設定するセルを決定」(2007以降、2010、2013などのバージョンの場合。2003バージョンなどだと、「数式が」という項目)を使うと、自セル以外のセルに入っている情報を元に、書式を決められたりするので、便利だったりします。

たとえば、こんな風。

samp04

英語のテストを受けた6人の中で、一番成績の良かった人の行すべてに色を塗ってみました。

この手順は…。

samp01

まず、書式設定したいセルを範囲選択します。

samp02

その状態で、「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んでいきます。

samp03

すると「新しい書式ルール」ダイアログボックスが出るので、「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに、数式を書き込んでいきます。
このときのポイントは、

  • セル番地を入力するときは、マウスで直接セルを範囲選択すると、わざわざタイピングしなくてもセル番地が自動入力されること。
  • セル番地の記述方法は、書式設定する(さきほど範囲選択した)セルの一番左上のキモチになって、絶対参照相対参照複合参照を見極めること。

とくに、絶対参照、相対参照、複合参照のあたりは、結構、キモかも。条件付き書式は、なんだかんだ言っても、「書式」の機能なワケなので、一番左上のセルに書式設定したあと、Excelが自動的に残りのセルに書式をコピー貼り付けしていると考えると、ピンとくるんじゃないかと。「絶対参照、相対参照、複合参照」って、要は、入力した後に、コピー貼り付けするときに、ポイントになるところなので…。もごもご(お茶を濁す音)。

ここの場合、A2セルのキモチになって、B2が、B2:B7の中で最高点なら、書式設定(背景に色を塗るなど)してほしいから、=$B2=max($B$2:$B$7)となります。ここで、B2の$マークの付く位置は、B2に書式をコピーしたときのことを考えると、B列は動いてほしくないので、Bの前に$がつく。けど、3行目に書式をコピーしたときのことを考えると、2の前には$マークが付くと困る。だから、$B2。

で、この数式のなかにも、関数が使えちゃう!
だから、最大値を求めるMAX関数が登場。=max($B$2:$B$7)の意味は、B2:B7の中での最大値と同じ値、という意味。どーして$B$2:$B$7というように絶対参照になっているかと言うと、テストの点数が入力されている範囲は、B2:B7。この範囲は、コピーしたときに、動いたら、絶対、困る。だから、絶対参照なり。

というよう数式を入力したら、「書式」をクリックして、適宜、書式設定をします。この「書式」をクリックすると「セルの書式設定」ダイアログボックスが出現するので、たとえば、塗りつぶしを設定したりできます。
今回は、見習のスキな黄緑色の塗りつぶしを設定しました。

後は、OKをクリックして、決定するだけ。

★じゃぁ、条件を決めるセルを複数にできるのか?

ではでは、早速、やってみます。

samp07

まずは手順どおり、書式を設定したいセルを範囲選択します。

「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。

「新しい書式ルール」ダイアログボックスにたどり着きます。

samp08

「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに、$B2:$D2=max($B$2:$D$2)と入力。あとは、書式を設定します。

そして、OKをクリックしていくと…。

samp10

ありま、ダメだわ。
別のデータを入れたり、数式中に使う関数に別のものを使ってみたり、確かめてみたのですが、無理っぽい。ゼンゼン、書式が設定できていなかったり、範囲選択した条件範囲の一番左列のみを条件範囲として認識したり、なんだか、ワケがわからない、わけのきよまろ状態でした…。だれか、タスケテ。

Excelの条件付き書式は、条件を決めるセルを複数にできなっぽそう…。

★じゃあ、なんとかしとこう!

根本解決ではないけど、どうしても、条件を決めるセルが複数になってしまうときは、一回、列を追加して、計算させて、条件を検査させる列を1列にしてあげるしかなさそう。

samp11

こんな風に、E列に最高得点を出力しておきます。これはE2に=max(B2:D2)と入力して、オートフィルすれば、OK。

で、条件付き書式の作業に入ります。あとは、最初の基本パターンと同じ。
書式設定したいセルを範囲選択して、「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。
「新しい書式ルール」ダイアログボックスが出たら…。

「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに、数式を書き込んでいきます。

数式は、=$2=max($E$2:$E$7)です。あとは、書式を設定して、OKをクリックしていくだけ。

samp14

とりあえず、ほしいカタチになりました。ちょっとE列いらないし!ということなら、E列を非表示にすれば、いいだけだし…。

★だいだいのバージョンで同じみたい…。

なんか、悲しい結果に終わってしまいました。「ちょっと、Excelさんってばぁ~」というキモチになったので、Excelの他のバージョンでも、チェックしてみました。Excel2003、2007、2010、2013のどれでも、おんなじ結果で、ダメみたいです。

ちょっとトホホ気分の見習ですが、気を取り直して、ゴゴゴゴゴゴォ~。

★追記★数式を工夫したら、できた!

この記事を公開したら、びっくり。Facebookのお友達が、チカラを貸してくれました。そして、解決策を見つけてくれたのです。

解決法とは…。
条件の中を複数のセル範囲にすることはできないけど、数式の中で、関数を組み合わせて、全部の条件を満たすようにしちゃえば、いいじゃん!ってなもの。

ではでは、やってみます。

まずは、条件付き書式を設定したいセル範囲A2:D6を選択します。「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。

「新しい書式ルール」ダイアログボックスにたどり着きます。

ホント、ここまで、さっきまでと一緒。

「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに入力する数式。ここを工夫すれば、いい!

  1. =OR($B2=MAX($B$2:$D$7),$C2=MAX($B$2:$D$7),$D2=MAX($B$2:$D$7))
  2. =MAX($B2:$D2)=MAX($B$2:$D$7)
  3. =RANK(MAX($B2:$D2),$B$2:$D$7)=1

今回のような場合だと、この3つのどれでもOKです。あとは、書式を設定するだけ。どれでやっても、こんな風になります。

samp20

要は、どんな数式を思いつけるか、ということかしらん。

とくに、1番目のは、汎用性があるかも。

=OR(条件1,条件2,条件3,条件4)

というように、列の数だけORの中の引数を入れて、順繰りに条件を見ていく。そして引数のどれかが該当したら、書式を設定する。という風に、考えれば、結構、どんなのでも行けそうです。

たとえば、こんなのも、アリですよね。

samp21

進捗管理で、それぞれのチェックポイントの日にちが本日を過ぎていたら、その商品の行に書式を設定するとか。

このとき「次の数式を満たす場合に値を書式設定」のところに入力する数式は、

=OR($B2<=TODAY(),$C2<=TODAY(),$D2<=TODAY())

なんていうのが、よさそう。

★結論

条件を決めるセルを複数にしたいときは、セルの列数だけORを使って条件をつなげちゃえば行ける!

  1. 条件付き書式を設定したいセル範囲を選択して、「ホーム」タブ⇒「スタイル」⇒「条件付き書式」⇒「新しいルール」と選んで…。
  2. 「新しい書式ルール」ダイアログボックスへ…。
  3. 「ルールの種類を選択してください」の中の「数式を使用して、書式設定するセルを決定」をクリックした後、「ルールの内容を編集してください」の「次の数式を満たす場合に値を書式設定」のところに入力する数式を、=OR(条件1,条件2,条件3,条件4)にする。
  4. そして、書式を設定する。

これでOKです。やったー。とっても、とっても嬉しい見習です。
見習にチカラを貸してくれたFacebookのお友達、ホント、ありがとうです!それにしても、Facebook、スゴイなぁ…。