月別アーカイブ: 2015年7月

グラフの色を取得

セルの塗りつぶし色を取得するではセルの背景色を取得しました。今回はグラフの色を取得してみます。

まずは棒グラフを作成してみます。すると棒グラフの色が自動で塗りつぶされます。

graphcolor

この棒グラフの色を取得したいと思います。グラフを選択しているとグラフツールというツールバーが表示されます。棒グラフの某の色を変更するときはここを使用するのでグラフツールの書式の図形の塗りつぶしの下向き三角▼をクリックします。色の設定のユーザー定義のタブをクリックしますが、いつでも黒が選択されています。

この方法ではグラフの色と同じ色を取得することが出来ません。

graphcolor_1

エクセル2007と2010は画面表示が違いますが同じような方法で可能です。エクセル2013ではまず取得したい色の棒の上でダブルクリックします。

エクセルの右にデータ要素の書式設定が表示されますので系列のオプションの一番左の塗りつぶしと線をクリックします。塗りつぶしという文字の左の三角をクリックして詳細が表示されるようにします。一番下の色のボタンの右の下向き三角▼をクリックします。

graphcolor_2

色の設定のダイアログボックスが表示されるのでユーザー設定タブをクリックします。これでRGBまたはHSLのカラーコードが取得できます。これをメモればほかのアプリケーションでも同じ色を使うことが出来ると思います。

graphcolor_3

 

エクセルの2007と2010ではグラフの系列(棒)の上で右クリックします。

graphcolor_2007

サブメニューの一番下のデータ系列の書式設定をクリックします。

graphcolor_2007_1

データ系列の書式設定のダイアログボックスが表示されます。塗りつぶしを選択し色の隣の下向き三角▼をクリックしその他の色をクリックします。

graphcolor_2007_2

 

色の設定のユーザー設定から色を取得することができます。

excel2010とexcel2007は同じ手順です。

セルの塗りつぶし色を取得する

エクセルにはセルの塗りつぶしがあります。(以下図はexcel2013)

cellcolor

塗りつぶしたセルと同じ色は簡単に取得できます。塗率されたセルを選択して、ホームタブのフォントの塗りつぶしの色の隣の下向き三角▼をクリックします。

cellcolor_1

それだけで塗りつぶしに設定した色が選択されていますので同じ色を使ったり、同じでない色を使ったりできます。

また、カラーパレットから選択された以外の色(その他の色で選択した場合など)や、別のアプリで同じ色が必要な場合、カラーコード(RGBかHSL10進数)を取得できます。

任意の色で塗りつぶされたセルを選択します。ホームタブのフォントの塗りつぶしの色の隣の下向き三角▼をクリックします。最近使用した色にでていますが、色の値を取得するためその他の色をクリックします。

cellcolor_2

色の設定のダイアログボックスが開きます。ユーザー設定タブをクリックします。カラーモデルでRGBかHSLを選択します。下に値が表示されますのでメモリます。

cellcolor_3

RGBは16進数で使われることが多いのですが、ここでは10進数です。必要であれば変換してください。ウィンドウズ付属の電卓でプログラマーを選択すれば簡単に変換可能です。

 

単位があっても計算できる

ちょっと判りづらいタイトルですが、エクセルでどうしても表の中に単位を表示しておきたい時、数値と単位を別のセルに分けることがあるかもしれません。

tanni

おとこのこ、おんなのこになっているのだから単位は人で間違いないと思うのですがお弁当の仕出しだと人前とか制服の注文だと、着になったりすることもあるかもなのでどうしてもそれぞれ人という単位がいる、欲しい、前回がそうなので、上役が言ってるので。などいろいろな理由があるのでしょう。

いきなりセルに9人とか入れてしまうと文字列になってしまうので計算できなくなってしまいます。仕方なく単位の人を別のセルにして、見出しをセル結合して中央揃えにして、罫線を消して表を作るかもしれません。

こんなときは、セルの表示形式で#(ハッシュ)を利用すれば便利です。

順番は後でも先でも構いません。まずは単位を無視して表を作成しておきます。

tanni_1

圧倒的に早く簡単に作成できますね。

次に人と表示したいセルを範囲選択しホームタブの数値のプルダウンからその他の表示形式を選択します。

tanni_2

セルの書式設定のダイアログボックスが表示されます。

tanni_3

種類の下のG/標準を消してしまい、#人と入力しなおします。#は半角英数で入力してください。全角ではだめです。サンプルに数値+人と表示されているのを確認しOKのボタンをクリックします。

tanni_4

これで、単位が表示され、しかも、オートサムの計算もされています。数式バーを見ていただければ入力されているのは数値です。ただ、表示上後ろに人がついているだけです。

tanni_5

