2013-10-08 2 views
1

Excel에서 매우 많은 양의 데이터가 있고 "태그"가 포함 된 행을 제거하고 싶습니다. 찾기 옵션을 사용하면 단 하나의 단어/검색 만 할 수 있으며 수백 단어가 있습니다. 그 아마 매크로 또는 인수. 나는 다음과 같은 인수를 시도하지만 단지 1Excel에서 여러 텍스트 찾기

=IF(OR(ISNUMBER(SEARCH({"word1","word2","word3"},A1,B1)))"YES","NO") 

누군가가 PLS 도와 발견했다.

+0

후 , "test", "word3"}, A1))), "예", "아니요") – Santosh

+1

감사합니다. u Santosh가 일해! – user2859137

답변

0

이`= IF (OR (ISNUMBER (SEARCH ({ "단어 1"을 시도 매크로

enter image description here

Option Explicit 

Sub RemoveRowsBasedOnArrayCondition() 
    Dim searchTerms As Variant 
    searchTerms = Array("tag1", "tag2", "tag3") 

    ReDim rowsToDelete(0) As String 

    Dim allRange As Range 
    Set allRange = ActiveSheet.UsedRange 

    Dim cell As Range, word As Variant 
    For Each cell In allRange 
     For Each word In searchTerms 
      If InStr(1, cell, word, vbTextCompare) Then 
       rowsToDelete(UBound(rowsToDelete)) = CStr(cell.Row) 
       ReDim Preserve rowsToDelete(UBound(rowsToDelete) + 1) 
      End If 
     Next word 
    Next cell 
    ReDim Preserve rowsToDelete(UBound(rowsToDelete) - 1) 
    RemoveDuplicate rowsToDelete 
    Dim v As Long 
    For v = UBound(rowsToDelete) To LBound(rowsToDelete) Step -1 
     Rows(rowsToDelete(v)).Delete 
    Next 
End Sub 


Sub RemoveDuplicate(ByRef StringArray() As String) 
    Dim lowBound$, UpBound&, A&, B&, cur&, tempArray() As String 
    If (Not StringArray) = True Then Exit Sub 
    lowBound = LBound(StringArray): UpBound = UBound(StringArray) 
    ReDim tempArray(lowBound To UpBound) 
    cur = lowBound: tempArray(cur) = StringArray(lowBound) 
    For A = lowBound + 1 To UpBound 
     For B = lowBound To cur 
      If LenB(tempArray(B)) = LenB(StringArray(A)) Then 
       If InStrB(1, StringArray(A), tempArray(B), vbBinaryCompare) = 1 Then Exit For 
      End If 
     Next B 
     If B > cur Then cur = B: tempArray(cur) = StringArray(A) 
    Next A 
    ReDim Preserve tempArray(lowBound To cur): StringArray = tempArray 
End Sub 

를 실행하는 전

enter image description here

+0

내가 그것을 단지 선택하고 싶은지? 그리고 그것을 강조 표시 한 후. – user2859137

+0

등으로 부탁드립니다! – user2859137

+0

@ user2859137 행 전체를 강조 표시하고 행 (rowsToDelete (v)). 삭제 행을 행 (rowsToDelete (v))으로 변경하려는 경우 Interior.Color = RGB (255, 0, 0)' –

관련 문제