小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか?
このエクセルによる商品管理でリストの中にある期限切れ商品が気づかずに放置されて困ったことありませんか?
エクセルファイルを開いたら自動的に通知させれば、簡単に解決しますよ!
方法は簡単で、エクセル関数とエクセル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でラベルの色を変える方法
コピペOK!ユーザーフォームに配置しているラベル(Label)の色を初期設定の黒色ではなくて、目立つように赤色に変更したいと思ったことありませんか? ForeColorとRGB… -
セルの操作
エクセルVBAで複数セルを一括で結合・解除を繰り返し処理する方法
エクセルの表を印刷するには見栄えの為にセルの結合を行ったら、並べ替えをするとエラーになって困ったことありませんか? Mergeメソッドを書き加えれば、自動的にセル… -
コマンドボタン
コマンドボタンの色をクリックするたびに黒色と赤色を入れ替える方法
ユーザーフォームに配置したコマンドボタンの文字色を条件に応じて変更したいと思いませんか? Excel-VBAのForeColorプロパティとStaticステートメントを使うことで、コ… -
データの操作
エクセルVBAで氏名・名前を姓と名で自動的に分割する簡単な方法
エクセルで表などを作成していると、並べ替えや振り分けなどのデータ処理が面倒だと思ったことはありませんか? データ処理に手間をかけていると仕事の作業効率が悪くな… -
データの操作
エクセル関数とVBAを組み合わせて商品期限切れ通知を表示する方法
小さな会社や個人では、アプリや専用ソフトを使って商品管理とかはコストが見合わず、エクセルで商品管理していませんか? このエクセルによる商品管理でリストの中にあ… -
エクセル関数
エクセル関数で生年月日から現在の年齢を自動表示させる方法
エクセルの顧客リストや住所録などで生年月日は記載されているけど、年齢までない場合にわざわざ計算するの面倒だと思った事ありませんか? そこで、今日現在の日付を自… -
文字色・背景色
エクセルVBA色見本(ColorIndex・RGB・16進数)
【色見本(ColorIndex一覧)】 エクセルのワークシート上での文字やセルの背景色、ユーザーフォームのラベルなど各パーツの文字色・背景色に指定できる色見本です。 IF… -
データの操作
Key4は使えないけど4つ以上項目の並べ替えをVBAコードでやる方法
エクセルVBAを使ってデータの並べ替えを行うのにSortメソッドを使うのですが、4つ目の条件までの並べ替えををVBAコードを使ってやってみたら、エラーになった経験あり… -
文字色・背景色
エクセルVBAで条件に一致する複数セルを見つけて背景色の変更方法
表の中で特定の値を目立たせるためにセルの背景色を変更したいと思った事ありませんか? Excel-VBAを使えば、一瞬で見つけ出して目立つように色を変更することができるF…
紅葉スポット
-
日光駅から避暑地で紅葉名所の日光三名瀑の霧降の滝へバスで滞在時間30分
【紅葉見頃】10月下旬~11月上旬 日光三名瀑「華厳の滝」「裏見の滝」「霧降の滝」といわれ、年間を通じて観光に訪れる人が多い近畿スポットで、夏は避暑地として秋は… -
伊香保温泉365段の石段の先に紅葉ライトアップされた河鹿橋絶景へ
石段と温泉街で古くから観光客が多く訪れる伊香保温泉には、群馬県の紅葉スポット人気1位・全国でもトップクラスの紅葉スポットがあります。 石段をゆっくりと登ってい… -
十勝岳望岳台へ活火山の溶岩と山頂部の雪化粧と紅葉の三段紅葉絶景
北海道のほぼ真ん中に位置して旭岳・美瑛藤・上富良野岳などが一望でき、さらに旭川市街や富良野市街までも見ることができる絶景スポットです。 標高930mの十勝岳は9月… -
四方木ふれあい館から四方木不動滝の紅葉絶景へ安房天津駅からバス
県道から山道に入り林の中にある秘境で、水量によって左右に分かれることから夫婦滝とも呼ばれています。 山深い大自然の中を散策していく四方木不動滝と紅葉がひそかな… -
フリーパスで10月の茨城紅葉スポットへ
【茨城県内の人気紅葉スポット】 関東地方で紅葉名所といえばなんといっても日光ですが、紅葉シーズンになると平日でもいろは坂は大渋滞なのに休日ともなると日光駅周辺… -
茨城県大子町の永源寺へ常陸大子駅から徒歩圏内の紅葉スポットへ
【紅葉見頃】 茨城県の大子町に紅葉名所の「永源寺」があり、境内を埋め尽くすほどのもみじの木があることから「もみじ寺」と呼ばれています。 近くには名瀑で有名な…