#(ハッシュ)は数値を表します。今回は#だけですので整数を表します。少数は四捨五入されて表示されます。

また、値が入っていない場合は人も表示されずただの空白セルです。

あとで見た時にちょっと見づらいので個人的には好きではないですが、G/標準を消さずにそのすぐ後ろに人と文字を付け加えることも可能です。むしろこちららの方が汎用性が高いですね。

tanni_6

人のところを変更して、もちろん#の前でも構いませんし、2文字以上でも構いませんので色々と使ってみてください。

時間計算3 FLOOR 関数

時間計算の流れ的に、勤務時間の表を作っていましたので、もう少しだけ勤務時間の表に必要と思われる計算をしてみます。

退勤時間から出勤時間を引いてさらに休憩時間を引くと勤務時間になるというのは既にやってきました。実際の勤務時間を計算する場合、何かの単位で丸めを行うと思います。

30分未満は、切り捨てとか、15分未満は切り捨てとかです。累計に対しての丸めだったら目で見て入力しなおしてもそう手間はかからないかもしれませんが、大抵は日々、丸めが発生すると思います。今回は15分未満は切り捨てという丸め処理を行います。

hour_21退社時間が8:08なら15分未満なので勤務時間を8:00にしたいと思います。

FLOOR 関数

FLOOR(数値, 基準値)

数値、基準値ともに必須です。数値を基準値の倍数で0に近い(少ない)方に丸めます。

A列の値をセルB1の値3で丸めた結果です。数式は

=FLOOR(A2,$B$1)

です。4.7は3を基準値にすると3の倍数の6より小さく3より大きいので3以上6未満が切り捨てられて3となります。

hour_20

excel2013にはfloor.mathという新しい関数があります。第1引数が負の場合振る舞いが変わるようです。おそらく、今後はfloor.math関数に統一されていくのでしょうが(単なる推測です。)、後方互換のため当分floor関数も使えると思います。

今回はfloor関数を使用します。FLOOR(数値, 基準値)の数値は勤務時間を計算する数式退社時間 – 出社時間 – 休憩時間ですね。基準値は15分ですので、0:15とします。ただし、今回は15:00をダブルクォテーション( ” と ” )で括ってやります。

hour_22

途中まで式が入っていた場合は手入力で追加が早いかもしれませんが、一から入れなおすならば数式タブの関数ライブラリの数学/三角にFLOOR.MATH関数(excel2013以前はありません)があります。エクセル2013でFLOOR関数を関数ライブラリから使うにはその他の関数の互換性の中にあります。

hour_23FLOOR.MATH関数もFLOOR関数も数値がマイナスでないときは同じなので引数は同じものとなります。FLOOR.MATH関数の第3引数のモードは省略可能ですので空白にしておきます。

hour_24

あとはこれをうまくコピーしてあげれば丸め処理の完了です。

逆に切りあげるばあいはCEILING関数というのがあります。

時間計算2(時間計算が24時間を超えた場合)

時間計算1で簡単な時間計算をしましたが、時間計算が24時間を超えた場合をご説明します。

時間計算1で作成したものをオートフィルでうまくコピーしてから退勤時間を修正したものです。これに、勤務時間の合計を求めようと思いsum オートサムを入れてみました。

hour_9ところがどうも計算結果が思ったものにならないようです。

hour_1058時間以上のはずなのですが、10:35と表示されています。実際にはきちんと合計されているのですが、表示方法が希望したものと違うだけです。

ホームタブの数値のプルダウンからその他の表示形式を選択します。

hour_11 セルの書式設定のダイアログが表示さすでに時刻が選択されています。hour_12

左の分類の一番下のユーザー定義をクリックします。種類の中を書き換えます。当初は、h:mm;@と表示されているはずです。(@は無くてもかまいません)これのhを角かっこでかここみます。必ず日本語入力をオフにして半角英数で入力してください。[h]とすることで24時間を超えた分も表示されるようになります。サンプルの表示を確認したらOKボタンをクリックします。hour_13これで思ったような累積の勤務時間の表示が出来ました。

hour_14では、夜勤などで日付が変わった場合はきちんと計算されるでしょうか

最後の行のセルA8の出勤時間を19:00にして、退社時間を06:00にするとどうなるでしょうか?計算式的にはマイナスとなり、マイナスの時間はエラー表示となります。

hour_15正解は翌日の午前6時は30時として30:00と入力します。

hour_18

するときちんと計算されます。入力したセルは24時間を超えた分しか表示されませんので6:00と表示されます。hour_19

