外出自粛中でも楽しく過ごす!QAまとめ>>

アルアベットを用いたロット番号からエクセル関数を用いて”日付データ”に変換は可能でしょうか?


R・・・2015
S・・・2016
T・・・2017


A・・・1月
B・・・2月
C・・・3月
D・・・4月
・・・

日(10の桁)
A・・・10日
B・・・20日
C・・・30日
X・・・0日

日(1の桁)
A・・・1日
B・・・2日
C・・・3日
D・・・4日
E・・・5日

例えば、ロット番号TGBGは、2017/7/27となります。

一発で日付データに出来る関数はありますでしょうか?

よろしくお願いします。

A 回答 (2件)

L1:P26 ⇒ table


B1: =MID($A1,COLUMN(A1),1)
F1: =VLOOKUP(B1,table,COLUMN(B1),FALSE)
J1: =(F1&"/"&G1&"/"&(H1+I1))*1
「ロット番号からエクセル関数を用いて日付デ」の回答画像2
    • good
    • 0

関数でも出来ない事はありませんがとても長くなりそうなのでマクロ(VBA)でユーザー関数を作成しました。

以下を標準モジュールへ書き込んで下さい。
'--------------------------------------------------------------------------------
Function LNo2Date(ロット番号 As String) As Date
Dim 年月日 As String
Dim 桁 As Integer
Dim 文字(4) As Integer
If Len(ロット番号) = 4 Then
For 桁 = 1 To 4
文字(桁) = Asc(Mid(ロット番号, 桁, 1))
Next
Select Case 文字(1)
Case Is < 65 '< A
LNo2Date = CVErr(xlErrValue)
Case Is > 90 '> Z
LNo2Date = CVErr(xlErrValue)
Case Else
年月日 = CStr(文字(1) + 1933) & "/"
End Select
Select Case 文字(2)
Case Is < 65 '< A
LNo2Date = CVErr(xlErrValue)
Case Is > 76 '> L
LNo2Date = CVErr(xlErrValue)
Case Else
年月日 = 年月日 & Format(文字(2) - 64, "00") & "/"
End Select
Select Case 文字(3)
Case 88 'X
年月日 = 年月日 & "0"
Case Is < 65 '< A
LNo2Date = CVErr(xlErrValue)
Case Is > 67 '> C
LNo2Date = CVErr(xlErrValue)
Case Else
年月日 = 年月日 & CStr(文字(3) - 64)
End Select
Select Case 文字(4)
Case 88 'X
年月日 = 年月日 & "0"
Case Is < 65 '< A
LNo2Date = CVErr(xlErrValue)
Case Is > 73 '> I
LNo2Date = CVErr(xlErrValue)
Case Else
年月日 = 年月日 & CStr(文字(4) - 64)
End Select
Else
LNo2Date = CVErr(xlErrValue)
End If
If LNo2Date = 0 Then LNo2Date = CDate(年月日)
End Function
'--------------------------------------------------------------------------------

※ 使い方ですが通常の関数と同じで、例えば A1セルに「TGBG」とあったならば「=LNo2Date(A1)」とします。もちろん関数を入れるセルの書式は日付型の物にしてください。シリアル値なので書式が標準だと「42943」と表示されます。
※「年」は A~Z (1998~2023) が使えるように拡張しています。
※「日(1の桁)」にも X が使えるようにしています。
※ 対象外の文字が有る等規定外の物は「#VALUE!」になります
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aと関連する良く見られている質問

QエクセルのIF関数で、文字が入力されていたならば~

エクセルのIF関数で文字が入力されていたならば~、という論理式を組み立てたいと思っています。

=IF(A1="『どんな文字でも』","",+B1-C1)

A1セルに『どんな文字でも』入っていたならば、空白に。
文字が入っていなければB1セルからC1セルを引く、という状態です。

この『どんな文字でも』の部分に何を入れればいいのか教えてください。

またIF関数以外でも同様のことができれば構いません。

宜しくお願いします。

Aベストアンサー

=IF(ISTEXT(A1),"",B1-C1)

でどうでしょうか?

Q工業製品の抜き取り検査のN数の決め方

実際に今起きている話ですが、例えばあるロットの一部を1箇所切り出して測定し、規格10以下に対して9であったため合格として納入したところ、客先で同じロットの別の場所からサンプリングし、検査した所、11であったらしく、このロットはNG扱いとなってしまいました。流出防止策として、安易な考えで”ロットの一部を1箇所切り出して測定し、8以上の場合は再サンプリングして判定する”としましたが、統計的に、再度サンプリングするための閾値の決め方やN数の決め方はどのようにすべきでしょうか?検査の工数増をできるだけ避けたいので、むやみやたらとN増しは行いたくなく、かといって仮に数十箇所測定して1箇所だけ規格外があっても、工場としては納品したいのが本音です。工場、客先双方が納得できる落としどころがあればよいのですが。

Aベストアンサー

今回の質問の前提条件を確認したいです.

抜き取り検査が許されているということは,普通は工程能力が十分あることが
確認されていると思います.そうでなければ抜き取り検査ではなく,全数検査する必要が
あるはずです.

今回の結果は「11」とは,規格上限に対して外れていたということでしょうか.
それとも規格上限には余裕があった上で,取り決めた数値に対して外れていたということ
でしょうか.(そうでなければ品質管理としては理屈がなっていないですが)

先ずはこの製品の工程能力がどんなものかそれがスタートです.



>仮に数十箇所測定して1箇所だけ規格外があっても、工場としては納品したいのが本音です

気持ち的には分かるところもありますが,こんなことを了解していては品質管理が分かっていない,
もしくは無視していることにしかならないと思いますが.


人気Q&Aランキング