2016-06-20 1 views
1

나는 나를 달성 할 수 엑셀 문서에 대한 코드를 만들려고 노력하고 다음 (이름 관리자에 의해 정의 된대로)전체 단어 만 일치시켜 셀 (셀이 아님)의 단어를 강조 표시 하시겠습니까?

  • 가에 대한 단어의 나열 세트
  • 검색을 워크 시트 검색 대소 문자 구분, 구두점 뒤에 오는 단어 등
  • 나열된 단어를 셀 자체가 아닌 셀 내에서 새 글꼴 색 (이상 적으로는 강조 표시하고 싶지만 Excel에서 허용하는지 잘 모르겠습니다).

현재 아래에 나열된 코드는 셀 노란색을 강조 표시하고 나열된 단어를 빨간색으로 바꾸고 있지만 단어 내의 일치 항목과 일치합니다. 어떻게하면 전체 단어와 일치시킬 수 있습니까?

Sub ColorCertainWords() 
     Dim Z As Long, Position As Long, Words As Variant, Cell As Range 
     Words = Range("LIST") 'LIST defined by name manager as list of words that cannot be used 
     For Each Cell In Sheets("Sheet1").Range("A1:AA6000") 'Range of cells to be checked 
     If Len(Cell.Value) Then 
      For Z = 1 To UBound(Words) 
       Position = InStr(1, Cell.Value, Words(Z, 1), vbTextCompare) 
       Do While Position 
       Cell.Characters(Position, Len(Words(Z, 1))).Font.ColorIndex = 3 'Red 
       Cell.Interior.ColorIndex = 6 ' Yellow 
       Position = InStr(Position + 1, Cell.Value, Words(Z, 1), vbTextCompare) 
       Loop 
      Next 
     End If 
     Next 
     End Sub 
+1

분명히 '위치'는 발견 된 발생의 시작점을 표시하고 'Len (단어 (Z, 1))'은 길이를 나타냅니다. 그래서,'Position' 이전과'Postion + Len (Words (Z, 1)) '뒤에 나오는 문자가 둘 다'(공백)'인지 확인해야합니다. 즉, 두 항목을 모두 검사하는'If' 절을 구현하면 완전한 사건 만 빨간색으로 표시되도록 할 수 있습니다. – Ralph

+0

단어가 문장의 시작 부분, 문장의 끝 부분 등에있는 경우 문제가되지 않습니까? 예를 들어 내가 "개"라는 단어를 찾고 그 셀의 문장이 "내 개를 보았 니?"라고 말하면됩니다. 이 인스턴스에는 dog 뒤에 "?" 문제가되는 (공간)이 아니겠습니까? – Michael

+1

그런 다음 문장 부호가 첫 단어인지 마지막 단어인지 다른 체크를 설정해야합니다. –

답변

0

다음은 계속 진행하는 데 도움이되는 수정 된 코드입니다. 여기

Sub ColorCertainWords() 
    Dim Z As Long, Position As Long, Words As Variant 
    Dim Cell As Range, x As Integer, j As Integer 
    Dim tempWords As Variant 

    Words = Range("LIST") 
    x = 1 
    For Each Cell In Sheets("Sheet6").Range("A1:A6") 'Range of cells to be checked 
     If Len(Cell.Value) Then 
      tempWords = Split(Cell.Value, " ") 'Splitting cell value by space 
      For i = LBound(tempWords) To UBound(tempWords) 'Looping through splitted values 
       j = InStr(x, Cell.Value, " ") + 1 
       For Z = 1 To UBound(Words) 
        If tempWords(i) = Words(Z, 1) Then 'Checking is words are matching 
         For k = 1 To Len(tempWords(i)) 
          Cell.Characters(x, Len(tempWords(i))).Font.ColorIndex = 3 'Red 
          Cell.Interior.ColorIndex = 6 ' Yellow 
         Next 
        End If 
       Next 
       x = j 
      Next 
      x = 1 
     End If 
    Next 
End Sub 

그리고

내가 사용했습니다 그 결과 형식의 테스트 데이터입니다 :

enter image description here

이 도움이 될 경우 알려주세요.