数式バーを見ればわかるのですが、24時間を超えた時刻を入力した場合、1900/1/1 6:00:00のように1900年の1月1日の時刻になります。これはエクセルが時間をシリアル値という物で管理しており日付の伴わない時刻(24時間未満)は1900年の1月0日扱いしているためです。日付は1900年の1月1日を起算日として1日を1として累積して管理しています。

0を表示しない

エクセルで計算するときに結果が0になった場合はもちろん0と表示すればいいのですが、計算に使用する値が入っていない場合も0と表示されてしまいます。

zero

計算式は入っているが価格、数量が入っていない場合ですね。0で間違っているわけではないのでしょうが、気になる人は気になるところでしょうか。

よくあるのがIF関数で価格か数量が空白だったら計算しないで空白にして、両方とも空白でなければ計算するというやり方です。

zero_1

=IF(OR(B3=””,C3=””),””,B3*C3)

のように”(ダブルクォテーション)の2つ連続で空白としています。

私自身もよくやりますが、難点があります。この計算式で出た答えを再度どこかのセルで参照する場合です。合計の場合は途中のセルに文字が入っていても無視してくれますがその他の計算では無視してくれないことがあります。

zero_2

E 列に税込み価格を計算してみました。108%を掛けて少数を切り捨てるTRUNC関数を使いました。

zero_3

そうすると#value!というエラーが表示されて今いました。セルD6は空白セルに見えますが実際はIF関数によって””が入っていますので掛け算が出来ませんということです。

空白を知るためにB3=””ということが出来るのに、””を書き込むと空白セルでなくなってしまいます。

zero_4

IF文を使わずに単純に0と表示しておけばエラーは出ませんし、計算式も数値も何も入っていない空白セルもエラーが表示されません。

で、これを回避するためにD列の値が””かどうか確認するIF文を使うことになります。

=IF(D3=””,””,TRUNC(D3*$E$1))

これもありですか。やらないことはないですが何か腑に落ちない感じがしないわけではありません。

値が0の時は何も表示しないという表示形式を使っても同じことが出来ます。

先ほどからのIF関数を使うのをやめて0が表示されている状態に戻します(何もしてない状態です)。

zero_5

次に0を表示してほしくないセルを選択し、ホームタブの数値のプルダウンからその他の表示形式を選択します。

zero_7

セルの書式設定が表示されますので分類の一番下のユーザ定義をクリックします。

zero_8

通常なにもセルの表示形式設定されていない場合は種類のすぐ下にG/標準と表示されています。

zero_9

このG/標準を

G/標準;G/標準;

と書き換えます。G/標準の後ろにセミコロン(;)を入力し再度G/標準を入れてまた後ろにセミコロン(;)を入力します。

zero_10

これで値が0の時は何も表示されなくなります。

zero_11

エクセルのセルの表示形式では4つの状態をセミコロン(;)を使って1つのセルに同時に指定可能です。

正の値;負の値;0;文字列

となります。G/標準;G/標準;は正の値は標準、負の値も標準、0の時は何も表示しないとなります。

オプションからゼロ値のセルにゼロを表示するのチェックを外して、0を表示しないという設定もできますが、指定したシートすべての0が表示されなくなるので注意してください。
zero_12

時間計算1

エクセルでは日時や時間も扱えますが、計算するときはちょっとしたコツが必要です。

朝の9時から、夕方6時まで働きました。休憩時間は1時間とりました。さて、何時間はたらいでしょうか?

これは夕方6時を24時間表示の18時にして朝の9時を引いて、さらに休憩時間1時間を引くと8時間と出ます。

hour

これでは単に引き算だけですが、単位を分まで考慮するとややこしくなってきます。朝の9時から、夕方6時半まで働きました。休憩時間は1時間とりました。

6時半を18.5とすれば何とかなりますが、6時20分ならどうしましょうか。3分の1時間なので18.33時間で計算しますか。

hour_1

エクセルでは時間を扱えますので時間で計算します。

時間を入力する場合は、時:分となるように時と分の間にコロン(:)を入力します。

hour_2

計算結果おかしいようです。これはエクセルでは日付や時刻をシリアル値という物で管理しています。1日で1になるようです。8時間は3分の1日ですから0.333となっています。このままでは不便です。時間表示に変更します。

ホームタブの数値のプルダウンメニューから時刻を選択します。

hour_3

秒まで表示されていますので表示を変更します。

hour_4

再度ホームタブの数値のプルダウンメニューを表示して一番下のその他の表示形式をクリックします。

hour_5

セルの書式設定が表示さます。すでに、一度時刻を設定していますので分類は時刻になっているはずです。右側の種類から13:30となっている時と分だけのものを選択しOKボタンをクリックします。

hour_6

うまく、表示されました。

hour_8時間計算は少し手間がかかりますが、見たまま(10進数に変換しなくても)入力計算できるのでとても便利です。