特殊文字を除く数字のみの部品番号の識別(Microsoft Excel)
クリスには、部品番号を含むセルが多数あります。これらのセルには、数字または文字を任意の組み合わせで含めることができます。また、ダッシュ、スラッシュ、スペースなどの特殊文字を含めることもできます。
Chrisは、特殊文字を考慮せずに、セルに数字のみが含まれているかどうかを識別する方法を必要としています。したがって、123-45を含むセルは数字のみを含むように表示されますが、123AB-45は含まれません。
特定のセルに許容文字と数字のみが含まれているかどうかを判断する最も簡単な方法は、数字以外の許容文字を削除して、結果の値が数値かどうかを確認する数式を使用することです。次のすべての式は、トリックを非常にうまく行うことができます:
=IF(IFERROR(INT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1,"-", ""),"/", "")," ", "")),FALSE), TRUE, FALSE) =OR(ISNUMBER(SUBSTITUTE(A1,"-","")+0),ISNUMBER(SUBSTITUTE(A1,"/","")+0),ISNUMBER(SUBSTITUTE(A1," ","")+0)) =ISNUMBER(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(A1," ",""),"/",""),"-","")*1)
単純なマクロを使用して、セルに数字と許可されている文字のみが含まれているかどうかを確認することもできます。このようなマクロにアプローチする方法はいくつもありますが、これはかなり簡単な方法です。
Function DigitsOnly(sRaw As String) As Boolean Dim X As Integer Const sAllowed As String = "0123456789 -/" Application.Volatile For X = 1 To Len(sRaw) If InStr(sAllowed, Mid(sRaw, X, 1)) = 0 Then Exit For Next X DigitsOnly = False If X > Len(sRaw) Then DigitsOnly = True End Function
マクロは、渡されたものをすべて調べ、文字列内の各文字を許可された文字のリスト(定数sAllowed内)と比較します。
許可されていない文字が検出された場合、ループは早期に終了し、False値が返されます。したがって、A1のセルを評価する場合は、マクロで次を使用できます。
=DigitsOnly(A1)
これらはTrue値またはFalse値のいずれかを返すため、これらのアプローチ(数式またはユーザー定義関数)のいずれかを条件付き書式と組み合わせて使用して、部品番号の書式を変更できます。
注:
このページ(または_ExcelTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。
_ExcelTips_は、費用効果の高いMicrosoftExcelトレーニングのソースです。
このヒント(12654)は、Microsoft Excel 2007、2010、2013、2016、2019、およびOffice365のExcelに適用されます。