¿Cómo puedo seleccionar filas de una matriz con macros o algo parecido?

Disculpen pero tengo una duda ya que soy nueva en excel y no se como hacer para sacar datos de una matriz en excel y pasarlos a una nueva tabla

Lo que busco hacer es esto:

Ayuda por favor, es que no se nada de esto T_T,

Solo se que esto en sql seria más o menos así:

SELECT clave, producto, cantidadDisponible FROM TABLAORIGEN WHERE cantidadDisponible <= '10'

De antemano muchas gracias por su ayuda ^_^

1 respuesta

Respuesta
2

H o l a:

Vamos a realizarlo con una macro, utilizando en la macro el filtro avanzado.

Según tu imagen, deducimos que tus datos están en la hoja1 y los encabezados empiezan en la celda B3.

Ahora en la hoja2, pon lo siguiente:

En la hoja2 en la celda D1 debes poner el mismo título que tienes en tu hoja1 celda E3.

En la hoja2 en la celda D2 pon la fórmula

=B2&C2

El funcionamiento será el siguiente.

Cada vez que cambies el operador en la celda B2, puede ser: menor que, menor o igual que, igual, mayor que o mayor o igual que (<, <=, = , >, >=); o cambies la cantidad en la celda C2, la macro se ejecutará en automático y te pondrá el resultado en la hoja2 a partir de la celda B4


Pon la siguiente macro en los eventos de tu hoja2:

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    If Not Intersect(Target, Range("B2:C2")) Is Nothing Then
        Set h1 = Sheets("Hoja1")
        Set h2 = Sheets("Hoja2")
        h2.UsedRange.Offset(3, 0).ClearContents
        u = h1.Range("B" & Rows.Count).End(xlUp).Row
        h1.Range("B3:E" & u).AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=h2.Range("D1:D2"), _
            CopyToRange:=Range("B4"), Unique:=False
    End If
End Sub

Sigue las Instrucciones para poner la macro en los eventos de worksheet

  1. Abre tu libro de excel
  2. Para abrir Vba-macros y poder pegar la macro, Presiona Alt + F11
  3. Del lado izquierdo dice: VBAProject, abajo dale doble click a worksheet(Hoja2)
  4. Del lado derecho copia la macro

¡Gracias!

¡Muchas gracias!, me sirvió de mucho, pero soy un poco tontita, ¿de casualidad me podrías explicar un poco la macro?

No te preocupes, aquí todos estamos aprendiendo.

Private Sub Worksheet_Change(ByVal Target As Range)
'Por.Dante Amor
    'le indico que solamente si se afecta la celda B2 o C2
    If Not Intersect(Target, Range("B2:C2")) Is Nothing Then
        'establezco en variables las hojas.
        Set h1 = Sheets("Hoja1")
        Set h2 = Sheets("Hoja2")
        'limpio el rango de celdas
        h2.UsedRange.Offset(3, 0).ClearContents
        'obtiene la última fila con datos de la hoja1
        u = h1.Range("B" & Rows.Count).End(xlUp).Row
        'Realiza el filtro avanzado
        'El rango de datos esta en B3 hasta E y la última fila
        h1.Range("B3:E" & u).AdvancedFilter Action:=xlFilterCopy, _
            'toma los criterios de la hoja 2 del rango D1 a D2
            CriteriaRange:=h2.Range("D1:D2"), _
            'Copia el resultado en la hoja2 a partir de la celda B4
            CopyToRange:=h2.Range("B4"), Unique:=False
    End If
End Sub

s a l u d o s

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas