OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

エクセルでロットの更新

  • すぐに回答を!
  • 質問No.124270
  • 閲覧数106
  • ありがとう数3
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 28% (24/84)

専門家の人にお尋ねします。
商品が2001年8月25日に作った物が有るとします。
その時のLOTは1825XXXXで、LOT内容は左から1が(2001年)8が(8月)25が(25日)とします。後の4桁は連番です。10月だとX 11月だとY 12月だとZになる決まりがあります。
結果判断の内容は指定した月日以内をこえると警告(色を付ける)の指定です。
例えばセルA1に警告月4と入力し A5にロットを入力しまするとOKならそのまま、NGなら赤色になります。ただネックなのがXYZでどうすれば月の判断が出来るのかわかりません。VBでかまわないので、解決する方法は無いでしょうか?
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

質問者が選んだベストアンサー

  • 回答No.4
レベル13

ベストアンサー率 68% (791/1163)

>1.空白又A5のセルを削除した場合エラ―出る。 
   対応しました。考慮不足でした。
>2.A5だけでは無く複数のセル(A5~A10)は可能?
   対応しました。範囲は変更できるよう分かりやすく書いたつもりです。
>3.シート名を指定
   先ほどのコードは、この機能を使いたいシートのコードウインドウに貼り付ければいいんですが
   たくさんあると大変?下記はシート名を指定できるようにしてあります。ThisWorkBookに貼り付けます。

<ThisWorkBookのコードウインドウに貼り付けます>
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
  '例 Sheet1かSheet2でなければ何もしない
  If Not (Sh.Name = "Sheet1" Or Sh.Name = "Sheet2") Then Exit Sub
  '単一のセルの変更のみ対象
  If Not (Target.Rows.Count = 1 And Target.Columns.Count = 1) Then Exit Sub
  '対象セルを消去した場合の対応
  If Target = "" Then Target.Font.ColorIndex = xlAutomatic: Exit Sub
  'A5からA10に含まれる場合のみ処理する
  If Union(Range("A5:A10"), Target).Address <> Range("A5:A10").Address Then Exit Sub

  Dim LOT As String 'LOT
  Dim LOTnen As Integer 'LOTの年
  Dim LOTtuki As Integer 'LOTの月
  Dim keikokuNen As Integer '警告年
  Dim keikokuTuki As Integer '警告月

  On Error GoTo ErrorHandler

  LOT = Right("00000000" & Target, 8) 'セルが数値形式の場合の対応
  LOTnen = 2000 + Left(LOT, 1)
  LOTtuki = InStr("123456789XYZ", Mid(LOT, 2, 1))
  keikokuNen = Year(Now())
  keikokuTuki = WorksheetFunction.Substitute(Range("A1"), "警告月", "")
  '判定
  If keikokuNen * 12 + keikokuTuki < LOTnen * 12 + LOTtuki Then
    Target.Font.ColorIndex = 3 '赤
  Else
    Target.Font.ColorIndex = xlAutomatic '黒
  End If

  Exit Sub
ErrorHandler:
  MsgBox "エラーです"
End Sub
お礼コメント
Mizumoto-Y

お礼率 28% (24/84)

アドバイス有難う御座いました。
期限を変更にした場合は更新が出来なかったは残念ですが
とても良く作ってあり感謝しております。
ポイント入れておきます。
投稿日時 - 2001-08-26 10:45:55
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1
レベル11

ベストアンサー率 21% (66/302)

A5の「条件付き書式」はどのようなものでしょうか? 別に月の判断をしなくても、 A5に「条件付き書式」で(数式が)=RIGHT(A1,1)=MID(A5,2,1)とし書式を(パターン)赤を選べばOKじゃないんでしょうか? ...続きを読む
A5の「条件付き書式」はどのようなものでしょうか?
別に月の判断をしなくても、
A5に「条件付き書式」で(数式が)=RIGHT(A1,1)=MID(A5,2,1)とし書式を(パターン)赤を選べばOKじゃないんでしょうか?
補足コメント
Mizumoto-Y

お礼率 28% (24/84)

2002年の場合はどうするのでしょうか?
投稿日時 - 2001-08-26 00:37:18
お礼コメント
Mizumoto-Y

お礼率 28% (24/84)

アドバイス有難う御座います。
投稿日時 - 2001-08-26 00:53:15

  • 回答No.2
レベル13

ベストアンサー率 68% (791/1163)

専門家ではありませんがよろしいでしょうか。 質問から、対象セルはA5のみとしています。赤色は文字の色と解釈しました。 『指定した月日以内をこえる』とありますが、警告月を超えたら赤にしています。日の指定が無い? また、警告年はどのように判定するのでしょう。警告月を1月等にすると、年が重要になってきます。今はNow()を使っています。 警告月が10月の場合は、『警告月10』と入力するとしました。 ...続きを読む
専門家ではありませんがよろしいでしょうか。

質問から、対象セルはA5のみとしています。赤色は文字の色と解釈しました。
『指定した月日以内をこえる』とありますが、警告月を超えたら赤にしています。日の指定が無い?
また、警告年はどのように判定するのでしょう。警告月を1月等にすると、年が重要になってきます。今はNow()を使っています。
警告月が10月の場合は、『警告月10』と入力するとしました。

Private Sub Worksheet_Change(ByVal Target As Range)
  If Target.Address <> "$A$5" Then 'A5以外なら何もしない
    Exit Sub
  End If

  Dim LOT As String 'LOT
  Dim LOTnen As Integer 'LOTの年
  Dim LOTtuki As Integer 'LOTの月
  Dim keikokuNen As Integer '警告年
  Dim keikokuTuki As Integer '警告月

  LOT = Target
  LOTnen = 2000 + Left(LOT, 1)
  LOTtuki = InStr("123456789XYZ", Mid(LOT, 2, 1))
  keikokuNen = Year(Now())
  keikokuTuki = WorksheetFunction.Substitute(Range("A1"), "警告月", "")
  '判定
  If keikokuNen * 12 + keikokuTuki < LOTnen * 12 + LOTtuki Then
    Target.Font.ColorIndex = 3 '赤
  Else
    Target.Font.ColorIndex = xlAutomatic '黒
  End If
End Sub
補足コメント
Mizumoto-Y

お礼率 28% (24/84)

とても良く出来たVBの内容でした。
有難う御座います。
試したのですが3点追記出来ないでしょうか 
1. 空白又A5のセルを削除した場合エラ―出る。 
2. A5だけでは無く複数のセル(A5~A10)は可能?
3. シート名を指定
これが可能であれば、私が思っている内容です。
あともう一歩何卒助けて下さる様お願い申し上げます。
投稿日時 - 2001-08-26 00:08:38
お礼コメント
Mizumoto-Y

お礼率 28% (24/84)

アドバイス有難う御座います。
貴方様を見習って頑張ります。
投稿日時 - 2001-08-26 00:52:30
  • 回答No.3
レベル12

ベストアンサー率 52% (322/612)

こんにちは! 回答では無いのですが! EXCELのバージョンは? 97/95だと1/8/25で平成1年8月25日と判断してしまい 2000だと2001年8月25日と判断する違いがあります したがって97以前を使う可能性があるなら、そのてんの 考慮も必要になります。 >LOT内容は左から1が(2001年) ・2010年はどのようになるのでしょうか?(記号かな?) >結果判断 ...続きを読む
こんにちは!

回答では無いのですが!

EXCELのバージョンは?
97/95だと1/8/25で平成1年8月25日と判断してしまい
2000だと2001年8月25日と判断する違いがあります
したがって97以前を使う可能性があるなら、そのてんの
考慮も必要になります。

>LOT内容は左から1が(2001年)
・2010年はどのようになるのでしょうか?(記号かな?)

>結果判断の内容は指定した月日以内をこえると
>警告(色を付ける)の指定です。
>例えばセルA1に警告月4と入力し
・月で判定? 月日で判定? どちらでしょうか?

いずれにしろ条件付き書式の条件としては
[数式が]でロット番号を年月日に加工することになる
とかな?
もしくは AND(年>=○,月>=△,日>=□)で分解した数値を
比較させる手もあるでしょう!

参考としてロット番号を200X年を基準として年月日に加工する式のみ記載させて頂きます。
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(200&REPLACE(REPLACE(LEFT(A5,4),3,,"/"),2,,"/"),"X",10),"Y",11),"Z",12)*1
補足コメント
Mizumoto-Y

お礼率 28% (24/84)

20010年は0になります。又、試したのですが、数字しか表示されませんでした。
投稿日時 - 2001-08-26 00:06:12
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
このやり方知ってる!同じこと困ったことある。経験を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