특정 단어 건너 뛰기 (Microsoft Excel)
Terry는 항상 PROPER 워크 시트 함수를 사용하여 워크 시트의 텍스트 대소 문자를 변경합니다. 그는 함수가 특정 단어를 무시하도록 지시하여 대문자로 시작하지 않도록하는 방법이 있는지 궁금합니다. PROPER를 사용한 후 돌아가서 “the”또는 “an”과 같은 단어를 모두 소문자로 변경해야하는 것은 드문 일이 아닙니다. PROPER가 그러한 단어를 자동으로 바꾸는 것을 건너 뛸 수 있다면 큰 도움이 될 것입니다.
이에 접근하는 한 가지 방법은 PROPER 함수와 함께 SUBSTITUTE 워크 시트 함수를 사용하는 것입니다. 예를 들어, “the”와 함께 “The”라는 단어의 인스턴스를 찾으려면 다음을 사용할 수 있습니다.
=SUBSTITUTE(PROPER(A1)," The "," the ")
검색중인 항목과 교체중인 항목의 앞뒤에 공백이 포함되어 있는지 확인하십시오. 이렇게하면 전체 단어 만 수정됩니다. 또한 셀 값의 시작 부분이나 끝 부분에 변경 사항이 없는지 확인합니다.
대체가 필요한 다른 단어를 검색하려면 수식에서 SUBSTITUTE의 인스턴스 수를 늘리면됩니다.
=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(PROPER(A1)," The ", " the ")," An "," an ")," And "," and ")
수정에서 제외하고 싶은 단어가 많은 경우 분명히 약간 어색해질 수 있습니다. 이 경우 매크로를 사용해야합니다. 사용자 정의 함수로 작성된 다음 매크로는 셀의 모든 단어를 PROPER처럼 초기 대문자로 변환하는 데 사용할 수 있지만 정의 된 특정 단어는 소문자 여야합니다.
Function Title(ByVal ref As Range) As String Dim vaArray As Variant Dim c As String Dim i As Integer Dim J As Integer Dim vaLCase As Variant Dim str As String ' Array contains terms that should be lower case vaLCase = Array("a", "an", "and", "in", "is", _ "of", "or", "the", "to", "with") c = StrConv(ref, 3) 'split the words into an array vaArray = Split(c, " ") For i = 2 To UBound(vaArray) For J = LBound(vaLCase) To UBound(vaLCase) ' compare each word in the cell against the ' list of words to remain lowercase. If the ' Upper versions match then replace the ' cell word with the lowercase version. If UCase(vaArray(i)) = UCase(vaLCase(J)) Then vaArray(i) = vaLCase(J) End If Next J Next i ' rebuild the sentence str = "" For i = 1 To UBound(vaArray) str = str & " " & vaArray(i) Next i Title = Trim(str) End Function
매크로를 사용하려면 워크 시트에서 다음을 사용하기 만하면됩니다.
=Title(A1)
이 매크로를 실행하려고 할 때 오류가 발생하면 Excel 97을 사용하고있는 것입니다. Excel 2000까지 분할 기능이 추가되지 않았으므로 Excel 97 사용자에게 오류가 발생합니다. 그렇다면 Split 기능이 수행하는 작업을 에뮬레이트하는 다음 매크로를 추가하십시오.
Function Split(Raw As String, Delim As String) As Variant Dim vAry() As String Dim sTemp As String Dim J As Integer Dim Indx As Integer Indx = 0 sTemp = Raw J = InStr(sTemp, Delim) While J > 0 Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(Left(sTemp, J)) sTemp = Trim(Mid(sTemp, J, Len(sTemp))) J = InStr(sTemp, Delim) Wend Indx = Indx + 1 ReDim Preserve vAry(1 To Indx) vAry(Indx) = Trim(sTemp) Split = vAry() End Function
이 사이트에서 원하는 변환을 수행하기위한 추가 접근 방식을 찾을 수도 있습니다.
http://dmcritchie.mvps.org/excel/proper.htm
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (10559)은 Microsoft Excel 97, 2000, 2002 및 2003에 적용됩니다.
Excel (Excel 2007 이상)의 리본 인터페이스에 대한이 팁의 버전은 여기에서 찾을 수 있습니다.
link : / excelribbon-Making_PROPER_Skip_Certain_Words [Making PROPER Skip 특정 단어]
.