小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか?
このエクセルによる商品管理でリストの中にある期限切れ商品が気づかずに放置されて困ったことありませんか?
エクセルファイルを開いたら自動的に通知させれば、簡単に解決しますよ!
方法は簡単で、エクセル関数とエクセルVBAを組み合わせて、ユーザーフォーム上に簡単なお知らせ機能を持たせるだけで完成しますので、作り方をご紹介します。
エクセル関数の設定
“とりっぷぼうる”サイト内で紹介しているフリーパスも、全てが通年販売だと一度掲載すればそのままでいいのですが、当然ながら期間限定フリーパスが圧倒的に多いです。
その為に期限切れになったら削除しないといけないので、サイト内で管理は難しいのでエクセルにリストを作成して管理しています。

見ての通り、実際にこのような単純なリストで管理しています。

それではまず始めにエクセル関数を使って、残り何日有効なのかが分かるようにしましょう。
TODAY関数で本日の日付を自動取得
今日の日付は当然ながら日々変わっていくので、わざわざ毎回手入力するなんて面倒です。
そこで、エクセルを開いたら今日の日付を自動的に取得して表示させる関数が「TODAY関数」です。
上記画像にTODAY関数はセルF2に記入しています。
このTODAY関数を私自身は様々なエクセルファイルで使用してるぐらい、使用頻度の高いエクセル関数と言ってもいいと思います。
しかも使い方もすごく簡単でセルF2にはこのように入力しているだけです。
=TODAY()
それでは次に、残り何日なのかが分かるように計算式を設定しましょう。
期限終了日から今日の日付を引いて残数表示
上記画像に計算式はD列に記入しています。
ごくごく普通の引き算なので、終了日から今日の日付を引くと残り日数が表示され、例えばセルD2には下記のように数式を入れると・・・
=C2-F1
となりますが、あまりにもこのままでは単純すぎて、C列が空欄(まだリストにデータが無い状態)だと、エラーになり#####と表示されてしまいます。
このままでは並べ替えなどができないので、空欄の時は「0」と表示されるようにIF関数を使いましょう。
=IF(C2=””,0,C2-F1)
これで、フリーパス(商品)が未登録の時は「0」となり、エラー表示が無くなり見た目もスッキリしますね。
この式をD列の3行目以降にも入力すれば完成ですが、ここでの場合は200行目まで入力してあれば、問題ないと思って入れてあります。
このIF関数はとても便利で条件に応じて結果を自由に変えることができるので、絶対にマスターしなくちゃいけないエクセル関数です。


エクセル関数での準備はこれでおしまいなので、残りは全てエクセルVBAで作業となります。
ワークシート上の見栄えなどの書式などは、ここでは省略します。
エクセルVBAの設定
ここで行うエクセルVBAを使わないで毎回の手作業であれば、特に必要が無くなってしまうのですが、エクセルVBAでの設定を行うと下記手順が全て自動化されますので、エクセルファイルを開いただけで完成します。
- リストの並べ替えが自動化され期限切れに近い順に表示されます
- 期限切れになったリスト見つけて文字色を赤字に変えて目立たせる
この2つの作業が一瞬で行われるのでとても便利なので、下記の手順で設定していきましょう。
並べ替えVBAコード
エクセルファイルを開くと同時に様々な作業を行うには、VBA画面のThisWorkbookに自動化させたい作業1,2の順番にコードを書いて行けば完成します。



今回は、分かりやすくするために最初に、作業1と作業2を別々に分けてご紹介して最後に1つにまとめたVBAコードをご紹介します。
まず最初に、並べ替えVBAコードを記述するとこにより商品リストの終了日が古い順(小さい)に並べ替えることができます。
先ほどご案内した通り、ここでは200行目までとします!
Private Sub Workbook_Open()
Range(“A2:C200”).Sort Key1:=Range(“C2”), Order1:=xlAscending
End Sub
- エクセルファイルを開いたら
- 範囲内(セルA2:C200)をC列の値が小さい順に並べ替える
- マクロ記録終了


このままでも、エクセルファイルを開くと自動的に期限切れに近くなってきた順に上から表示されるので、手動で並べ替えを行うよりは確実になると思います。
ただ、せっかくなので目立つように期限切れになった時には、文字色を赤字にして目立たせましょう。
参考までに、エクセルVBAでの並べ替え項目は3つまでとなっています。


期限切れリストを見つけたら赤文字
先ほど並べ替えを行うVBAコードを書いた次の行に、残日数(期限)が切れたら(マイナス表示になったら)文字色を赤に表示するというVBAコードを書き足します。
For i = 2 To 200
If Cells(i, 4) <= 0 Then
Cells(i, 4).Font.ColorIndex = 3
Else
Cells(i, 4).Font.ColorIndex = 1
End If
Next i
- 繰り返し処理の変数「i」を宣言して変数は2行目~200行目にする
- もしセル(i行目の4列目)が0よりも小さかったら(マイナス)
- セル(i行目の4列目)の文字色を色コード3にする(赤色)
- そうでなかったら(大きかったら)
- セル(i行目の4列目)の文字色を色コード1にする(黒色)
- IFステートメント終了
- 繰り返す(200行目まで)


