특정 패턴을 따르지 않는 값 식별 (Microsoft Excel)
Vishwajeet에는 열에 일련의 부품 번호가 있습니다. 이러한 부품 번호는 특정 패턴 (숫자 2 개, 글자 5 개, 숫자 4 개, 글자 1 개, 숫자 1 개, 글자 1 개, 숫자 1 개)을 따라야합니다. 그는 열의 어떤 셀이이 패턴과 다른지 쉽게 식별 할 수있는 방법이 있는지 궁금합니다.
데이터의 실제 특성에 따라이 작업에 접근 할 수있는 여러 가지 방법이 있습니다. 예를 들어 도우미 열에서 다음과 같은 수식을 사용할 수 있습니다.
=AND(LEN(A1)=15,ISNUMBER(--LEFT(A1,2)),ISTEXT(MID(A1,3,5)), ISNUMBER(--MID(A1,8,4)),ISTEXT(MID(A1,12,1)),ISNUMBER(-- MID(A1,13,1)),ISTEXT(MID(A1,14,1)),ISNUMBER(--RIGHT(A1,1)))
매우 긴 수식은 패턴이 올바른지 여부에 따라 True 또는 False를 반환합니다. 그러나 공식에 문제가 있습니다. 문자 대신 사용되는 기호 (예 : 달러 기호 또는 별표)는 감지하지 않으며 숫자 대신 사용 된 일부 기호 (예 : 마침표 또는 퍼센트 기호)는 감지하지 않습니다. 그 이유는 ISTEXT 함수는 기호를 텍스트로 간주하고 ISNUMBER 함수는 “1.23”과 같은 것을 숫자로 구문 분석하기 때문입니다.
이러한 부적절한 기호 사용을 포착하려면 다음 공식을 사용할 수 있습니다.
=AND(LEN(A1)=15,ISNUMBER(SUM(SEARCH(MID(A1,{1,2,8,9,10,11, 13,15},1),"0123456789"),SEARCH(MID(A1,{3,4,5,6,7,12,14},1), "ABCDEFGHIJKLMNOPQRSTUVWXYZ"))))
이것은 SEARCH 기능을 사용하여 부품 번호의 모든 문자를 효과적으로 확인하기 때문에 작동합니다. 수식을 배열 수식 (Ctrl + Shift + Enter로 종료)으로 입력해야한다고 생각할 수 있지만 흥미롭게도 정규 수식과 배열 수식으로 사용할 때 결과에 차이가 없습니다.
부품 번호 패턴을 꽤 많이 확인해야하는 경우 매크로를 사용하여 확인하는 것이 좋습니다. 다음은 Like 연산자를 사용하여 패턴이 따르는 지 확인하는 간단한 사용자 정의 함수입니다.
Function CheckPattern(rCell As Range) As Boolean Dim sPattern As String sPattern = "##[A-Z][A-Z][A-Z][A-Z][A-Z]####[A-Z]#[A-Z]#" CheckPattern = rCell.Value Like sPattern End Function
sPattern 변수 사용에 유의하십시오. 이것은 Like 연산자가 비교를 수행 할 때 따라야하는 패턴입니다. # 기호가 나타날 때마다 모든 숫자가이 위치에있을 수 있음을 의미합니다. [A-Z]가 나타날 때마다 위치가 A에서 Z까지의 범위에서 한 문자가 될 수 있음을 의미합니다.
Microsoft 사이트 중 하나에서 다음 페이지를 방문하여 패턴에 포함 할 수있는 문자의 의미에 대해 자세히 알아볼 수 있습니다.
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/like-operator
이 사이트는 실제로 VBA가 아닌 Visual Basic 용이지만이 특정 정보 페이지는 VBA에서 잘 작동합니다.
CheckPattern 사용자 정의 함수를 사용하려면 워크 시트의 모든 셀에 다음을 배치 할 수 있습니다.
=CheckPattern(A1)
이 팁에 제시된 다른 모든 공식과 마찬가지로 부품 번호가 A1 셀에 있다고 가정합니다.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (3391)은 Microsoft Excel 2007, 2010, 2013 및 2016에 적용됩니다.