小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか?
このエクセルによる商品管理でリストの中にある期限切れ商品が気づかずに放置されて困ったことありませんか?
エクセルファイルを開いたら自動的に通知させれば、簡単に解決しますよ!
方法は簡単で、エクセル関数とエクセル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色見本(ColorIndex・RGB・16進数)
色見本(ColorIndex一覧) エクセルのワークシート上での文字やセルの背景色、ユーザーフォームのラベルなど各パーツの文字色・背景色に指定できる色見本です。 IF関数… -
エクセル関数
エクセル関数とVBAで和暦西暦対応カレンダー作成
エクセル関数を基本として作成し、ユーザーフォームで日付選択ができるようにすることで複雑なマクロが分からなくても、自由にカスタマイズして自分のエクセルに組み込… -
文字色・背景色
条件に一致したセルを繰り返し探してVBAで文字色を変える方法
表の中で特定の値を目立たせるために色を変更したいと思った事ありませんか? Excel-VBAを使えば、一瞬で見つけ出して目立つように色を変更することができるFont.ColorI… -
コマンドボタン
コマンドボタンの色をクリックするたびに黒色と赤色を入れ替える方法
ユーザーフォームに配置したコマンドボタンの文字色を条件に応じて変更したいと思いませんか? Excel-VBAのForeColorプロパティとStaticステートメントを使うことで、コ… -
日付・時刻関数
今日の日付を取得して指定したセルに表示させるエクセル関数
エクセルで今日の日付をセルに入力するのに、わざわざカレンダーを見て手入力すする作業が面倒だと思ったことはありませんか? こんな無駄な作業をしている時間があった… -
データの操作
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ… -
文字色・背景色
エクセルVBAで条件に一致する複数セルを見つけて背景色の変更方法
表の中で特定の値を目立たせるためにセルの背景色を変更したいと思った事ありませんか? Excel-VBAを使えば、一瞬で見つけ出して目立つように色を変更することができるF… -
データの操作
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
データの操作
エクセルVBAでシートの移動と同時に表のデータの並べ替えをする
成績表やデータ表などに付き物の並べ替え作業って地味に面倒だと思ったことありませんか? 優先順位をつけて並べ替える時に、同時にエクセルシートも切替出来たら作業が…
紅葉スポット
-
全長3㎞ミューズパークいちょう並木へ西武秩父駅からバスで行く
西武秩父駅や秩父駅からバスでも行くことができる秩父のテーマパークで、南口から北口までの約3㎞もの長さにイチョウの木が両サイドに植えられていて、紅葉の時期になる… -
乗り鉄必見の紅葉列車でわたらせ渓谷鉄道車窓の紅葉景色へ
【紅葉見頃】11月上旬~11月下旬 旧国鉄・足尾線を引き継いだわたらせ渓谷鉄道は、渡良瀬川沿いを走るローカル線で渓谷沿いの紅葉がとても綺麗に見ることができるので… -
「乙女の湖」鎌北湖畔の湖面反射が美しい紅葉絶景へ東毛呂駅からバス
飯能市の北にある入間郡毛呂山町の山中にある鎌北湖は、毛呂山町ホームページによると昭和10年に完成した農業用貯水池として作られた人工湖で、周囲2㎞の小さな湖です。… -
お得なきっぷで電車とバスで行ける関東の紅葉人気スポット
関東長野県群馬県栃木県千葉県埼玉県茨城県静岡県 関東エリアの人気紅葉スポット 関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でも… -
嵐山渓谷の黄金色ススキと紅葉のコラボが埼玉県代表の景勝地へ
埼玉県を代表する景勝地の嵐山渓谷は秩父から流れる槻川沿いに独特の地形からなり、嵐山町観光サイトには下記のように書かれています。 日本で初めての林学博士・本多静… -
日光穴場!中禅寺湖展望台へ紅葉の中禅寺湖からバスで滞在時間30分
【紅葉見頃】10月中旬~11月上旬 紅葉の見頃となる10月中旬~11月上旬になると、いろは坂から延々華厳の滝や竜頭の滝までとにかく大渋滞して混雑が当たり前ですが、い…