Excel에서 한 셀에 특정 텍스트가 있는 테이블의 데이터 행이 자동으로 별도 시트의 테이블에 표시되도록 하려면 어떻게 해야 합니까?

Excel에서 한 셀에 특정 텍스트가 있는 테이블의 데이터 행이 자동으로 별도 시트의 테이블에 표시되도록 하려면 어떻게 해야 합니까?

나는 매주 8개의 데이터 열이 포함된 보고서를 테이블에 다운로드합니다. 데이터의 양은 매주 행별로 변경됩니다(한 주에는 40개의 행이 있을 수 있고 다음 주에는 100개가 있을 수 있지만 150개 이하). 데이터 헤더는 동일하게 유지됩니다.

B 열에 "HOT: Must Cover"가 나타나는 행의 모든 ​​데이터만 다른 시트의 동일한 테이블에 자동으로 표시/구문 분석할 수 있어야 합니다. =IF와 함께 VLOOKUP을 사용할까요?

시트 1의 표 예:

여기에 이미지 설명을 입력하세요

답변1

한 가지 옵션은 Excel에서 필터 옵션을 사용한 다음 B열에서 알파벳순으로 정렬하는 것입니다. 별도의 시트에 정말로 필요한 경우 다음 시트에 복사하여 붙여넣는 것입니다(모두 그룹화되므로 정렬에서 함께).

또는 각 줄의 B열을 읽고 내용이 "Hot: Must Cover"인 경우 해당 줄을 복사하는 매크로를 작성해야 합니다.

다음과 같은 내용이 있습니다.

Dim i as Integer
Dim j as Integer

i = 0
j = 0

Do While Cells(i, 2).value != ""
    if Cells(i, 2).Value == "Hot: Must Cover" Then
        Worksheets("Sheet1").Range(Cells(j, 0), Cells(j, 7).Value = Worksheets("Sheet1").Range(Cells(i, 0), Cells(i, 7).Value
        j = j + 1
    End if
    i=i+1
loop

답변2

VLOOKUP(또는 다른 조회)를 사용하여 이를 수행하는 것은 어려울 것이라고 생각합니다 . 다음 VBA 솔루션을 고려해보세요.

Sub test    
    Dim ws1 As Worksheet, ws2 As Worksheet
    Dim j As Integer

    Set ws1 = Worksheets(1)
    Set ws2 = Worksheets(2)
    j = 1

    For i = 2 To (ws1.Range("A1").ListObject.DataBodyRange.Count + 1)
        If ws1.Range("B" & i).Value = "HOT: Must Cover" Then
            ws1.Range("A" & i & ", G" & i).Copy
            ws2.Range("A" & j).PasteSpecial xlPasteValues
            j = j + 1
        End If
    Next i
End Sub

관련 정보