goo blog サービス終了のお知らせ 

事務員手帖

ある法律事務所事務員の日常

時間の入力

2007年03月14日 22時12分14秒 | excel
日付に続いて時間についてです。

時間入力で案外面倒なのが,例えば10時45分をA1セルに入力するとき,「10:00」と打つこと。
つまり,数字はテンキーにあるのに,コロンがメインボードにあるので,指を行き来させざるを得ず,軽ーくストレスになりがち。



そこで,誰でも思いつくのが,「1000」と打って「10:00」と表示させる方法はないか,という話。

あるにはあります。
セルを右クリックして「書式設定」の「表示形式」で「ユーザー設定」を選び,「種類」直下のエディットボックスに
「00!:00」
と記入する。これでおk。

ところがこの方法には陥穽が…

例えば,間違って「2579」などと打とうものなら,そのまま「25:79」と表示してしまう。
また,A1セルに「1000」,A2セルに「=A1+72」という式を入れると,平然と「10:72」なる解をよこす…orz

そうである以上,この例によるときは,①絶対に入力ミスをしないこと,②時間計算は必ず検算をすることが必要だってそれじゃあ何のための計算ソフトなのかと小一時間
よって,「人間であるからには過ちもある」との向きは,あきらめるのが無難かと。



では,何としてもコロンを使わず,テンキーだけで時間入力できないものか。

これまた,あるにはあるのですが,どれだけ便利になったといえるのか…

A1セルに「10」,B1セルに「00」,C1セルに下記の式①または②を入力。
(B1セルの表示形式をユーザー設定で「00」に,C1セルの表示形式を「時刻」にする。)

 =TIMEVALUE(A1&":"&B1)

 =TIME(A1,B1,0)

どちらもシリアル値を求めていますので,まともな時間計算はできます。
式を埋めるのが面倒か,コロンを打つのが面倒か,という究極の選択?



ちなみに,シリアル値を使った時間計算は次のとおり(式②で統一)。

 10時の1時間前: =TIME(A1,B1,0)-"1:00"

 10時の1時間後: =TIME(A1,B1,0)+"1:00"

では,「10時の15時間後」は?

 =TIME(A1,B1,0)+"15:00"

と式を入力すると,「1:00」になってしまいます。
これ,深夜残業時間の計算なんかだと不便です。
「25:00」と表示してくれないだろうか。
してくれよう。
書式設定の表示形式でユーザー設定を選び,「種類」直下のエディットボックスに
「[h]:mm」
と記入する。
これだけでおk!



なお,ゼロ時間を表示したくない場合は,
「[h]:mm;;」
と入力します。

ゼロ値の非表示は,メニューバーの「オプション」→「表示」→「ゼロ値」のチェックを外すという方法がポピュラーですが,ユーザー設定で表示方法を指定してやる方法もあるんです。

セミコロンを使って3つの箱を作るイメージです(①;②;③)。
① 1番目の箱は,値が「正」のときの表示形式
② 2番目の箱は,値が「負」のときの表示形式
③ 2番目の箱は,値が「ゼロ値」のときの表示形式
でげす。

試しに,「"正";"負";"ゼロ値"」とユーザー設定してみますね。
入力するのは,もちろん数値ですよ。
A1セルに,順に「1」「-1」「0」と入力します。
すると,表示順に「正」「負」「ゼロ値」と表示されました。

しかし。表示は漢字ですが,あくまでデータは数値です。
その証拠に計算をやってみましょう。
A1セルに「1」,B1セルに「=A1+2」と入力。
結果は…「正」足す「2」で「3」
「1+1=田んぼの田」みたいですね。



その他,ユーザー設定のいろんな式を見ると[赤]とありますね。
んじゃ[青]に変えられる?
もちろんおk。

チャレンジですよ。

では。


日付計算

2007年03月14日 00時23分39秒 | excel
我ながらエクセルネタは日付・時間関係が多いですね。
同僚からよく聞かれるのでメモしときます。



普通,日付は,1セル内に「07/3/13」とか入力します(今年であれば「07」は省略おk。)。
ただ,レイアウトの関係で,年・月・日を分けて入力したいということがあります。
例えば,セルA1に「19」,B1に「3」,C1に「13」など。

①このとき,例えば次の式をA3セルに入力してみる。
="平成"&A1&"年"&B1&"月"&C1&"日"
すると「平成19年3月13日」と表示されます。

