Realizar búsqueda en tabla de excel...

hola

en hoja gestión tengo esto siendo el cod el cliente que compra algo....

a b c ...... F

cod articulo precio situación

15 colchón 10 recibido

17 silla 11 pedido

15 somier 5 recibido

19 mesa 15 pedido

todo esto en rango a3:f10000 y quisiera poner en hoja2 los clientes que tengan todos sus artículos recibidos.....osea que se repitan tantas veces en la columna cod como artículos recibidos tienen

osea el que aparecería en la hoja 2 en este caso seria el cliente 15 solamente....

muchas gracias

1 respuesta

Respuesta
1

Te mando mi solución:

Antes de nada sería conveniente que copiaras el encabezado de la tabla a tu hoja2 para que se copien los datos debajo de dicho encabezado.

Sub ejemplo()'por luismondeloSheets("gestión").SelectRange("a3").SelectDo While ActiveCell.Value <> ""If UCase(ActiveCell.Offset(0, 5).Value) = "RECIBIDO" ThenActiveCell.EntireRow.CopySheets("hoja2").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValuesActiveCell.Offset(1, 0).SelectElseActiveCell.Offset(1, 0).SelectEnd IfLoopEnd Sub

observaciones:

La hoja gestión está escrita en la macro como tal, es decir, solo la palabra gestión y con acento.

Esta macro te copiará todas las líneas donde está escrita la palabra recibido a la hoja2, en este caso copiará dos registros.

Recuerda finalizar la consulta

Parece que la macro se ha copiado en la web en una sola línea, te la repito aquí:

Sub ejemplo()
'por luismondelo
Sheets("gestión").Select
Range("a3").Select
Do While ActiveCell.Value <> ""
If UCase(ActiveCell.Offset(0, 5).Value) = "RECIBIDO" Then
ActiveCell.EntireRow.Copy
Sheets("hoja2").Range("a65000").End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlValues
ActiveCell.Offset(1, 0).Select
Else
ActiveCell.Offset(1, 0).Select
End If
Loop
End Sub

ok pero el tema es que salga solo el que coincida que tenga todos sus articulos recibidos....osea tantas veces aparece el codigo como esta recibido.....cada fila es un cliente(cod) que compra un articulo y el cod 15 seria el unico que cumple que sus articulos estan los dos recibidos....puede tener un articulo(fila) dos o veinte en el rango

y estos varian pedido,recibido,servido.....

lo que quiero es saber los cod que tienen todos sus articulos en el rango recibidos....

disculpa pero me explico regular

muchas gracias

Entonces, en el ejemplo que has mandado, ¿cuántas líneas tienen que aparecer en la hoja2?

solo aparecería el que cumple la condición que las veces que aparece en el rango a3:f10000 siempre esta recibido.....osea el 15 solo

hoja2

a........................f

cod recibido

15 ok

muchas gracias

Te mando mi solución:

Los datos están en la hoja gestión desde A3 hacia abajo entonces el encabezado estará en A2, así es como he planificado la macro:

Sub prueba()
Sheets("gestión").Select
Range("a2").CurrentRegion.Sort key1:=Range("a3"), order1:=xlAscending, Header:=xlYes, ordercustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("a3").Select
Do While ActiveCell.Value <> ""
valor = ActiveCell.Value
contarsi = Application.WorksheetFunction.CountIf(Columns(1), valor)
Do While ActiveCell.Value = valor
If ActiveCell.Offset(0, 3).Value = "recibido" Then c = c + 1
ActiveCell.Offset(1, 0).Select
Loop
If c = contarsi Then
Sheets("hoja2").Range("a65000").End(xlUp).Offset(1, 0).Value = valor
Sheets("hoja2").Range("f65000").End(xlUp).Offset(1, 0).Value = "ok"
End If
Loop
End Sub

no va ,lo que hace es bajarme los títulos de la hoja gestión abajo....te podría mandar mi primer ensayo y lo miras....sin reírte mucho solo un poco....

Creo que no has leído el texto en negrita de mi anterior post.

[email protected]

si lo que pasa es que baja los títulos al final de la tabla.....he cambiado los nombres también en la macro te mando el archivo y no te rías es un ensayo....

[email protected]

ahora te lo mando muchas gracias

Ya te he contestado por mail

Recuerda finalizar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas