Seleccionar de una lista solo las celdas con escritura

Hola
Yo tengo una lista de (por ejemplo) 100 filas por 6 columnas(n° solicitud, fecha cuantos materiales solicitados por item, y cuales materiales están pendientes por item), cada una de estas filas es una solicitud de materiales, la cual puede estar satisfecha con lo que la celda de solicitud pendiente de la fila correspondiente dirá 0, de lo contrario estará insatisfecha por lo que tendrá un numero positivo (cantidad de artículos pendientes por item).
Lo que quiero hacer es:
Hacer, en una hoja aparte, una lista con solamente todas las filas (solicitudes), en las que su celda de solicitud pendiente sea mayor que 0.
Así lograr tener una lista con solamente las solicitudes pendientes.
No sé si he explicado bien mi necesidad.
Si me pueden solucionar este problema estaré muy agradecido.
Muchas gracias.

2 Respuestas

Respuesta
1
Haber si entendí, ¿lo qué deseas es que cuando tengas un listado grande lo puedas separar entre solicitudes finalizadas y solicitudes pendientes y cada listado en hojas independientes? Si es así entonces veo 3 soluciones:
1. Utilizar los autofiltros y copiar el listado y pegarlo en la hoja de solicitudes insatisfechas (todo esto se hace manualmente)
2. Utilizar los filtros avanzados y especificarle que cuando se filtre se copie en la hoja de solicitudes insatisfechas (todo esto se hace manualmente)
3. Programar una macro que ejecute cualquiera de las 2 opciones anteriores.
Si estoy herrado en lo que yo creo que deseas hacer, entonces especifica un poco más lo que quieres hacer, haber si logro comprender mejor y poder ayudarlo, ah y enviame el archivo bien comentado al correo [email protected]
Que tengas un feliz día!
Ok te mande un mail con un archivo excel con un fragmento de las solicitudes pero de todas las columnas resumiendo lo que quiero
Gracias de antemano
Ya le envíe el archivo a su correo, así que ya puedes puntuar y finalizar la pregunta!
Que tengas un feliz día!
Respuesta
1
COmo no sé exactamente como están los datos supondré que:
- La línea 1 contiene una cabecera
- Tienes 7 columnas (A-G) y el número de pendientes está en la columna E (la 5).
- Los datos están en una página llamada "Datos"
- La salida la queremos en una página que se llama "Listado"
El código de tu proceso sería:
Option Explicit
Const numColumnas = 7
Const nColPendientes = 5
Sub obtenerListadoPendientes()
    Dim shOri As Worksheet
    Dim shDes As Worksheet
    Dim nLinOri As Long
    Dim nLinDes As Long
    Dim i As Integer
    ' Asignamos las páginas
    Set shOri = Sheets("Datos")
    Set shDes = Sheets("Listados")
    ' Borramos el contenido de la página destino
    shDes.Cells.Delete
    ' Copiamos el contenido de la cabecera (linea 1)
    For i = 1 To numColumnas
        shDes.Cells(1, i) = shOri.Cells(1, i)
    Next i
    nLinDes = 1 ' Ya tenemos una línea escrita
    ' Leemos la página de origen
    For nLinOri = 2 To shOri.Cells.SpecialCells(xlCellTypeLastCell).Row
        If shOri.Cells(nLinOri, nColPendientes) > 0 Then
            ' Copiamos la línea
            nLinDes = nLinDes + 1
            For i = 1 To numColumnas
                shDes.Cells(nLinDes, i) = shOri.Cells(nLinOri, i)
            Next i
        End If
    Next nLinOri
    MsgBox "Proceso terminado"
End Sub
Oye muchas gracias... por la respuesta... justo lo que quería
¿Y gracias
también quería saber si se puede hacer lo mismo pero sin macro?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas