En Excel, ¿cómo puedo hacer que una fila de datos en una tabla que tiene texto específico en una celda aparezca automáticamente en una tabla en una hoja separada?

En Excel, ¿cómo puedo hacer que una fila de datos en una tabla que tiene texto específico en una celda aparezca automáticamente en una tabla en una hoja separada?

Descargo un informe con 8 columnas de datos en una tabla cada semana. La cantidad de datos cambia cada semana por fila (una semana puede tener 40 filas, la siguiente puede tener 100 pero no más de 150). Los encabezados de datos seguirían siendo los mismos.

Necesito poder hacer que solo todos los datos en una fila donde aparece "HOT: Must Cover" en la columna B aparezcan/se analicen automáticamente en una tabla idéntica en otra hoja. ¿Usaría de alguna manera una BUSCARV junto con =IF?

Ejemplo de tabla en la hoja 1:

ingrese la descripción de la imagen aquí

Respuesta1

Una opción que tienes sería usar la opción de filtro en Excel y luego ordenarlos alfabéticamente en la columna B. Si realmente los necesitas en una hoja separada, lo que puedes hacer es copiarlos y pegarlos en la siguiente hoja (ya que todos estarán agrupados). juntos desde la clasificación).

Alternativamente, necesitará escribir una macro que lea la columna B en cada línea y copie la línea si el contenido es "Actual: debe cubrir".

Algo parecido a esto:

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

Respuesta2

Creo que sería difícil lograr esto con VLOOKUP(o cualquier otra búsqueda). Considere esta solución 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

información relacionada