
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:
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