このようにVBAコードを書くと、セルD2がマイナスなら赤文字、次にセルD3をチェック、次にセルD4をチェックと繰り返し200行目(セルD200)まで繰り返しチェックしてくれます。
完成したVBAコード
下記が1,2を組み合わせて完成したコードを、ThisWorkbookに書いています。
Private Sub Workbook_Open()
Range(“A2:C200”).Sort Key1:=Range(“C3”), Order1:=xlAscending
For i = 2 To 200
If Cells(i, 4) <= 0 Then
Cells(i, 4).Font.ColorIndex = 3
Else
Cells(i, 4).Font.ColorIndex = 1
End If
Next i
End Sub



いかがでしたか?そんなに難しくなかったでしょ。
VBAコードは自由にコピペして、自分なりにアレンジして使ってもらって構いませんよ。
関連記事
-
エクセルVBAで氏名・名前を姓と名で自動的に分割する簡単な方法
エクセルで表などを作成していると、並べ替えや振り分けなどのデータ処理が面倒だと思ったことはありませんか? データ処理に手間をかけていると仕事の作業効率が悪くな… -
エクセル関数で生年月日から現在の年齢を自動表示させる方法
エクセルの顧客リストや住所録などで生年月日は記載されているけど、年齢までない場合にわざわざ計算するの面倒だと思った事ありませんか? そこで、今日現在の日付を自… -
エクセルVBA色見本(ColorIndex・RGB・16進数)
【色見本(ColorIndex一覧)】 エクセルのワークシート上での文字やセルの背景色、ユーザーフォームのラベルなど各パーツの文字色・背景色に指定できる色見本です。 IF… -
VLOOKUPをVBAラベルを活用してデータ検索・修正をする方法
【ラベル(Label)にVBAコードを記述する】 ボウリング成績表でも使っているユーザーフォームに配置した文字を表示するための「ラベル(Label)」にも、実はVBAコードを… -
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
エクセルシートの保護したらマクロエラーになった時のVBA対処法
エクセルで様々な計算式などが入っている表を作った時に、誤って計算式などを消されないようにシートの保護設定をしたら、マクロエラーになったことありませんか? 原因… -
VBAで1クリックで上書き保存してエクセルファイルを閉じる方法
Excelを使っていて作業が終わったら、上書き保存ボタンを押してファイルを閉じるのが面倒だと思ったことありませんか? たった1クリック1秒でできたら作業効率がアップ… -
エクセルで昭和・平成・令和を西暦に変換するフォームを作成方法
昭和●●年って西暦で何年?調べるの結構面倒だと思ったことありませんか? 令和の時代になり和暦を使わずに西暦を基本に使うようになっていますが、簡単に変換できるフォ… -
エクセルの時刻表示を0:00ではなく24:00にする方法
スケジュールやシフト管理でエクセルで出勤時間や退勤時間などでは時刻をセルに入力しますが、24:00と入力したのに自動的に0:00と表示が変わってしまって、勤務時間の計…
紅葉スポット
-
フリーきっぷで行く12月が見頃の関東近郊の紅葉スポット
渋滞避けて電車とバスでお得なフリーパスや1日乗車券を使って、のんびり紅葉を見に行きませんか? 温暖化の影響で12月上旬でも関東南部では紅葉を見られる場所がまだま… -
縁起だるま発祥の少林山達磨寺境内の真っ赤に染まる紅葉景色へ
【紅葉見頃】11月下旬~12月上旬 高崎市内循環バス「ぐるりん」バスのフリーエリア内にあるので、縁起だるま発祥の少林山達磨寺へ紅葉の時期になったら訪れてみてはい… -
茨城県内の11月に見頃を迎えるおススメ紅葉スポット11選
【茨城県内の人気紅葉スポット】 関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でもいろは坂は大渋滞なのに休日ともなると日光駅周辺… -
日光穴場!中禅寺湖展望台へ紅葉の中禅寺湖からバスで滞在時間30分
【紅葉見頃】10月中旬~11月上旬 紅葉の見頃となる10月中旬~11月上旬になると、いろは坂から延々華厳の滝や竜頭の滝までとにかく大渋滞して混雑が当たり前ですが、い… -
北関東トップクラスの日本庭園がある徳明園の標高差による紅葉絶景へ
【紅葉見頃】11月中旬~12月上旬 高崎市内循環バス「ぐるりん」バスのフリーエリア内のあるので、電車とバスを利用して気軽に訪れることができ、北関東一ともいわれる… -
「乙女の湖」鎌北湖畔の湖面反射が美しい紅葉絶景へ東毛呂駅からバス
【紅葉見頃】 飯能市の北にある入間郡毛呂山町の山中にある鎌北湖は、毛呂山町ホームページによると昭和10年に完成した農業用貯水池として作られた人工湖で、周囲2㎞…