【VBA】InStr関数で品質管理を効率化:不良品コードから原因を特定

VBAのInStr関数で品質管理を効率化:不良品コードから原因を特定

品質管理における不良品の原因特定は、迅速かつ正確に行う必要があり、その効率化は業務改善に直結します。本記事では、VBAのInStr関数を活用して、不良品コードに含まれる特定のキーワードを検出し、不良原因を自動的に特定する方法を解説します。

InStr関数の基本

InStr関数は、文字列中に指定された文字列が最初に現れる位置を返す関数です。文字列が見つからない場合は0を返します。構文は以下の通りです。

InStr([開始位置,] 検索対象文字列, 検索文字列[, 比較モード])

  • 開始位置: 検索を開始する位置(省略可能)
  • 検索対象文字列: 検索される文字列
  • 検索文字列: 検索する文字列
  • 比較モード: 文字列比較のモード(省略可能)

品質管理におけるコード例

例1:不良品コードから原因を特定

不良品コードに「SCRATCH」が含まれていれば「傷」、 「BEND」が含まれていれば「曲がり」と判定します。


Function GetDefectReason(defectCode As String) As String
Dim reason As String
reason = ""
If InStr(1, defectCode, "SCRATCH", vbTextCompare) > 0 Then
reason = "傷"
ElseIf InStr(1, defectCode, "BEND", vbTextCompare) > 0 Then
reason = "曲がり"
Else
reason = "原因不明"
End If
GetDefectReason = reason
End Function

使用例:


Sub TestGetDefectReason()
Debug.Print GetDefectReason("ABC-SCRATCH-123") ' 結果:傷
Debug.Print GetDefectReason("XYZ-BEND-456") ' 結果:曲がり
Debug.Print GetDefectReason("UVW-789") ' 結果:原因不明
End Sub

例2:複数のキーワードで詳細な原因を特定

不良品コードに複数のキーワードを組み合わせて、より詳細な原因を特定します。


Function GetDetailedDefectReason(defectCode As String) As String
Dim reason As String
reason = ""
If InStr(1, defectCode, "SCRATCH", vbTextCompare) > 0 Then
If InStr(1, defectCode, "DEEP", vbTextCompare) > 0 Then
reason = "深い傷"
Else
reason = "表面的な傷"
End If
ElseIf InStr(1, defectCode, "BEND", vbTextCompare) > 0 Then
If InStr(1, defectCode, "ANGLE", vbTextCompare) > 0 Then
reason = "角度不良"
Else
reason = "曲がり"
End If
Else
reason = "原因不明"
End If
GetDetailedDefectReason = reason
End Function

使用例:


Sub TestGetDetailedDefectReason()
Debug.Print GetDetailedDefectReason("ABC-SCRATCH-DEEP-123") ' 結果:深い傷
Debug.Print GetDetailedDefectReason("XYZ-SCRATCH-456") ' 結果:表面的な傷
Debug.Print GetDetailedDefectReason("UVW-BEND-ANGLE-789") ' 結果:角度不良
Debug.Print GetDetailedDefectReason("GHI-BEND-012") ' 結果:曲がり
Debug.Print GetDetailedDefectReason("JKL-345") ' 結果:原因不明
End Sub

実際の業務での応用例

  • 不良品管理データベースとの連携: 不良品コードをデータベースに登録する際に、InStr関数で原因を自動判定し、データベースに記録します。
  • 品質管理レポートの自動作成: 不良原因ごとの発生件数を集計し、レポートを自動作成します。
  • 異常検知システム: 特定の原因が多発した場合に、アラートを発するように設定します。

システム設計例

品質管理システムにおいて、不良品情報を入力するフォームにVBAを組み込み、InStr関数を用いて不良原因を自動的に判別し、データベースに格納する仕組みを構築します。これにより、手入力によるミスの削減、データ入力時間の短縮、リアルタイムな原因分析が可能になります。

トラブルシューティング

  • 検索文字列が見つからない: InStr関数は大文字小文字を区別します。vbTextCompareオプションを使用することで、大文字小文字を区別せずに検索できます。
  • 誤った原因が特定される: キーワードの優先順位や組み合わせを適切に設定することで、誤判定を防ぎます。

まとめ

VBAのInStr関数を活用することで、品質管理における不良原因の特定を効率化し、迅速な対応を可能にします。不良品管理データベースとの連携やレポートの自動作成など、様々な応用が可能です。品質管理業務の効率化にぜひInStr関数をご活用ください。