数字を全角にしたい人→セルに[07/3/3]と入力し,これを和暦表示(全角)する方法

②同じことは次の式でもおk。
=DATE(A1+1988,B1,C1)

上の①②の違いは,①が文字列であるのに対して,②が数値であること。
この計算後に何をするかによって使い分ける必要があります。
私は,②で統一してます。



ちなみに,エクセルで日付表示するとき,「セルの書式設定」→「表示」で種類を選択するのが普通ですが,「ユーザー定義」→「種類」の直下のエディットボックス(テキストボックス)を使って,オリジナルの表示を作ることもできます。
例えば,「平19年3月」とか「平成19年03月03日」など。
前者は「"平"e"年"m"月"」,後者は「ggge"年"mm"月"dd"日"」と入力して下さい。



さて,差押申立てなどで利息・損害金の計算をするときに,カレンダーで日付を数えるのも結構ですが,せっかくエクセルがあるのでこれを利用してみます。
A1セルに「3/13」,B1に「4/13」と入力し,C1に次の式を挿入する。
① =B1-A1
② =DATEDIF(A1,B1,"D")
どちらも結果は「30」日,初日不算入です。
初日算入の場合は,各式のお尻に「+1」でおk。



時間については後日。

ではお休みなさい。

エクセルでカレンダーを作る!

2007年03月11日 02時47分31秒 | excel
事務員さんは,利息計算や勤怠表などをカレンダー形式で作ることがあります。
そこで,私が作る際の関数式をご紹介します。

例えば,A1セルに[3/1]と入力すると,1か月分の日付が自動で表示されるようにする方法です。A列の表示形式を「日付」に設定してください。ここでは,「*2001/3/14」に設定しました。

【基本】
1 A1セルに[3/1]と入力。
2 A2セルに次の数式を入力。
   =A1+1
3 A31までドラッグ(オートフィル)する。

これが基本です。
ただ,この方法は,あまり汎用性がありません。
というのも,4月(小の月)のカレンダーを作る場合,末尾のA31セルに[2007/5/1]と表示されてしまうからです。そこで,少し改良します。

【改良1】
1 A2セルに次の数式を入力して,A31までドラッグ。
   =IF(MONTH(A1+1)>MONTH(A1),"",A1+1)

2 式の意味
「もし,自セル(A2)の「月数」が前セル(A1セル)よりも大きいときは,何も表示しないが,それ以外は前セルに1日足した日を表示する」。
MONTH(A1) ・・・A1セルのシリアル値を月数表示する(上例では「4」になる)
  MONTH(A1+1)・・・A1セルのシリアル値に1を加算したシリアル値を月数表示する(「上例では「4」になる)

こうすると,A31セルが自セルの場合,値は[2007/5/1]で月数は「5」となります。
ところが,前セルのA30の値が「2007/4/30」で月数が「4」であるため,自セルが前セルよりも大きいため,何も表示されません。
これでおkでもいいのですが,A1セルに「2/1」と入力して試してみてください。

どうでした? A30,A31セルがエラー(#VALUE!)となりませんか。
これは【改良1】の数式が,前セルの値がブランクであることを想定していなかったためです。
では改良。
“ISERROR関数”を使う方法もありますが,ここはシンプルに。

【改良2】
1 A2セルに次の数式を入力して,A31までドラッグ。
   =IF(A1="","",IF(MONTH(A1+1)>MONTH(A1),"",A1+1))

2 式の意味
「もし,前セルがブランク(「””」)の場合は自セルもブランク。
それ以外は【改良1】で。」

いい感じですね。(^^)
さて,事務員さんの業務では,必ず月初が1日から始まるとは限りません。
例えばある事件や経理処理が15日締めで翌日起算の場合,3月16日から入力したりします。

では,上のA1セルに[3/16]と入力してみましょう。
4月15日までキレイに表示されました。

今度は[4/16]でどうだ!
・・・皆まで言うなですね(^_^;)

【改良3】
1 A2セルに次の数式を入力して,A31までドラッグ。
   =IF(A1="","",IF(AND(MONTH(A1+1)>MONTH($A$1),DAY(A1+1)>=DAY($A$1)),"",A1+1))

2 式の意味(IF(AND以下)
「もし,前セル(A1)に1日を加算した月数が,[2007/4/16](A1セルの絶対値)の月数よりも大きく,かつ,前セルに1日を加算した日数が[2007/4/16]の日数と等しいか大きい場合は,ブランク。
そうでなければ,前セルに1日を加算した値を表示する」

絶対値は,不動の値。
数式をドラッグしたりコピーしたりすると,自動的にセル番地が変化しますが,それだと困るときがあります。
参照するセル番地をクリックし,「F4」キーを1回押すと,「A1」が「$A$1」に,繰り返し押すと「A$1」「$A1」「A1」と変化します。
順に,「A列不変,1行目不変」「A列可変,1行目不変」「A列不変,1行目可変」「A列可変,1行目可変」です。
「F4」キーを使わず直接入力してもおk!
参照するセル番地(上で言うと起算日のセル)を固定したいときに便利です!

試しに,[2007/4/16]][2007/2/16]][2004/2/16]](2004年=平成16年は閏年)に変えてみてください。
うまくいきましたか?

