A 열에 많은 제품 코드가있는 워크 시트가 있다고 가정 해 보겠습니다.

이러한 코드는 A4, B12, AD4 등의 형식입니다. 회사 운영 방식이 변경 되었기 때문에 모든 제품 코드를 변경하여 문자와 숫자 사이에 대시가 포함되도록합니다.

이 작업을 수행 할 수있는 몇 가지 방법이 있습니다. 제품 코드의 구조가 일관된 경우 대시를 삽입하는 것은 간단합니다.

예를 들어, 항상 단일 문자 뒤에 숫자가있는 경우 다음과 같은 공식을 사용할 수 있습니다.

=LEFT(A1,1) & "-" & RIGHT(A1,LEN(A1)-1)

데이터가 구조화되지 않을 가능성이 높습니다. 즉, 하나 또는 두 개의 문자 뒤에 최대 3 자리 숫자가 올 수 있습니다. 따라서 A4와 QD284는 모두 유효한 제품 코드가됩니다. 이 경우 솔루션 공식은 좀 더 창의력이 필요합니다.

이를 처리하는 한 가지 방법은 배열 수식을 사용하는 것입니다. 다음 공식을 고려하십시오.

=REPLACE(A1,MATCH(FALSE,ISERROR(1*MID(A1,ROW(INDIRECT("1:100")),1)),0),0,"-")

값이 A1-A10에있는 경우이 수식을 B1에 넣은 다음 열 아래로 복사 할 수 있습니다. 배열 수식이므로 Ctrl + Shift + Enter를 눌러 입력해야합니다. 수식은 셀에서 첫 번째 숫자의 위치를 ​​찾고 그 앞에 대시를 삽입합니다.

예를 들어 셀 A1에 BR27이 포함되어 있다고 가정합니다. 수식의 가장 안쪽 부분 인 INDIRECT ( “1 : 100”)는 텍스트를 1 : 100 범위로 변환합니다. 행 삽입 또는 삭제가 수식에 영향을주지 않도록 사용됩니다. 수식의 다음 부분 인 ROW (INDIRECT ( “1 : 100”))는 기본적으로 1-100 : 1,2,3, …​, 99,100 값의 배열을 만듭니다. 이것은 셀의 각 문자에 대해 작동하는 데 사용됩니다.

다음 부분 인 MID (A1, ROW (INDIRECT ( “1 : 100”)), 1)은 문자열의 각 개별 문자를 참조합니다. 결과적으로 “B”, “R”, “2”및 “7”배열이 생성됩니다. 배열에 1 (공식의 다음 부분) 곱하기

각 개별 문자가 숫자로 변환됩니다. 문자가 숫자가 아닌 경우이 변환은 오류를 생성합니다. 변환중인 문자열 (BR27)의 경우 결과는 #VALUE, #VALUE, 2 및 7입니다.

다음 단계는 곱셈 결과에 ISERROR 함수를 적용하는 것입니다. 이것은 오류를 TRUE로, 비 오류를 FALSE로 변환하여 TRUE, TRUE, FALSE 및 FALSE를 생성합니다. MATCH 함수는 FALSE의 정확한 일치를 위해 TRUE 및 FALSE 값의 배열을 찾습니다. 이 예에서 MATCH 함수는 첫 번째 FALSE 값이 배열의 세 번째 위치에 있으므로 숫자 3을 반환합니다. 이 시점에서 우리는 본질적으로 셀에서 첫 번째 숫자의 위치를 ​​알고 있습니다.

마지막 함수는 REPLACE로, 세 번째 문자부터 시작하여 소스 문자열에 실제로 대시를 삽입하는 데 사용됩니다.

알 수 있듯이 변환을 수행하는 공식은 해독하기가 다소 어려울 수 있습니다. 이러한 경향이있는 경우 사용자 정의 함수를 만드는 것이 더 쉬울 수 있습니다. 다음 매크로는 적절한 위치에 대시가있는 문자열을 반환하는 매크로의 예입니다.

Function DashIn(myText As String)

Dim i As Integer     Dim myCharCode As Integer     Dim myLength As Integer

Application.Volatile     myLength = Len(myText)

For i = 1 To myLength         myCharCode = Asc(Mid(myText, i, 1))

If myCharCode >= 48 And myCharCode <= 57 Then             Exit For         End If     Next i     If i = 1 Or i > myLength Then         DashIn = myText     Else         DashIn = Left(myText, i - 1) & "-" _           & Mid(myText, i, myLength - 1)

End If End Function

매크로는 원래 문자열의 각 문자를 검사하고 첫 번째 숫자를 찾으면 해당 지점에 대시를 삽입합니다. 다음과 같은 방식으로 함수를 사용합니다.

=DashIn(A1)

_ 참고 : _

이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.

link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요].

_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.

이 팁 (10182)은 Microsoft Excel 2007 및 2010에 적용됩니다. 여기에서 Excel의 이전 메뉴 인터페이스에 대한이 팁의 버전을 찾을 수 있습니다.

link : / excel-Inserting_Dashes_between_Letters_and_Numbers [문자와 숫자 사이에 대시 삽입].