특정 용어가 포함 된 셀 제거 (Microsoft Excel)
Ankur에는 다양한 용어가 포함 된 수천 개의 셀이있는 워크 시트가 있습니다. 그는 이러한 용어와 해당 용어가 발생하는 셀을 많이 삭제해야합니다. 예를 들어, “google”, “youtube”, “linkedin”및 기타 여러 용어가 포함 된 모든 셀을 삭제해야 할 수 있습니다. Ankur는 이러한 각 용어를 검색하고 바꿀 수 있다는 것을 알고 있지만 매우 지루합니다. 그는 제거 할 모든 용어를 식별 한 다음 Excel에서 수천 개의 셀에서 제거하도록 할 수있는 방법이 있는지 궁금합니다.
이러한 유형의 작업을 정기적으로 수행해야하는 경우 가장 좋은 해결책은 매크로를 사용하는 것입니다. 트릭은 매크로에서 정확히 바꿀 항목을 지정하는 방법입니다. 한 가지 방법은 다음 예제와 같이 정보를 배열에 채우는 것입니다.
Sub RemoveTerms1() Dim vTerm As Variant Dim vArray As Variant vArray = Array("google", "youtube", "linkedin") For Each vTerm in vArray Selection.Replace What:=vTerm, _ Replacement:="", LookAt:=xlPart Next vTerm End Sub
검색되는 용어가 vArray 배열에 배치 된 다음 배열의 각 구성원 (각 용어)이 단계별로 실행됩니다. Replace 메서드는 Selection 개체와 함께 실제 대체를 수행하는 데 사용됩니다. 매크로는 셀을 제거하지 않습니다. 단순히 용어와 일치하는 모든 텍스트를 제거합니다. 바꿀 때 검색은 대소 문자를 구분하지 않으므로 “google”은 “Google”과 일치합니다.
Selection 개체가 사용되기 때문에 실제로 매크로를 실행하기 전에 처리 할 목록을 선택하는 것이 중요합니다.
그렇지 않으면 아무것도 교체되지 않습니다.
원하는 경우 통합 문서의 셀 범위에서 용어를 가져 오는 매크로를 만들 수 있습니다.
Sub RemoveTerms2() Dim c As Range Dim rngSource As Range Dim vTerm As Variant Dim arrTerms As Variant Dim i As Integer i = -1 arrTerms = Array() For Each c In Range("D1:D9").Cells If Trim(c.Value) > "" Then i = i + 1 ReDim Preserve arrTerms(i) arrTerms(i) = Trim(c.Value) End If Next c On Error Resume Next Set rngSource = Application.InputBox( _ Prompt:="Please select Range", _ Title:="Removing Cells Containing Terms", _ Default:=ActiveSheet.UsedRange.Address, Type:=8) On Error GoTo 0 If rngSource Is Nothing Then MsgBox ("You didn't specify a range to process") Else For Each vTerm in arrTerms rngSource.Replace What:=vTerm, _ Replacement:="", LookAt:=xlWhole Next vTerm End If End Sub
이 매크로는 D1 : D9 범위에서 검색어를 가져온 다음 처리 할 셀 범위를 선택하라는 메시지를 표시합니다. LookAt 매개 변수를 xlWhole으로 지정한다는 점을 제외하면 이전 매크로에서 사용 된 것과 동일한 Replace 메서드를 사용합니다. 즉, 제거하려면 검색어가 전체 셀과 일치해야합니다. 그러나 용어는 여전히 대소 문자를 구분하지 않는 것으로 간주됩니다.
지금까지의 예제는 실제로 어떤 셀도 삭제하지 않습니다. 그들은 단순히 세포의 내용을 삭제합니다. 대부분의 경우 실제 워크 시트의 레이아웃을 방해하지 않기 때문에 정확히 원하는 것입니다. 정말로 셀을 삭제하고 싶다면 Replace 메서드를 사용하지 않을 것입니다. 대신 확장 된 텍스트 비교를 설정하고 Like 연산자를 사용하여 일치 항목이 있는지 확인할 수 있습니다.
Option Compare Text Sub RemoveTerms3() Dim c As Range Dim rngSource As Range Dim vTerm As Variant Dim arrTerms As Variant Dim i As Integer Dim sLook As String i = -1 arrTerms = Array() For Each c In Range("D1:D9").Cells If Trim(c.Value) > "" Then i = i + 1 ReDim Preserve arrTerms(i) arrTerms(i) = Trim(c.Value) End If Next c On Error Resume Next Set rngSource = Application.InputBox( _ Prompt:="Please select Range", _ Title:="Removing Cells Containing Terms", _ Default:=ActiveSheet.UsedRange.Address, Type:=8) On Error GoTo 0 If rngSource Is Nothing Then MsgBox ("You didn't specify a range to process") Else For Each vTerm in arrTerms sLook = "" & vTerm & "" For Each c In rngSource If c.Value Like sLook Then c.Delete Next Next vTerm End If End Sub
검색어는 여전히 D1 : D9 범위에서 가져 오며 처리 할 범위를 묻는 메시지가 계속 표시됩니다. 그러나 거기에서 프로세스는 다릅니다. 매크로는 각 셀을 검사하고 부분적으로 일치하는 경우 셀이 삭제됩니다.
매크로에서이 변형이 제대로 작동하려면 프로 시저 외부에 옵션 비교 텍스트 줄을 포함해야합니다.
이렇게하면 VBA가 텍스트를 비교할 수있는 키워드 (예 : Like)를 활성화하도록 지시합니다.
_ 참고 : _
이 페이지 (또는 ExcelTips 사이트의 다른 페이지)에 설명 된 매크로를 사용하는 방법을 알고 싶다면 유용한 정보가 포함 된 특별 페이지를 준비했습니다.
link : / excelribbon-ExcelTipsMacros [새 브라우저 탭에서 특별 페이지를 열려면 여기를 클릭하세요]
.
_ExcelTips_는 비용 효율적인 Microsoft Excel 교육을위한 소스입니다.
이 팁 (13373)은 Office 365의 Microsoft Excel 2007, 2010, 2013, 2016, 2019 및 Excel에 적용됩니다.