エクセル実践塾 > エクセル実践塾2016

ユーザー定義関数の結果が0になるとき、 何も表示されないようにしたい

 

セルの書式設定や条件付き書式を使うのが一般的ですが、 ユーザー定義関数として処理する方法もあります

前回の CalculateWorkingHours 関数を例にすると、

労働時間がゼロの場合には空の文字列を、

それ以外の場合には実際の労働時間を返すような、

次のような条件分岐(If ステートメント)を追加することで実現できます。

労働時間が0のときには、CalculateWorkingHours という変数に空の文字列 "" を代入するので、結果を返すための変数は、どんな種類のデータでも格納できるVariant型にします。


Function CalculateWorkingHours(出社時刻 As Date, 退社時刻 As Date) As Variant

 ' 労働時間の計算

 Dim 労働時間 As Single

 労働時間 = 退社時刻 - 出社時刻

 

 ' 所定の休憩時間の計算

 Dim 休憩時間 As Single

 If 労働時間 >= TimeValue("6:45") Then

  休憩時間 = 休憩時間 + TimeValue("0:45")

 End If

 If 労働時間 >= TimeValue("9:00") Then

  休憩時間 = 休憩時間 + TimeValue("0:15")

 End If

 

 労働時間 = 労働時間 - 休憩時間

 

 ' 労働時間が0の場合は、0ではなく何も表示しない

 If 労働時間 = 0 Then

  CalculateWorkingHours = ""

 Else

  CalculateWorkingHours = 労働時間

 End If

End Function

 

@関数の結果が0になるとき、その0を非表示にするには、セルの書式設定や条件付き書式を使うのが適当ですが‥‥‥

Aユーザー定義関数で、条件分岐(If ステートメント)を追加する方法もあります

具体的には、左図のように、

関数の結果を返す変数のデータ型をVariantに変え、

結果が0の場合には空の文字列""を、

そうでないときには結果の時間数を代入します。

Function CalculateWorkingHours(出社時刻 As Date, 退社時刻 As Date) As Variant

Variant 型は、データ型の一つです。

Variant 型は非常に柔軟で、どんな種類のデータでも格納できるため、複数の異なる型のデータを扱う場合に利用します。

 ' 労働時間が0の場合は、0ではなく何も表示しない

 If 労働時間 = 0 Then

  CalculateWorkingHours = ""

 Else

  CalculateWorkingHours = 労働時間

 End If

条件分岐では、If 労働時間 = 0 Then:労働時間がゼロかどうかを判定します。

労働時間がゼロであれば、CalculateWorkingHours という変数に、空の文字列 "" を代入します。

労働時間がゼロでない場合は、実際の労働時間を CalculateWorkingHours に代入します。

B「数式」タブの「再計算実行」をクリックすれば、ユーザー定義関数の結果が更新されます

作例の結果0のセルに、何も表示されなくなりました。

   
   
   
   
   
   
   
   
   
   
   
   
   
   
   
 

 

●出社時刻と退社時刻から、 所定の休憩時間を除いた労働時間を求めるための、 ユーザー定義関数を作る動画です

Dyson(ダイソン)オンラインストア

関連する他のページ

出退の時刻を簡単に記録したい
簡単なマクロを作れば、 「出社」や「退社」をクリック(タップ)するだけで現在日時を入力できる タイムカードを用意できます

セル範囲を対象とするユーザー定義関数を作りたい
For Each...Next ステートメントを使って、選択範囲に含まれるセルを順番に処理します

オリジナルの関数(ユーザー定義関数)を作りたい
Functionプロシージャとして、Visual Basicで作成できます

マクロを作りたい
「開発」タブを表示しておけば、 そこから「Visual Basic」を実行してマクロを作ることができます

“セキュリティの警告”が表示されるんだけど・・・
マクロを含むブックを開くときには、注意を促すべく、「セキュリティの警告」が表示されます

マクロ有効ファイルって何?
マクロを含むブックは、 マクロ有効ファイル(マクロ有効ブック)として保存しなければ、マクロが失われてしまいます

『セル範囲を検索して、 該当セルの右隣の値を取り出す』ユーザー定義関数を利用して、 文字列全体を置換したい
同じモジュールにあるユーザー定義関数は、 別のユーザー定義関数から利用することができます

セル範囲を検索して、 該当セルの右隣の値を取り出したい
10行程度のユーザー定義関数で可能です

指定色で塗りつぶされているセルの個数を求められる、 ユーザー定義関数を作りたい
ユーザー定義関数は、その処理を拡張できます

指定色で塗りつぶされているセルの個数を求めたい
塗りつぶし色を数値で表すユーザー定義関数を作れば、数式で求めることができます

平日夕方の指定時間帯の労働時間を確認したい
平日と夕方を条件として、 MIN関数で該当時間数を得ます

土日に祝日を加えた労働時間を集計したい
祝日であるか否かは、 COUNTIF関数を使った対象日の検索で確認できます

土日の労働時間を集計したい
WEEKDAY関数を使った配列数式で行えます

シフト時刻より遅れた出社時刻を強調したい
TIME関数で時刻化したシフトを、 出社時刻と比較して、 条件付き書式で強調する方法があります

残業時間を求めたい
労働時間から、 8時間を表す"8:00"を減算します

労働時間を求めたい
退社時刻から出社時刻と休憩時間を減算します

休日の早出時間の計算を無効にしたい
IF関数を使えば、 計算式に空セルが含まれるときなど、 計算結果を別の値に置き換えることができます

残業時間や深夜時間、早出時間を計算したい
MAX関数を使えば、 それが存在するときにだけその時間が表示されるようにできます

所定労働時間を求めたい
MIN関数を使って、 法定労働時間の8時間を最大値とする数式を設定します

勤務時間0を非表示にしたい
休日の勤務時間0は、 表示形式をユーザー定義することで非表示にできます

勤務時間を計算したい
退勤時刻から出勤時刻を減算することで、 勤務時間を求められます

労働時間や残業時間などの集計を行いたい
時間の集計は通常の数式で行えますが、 ○.○時間のようにしたいときには1時間で除算します

出勤していない日の計算は行わないようにしたい
IF関数式への条件の追加は、AND関数などを使って行います

残業があったときにだけ、その時間を表示したい
IF関数を使って、労働時間が8時間を越えるときにだけ、残業時間の計算を行うようにします

計算結果が0になるとき、それが表示されないようにしたい
表示形式で、値が0のときだけ白色で表示されるようにできます

土曜日の日にちを青色で、日曜日の日にちを赤色で表示したい
WEEKDAY関数を使った、条件付き書式を設定します

勤務時間0を非表示にしたい
休日の勤務時間0は、 表示形式をユーザー定義することで非表示にできます

勤務時間を計算したい
退勤時刻から出勤時刻を減算することで、 勤務時間を求められます

深夜時間を求めたい
深夜時間への区切りとなる22時を "22:00"という形で指定して演算し、 24(時間)を乗算して○.○時間で表示します

残業時間を求めたい
勤務時間を○.○時間という形ですでに求めているなら、 そこから8(時間)を引けば、 残業時間を求められます

勤務時間が0になるときには非表示にしたい
「ゼロの表示形式」を#にすると、計算結果が0のときに非表示になります

勤務時間を○.○時間という形で計算したい
時刻同士の演算に24を乗算すれば、○.○時間になります

計算結果の0を無効にしたい
IF関数を使えば、計算結果の0を無効にできます

計算結果の0を非表示にしたい
表示形式を「#」にします

 

 

 

 

 

出前館

アウトドア&フィッシング ナチュラム