以上は,今の時点での私の最終形です。
でもまだバグがあるかもしれません
一つ一つはエクセル本に書いてあることでも,実際にニーズに合わせるのは読者側ですもんね。
まさしく「事件は現場で起こっている」ということです。

ではでは。

切捨て

2007年03月04日 15時40分38秒 | excel
(1) A1セルに[4281.25],A2セルに[65.5]と入力
(2) B1セルに次の数式を入力
   =ROUNDDOWN(A1,0)
(3) B2セルに次の数式を入力(B1をドラッグする)
   =ROUNDDOWN(A2,0)
(4) 計算結果:B1セル[4281],B2セル[65]

なお,ROUNDDOWNROUNDUP に変えると「切上げ」 になります。

利息の端数の処理などに
ドーゾ つ

四捨五入

2007年03月04日 15時36分06秒 | excel
(1) A1セルに[4281.25],A2セルに[65.5]と入力
(2) B1セルに次の数式を入力
   =ROUND(A1,0)
(3) B2セルに次の数式を入力(B1をドラッグする)
   =ROUND(A2,0)
(4) 計算結果:B1セル[4281],B2セル[66]

一応,エクセルのデフォは四捨五入のようです。

時間計算

2007年03月04日 15時23分31秒 | excel
例)時間単価1,500円,法外労働時間2時間17分(深夜・法定休日ではない。)の場合の超勤手当計算

その1
(1) セルA1に[2:17],セルB1に[1500]と入力
(2) セルC1に次の数式を入力
   =(HOUR(A1)+(MINUTE(A1)/60))*B1*1.25
(3) 計算結果は [4281.25] (C1のセル書式の表示形式は「標準」)

その2
(1) セルA1に[2:17],セルB1に[1500]と入力
(2) セルC1に次の数式を入力
   =A1*24*B1*1.25
(3) 計算結果は [4281.25] (C1のセル書式の表示形式は「標準」)

その1は,分単位を1時間単位に引き直す方法。
その2は,エクセル特有の シリアル値 を用いた計算です。
数式がシンプルな分,その2の方が楽ですね。
とは言うものの実は両者,全く同じ計算です。

セルに[07/3/3]と入力し,これを和暦表示(全角)する方法

2007年03月04日 14時46分33秒 | excel
※このカテゴリにメモするエクセルのバージョンは,Excel2002,2003SP2 です。

その1
(1) A1セルに[07/3/3]と入力。B1セルに次の数式を入力。
(2) =JIS(TEXT(A1,"ggge年m月d日"))

その2
(1) A1セルに[07/3/3]と入力。A1セルの書式を次の手順で変更
(2) 「表示形式」→「ユーザー定義」タブを選択
(3) 「種類」の直下「yyyy/m/d」と表示されているエディットボックスをクリックして,次のように上書きする。
(4) [DBNum3]ggge"年"m"月"d"日"

2つは,セルを1つ使うか2つ使うかに違いがあります。
また,その2は,テキストが右寄せになってます。
つまり表示と裏腹に数値として認識されているわけです。

なお,[DBNum3] は,上例の日付だけでなく,セルの数値を数値のまま全角表示したいときに使えます。
設定の要領は同じ。例えば,
(1) [DBNum3]#,##0 と設定し,
(2) 当該セルに半角で [1234] と入力すると,
(3)「1,234」と全角表示されます。

※この項,あまりにグダグダだったので編集し直しました。