Mostrar última celda de un cliente que se repite

24/02/2008 - 14:26 por GRIEGO59 | Informe spam
Hola!
Tengo en un formulario:
ComboBox1
Textbox15
Textbox16

Tengo una hoja con las columnas Nombre y Pagos.

Los nombres se repiten tantas veces como pagos hace el cliente.
La tabla está ordenada por Nombre y por fecha de pago ascendente.

Me gustaría que Textbox15 y Textbox16 muestren el último y penúltimo pago
del nombre seleccionado en ComboBox1.

Por favor, ayúdenme!

Saludos,
Darío.

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
25/02/2008 - 01:50 | Informe spam
hola, Darío !

Tengo en un formulario: ComboBox1, Textbox15, Textbox16
Tengo una hoja con las columnas Nombre y Pagos.
Los nombres se repiten tantas veces como pagos hace el cliente.
La tabla esta ordenada por Nombre y por fecha de pago ascendente.
Me gustaria que Textbox15 y Textbox16 muestren el ultimo y penultimo pago del nombre seleccionado en ComboBox1...



no comentas en que rango ni de cual hoja estan los datos que quieres mostrar :-((
suponiendo que se trata de la hoja "activa" cuando se muestra el formulario -???-
y que el listado de nombres esta en el rango [A2:A2000] -???-
(obviamente, "te toca" corregir donde los supuestos se equivoquen) :D

para obtener el numero de fila donde esta el ultimo dato del cliente seleccionado en el combobox1...

- define una variable a nivel de modulo (en el modulo de codigo del formulario)
Dim uFilaCliente

- localiza cual es la fila donde esta ese utimo registro (p.e.) en el evento '_change' del combobox1:
Private Sub ComboBox1_Change()
uFilaCliente = Evaluate("max(if(a2:a2000=""" & ComboBox1 & """,row(a2:a2000)))")
MsgBox uFilaCliente
End Sub

- con el numero de fila identificado, ya puedes rescatar los datos de cualquier otra columna
(recuerda que en los datos que expones no indicas nada al respecto) :D

- si suponemos que los datos que necesitas rescatar estan en la columna "W" de la hoja activa
puedes poner el penultimo correspondiente al cliente seleccionado en el combobox1...
TextBox16 = Range("w" & uFilaCliente - 1)
o el ultimo dato...
TextBox15 = Range("w" & uFilaCliente)

saludos,
hector.
Respuesta Responder a este mensaje
#2 GRIEGO59
25/02/2008 - 02:16 | Informe spam
Hola, Hector!
Gracias por tu ayuda,

Mira como lo estaba haciendo yo:

Private Sub ComboBox1_Change()

'Escribe el criterio del filtro avanzado en la hoja Pagos
Sheets("Pagos").Select
Range("af2").FormulaR1C1 = ComboBox1.Value


'Aplica filtro avanzado a la tabla Pagos en función del nombre
Columns("A:L").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Range( _
"AF1:AF2"), CopyToRange:=Range("S1:AD1"), Unique:=False

'Copia filtro avanzado a la hoja Filtro
Sheets("Préstamos").Select
Range("S2:AD65536").Select
Selection.Copy
Sheets("Filtro").Select
Range("A2").Select
ActiveSheet.Paste
Range("a1").Select
Sheets("Préstamos").Select
Application.CutCopyMode = False
Selection.ClearContents

Sheets("Filtro").Select
Worksheets("Filtro").Range("b65536").End(xlUp) _
.Offset(0, 2).Select 'Selecciona la columna Pagos

TextBox15 = ActiveCell.FormulaR1C1
End Sub

Obviamente es un poco lento. Déjame probar tu sugerencia a ver que tal.

Saludos,
Darío


"Héctor Miguel" escribió:

hola, Darío !

> Tengo en un formulario: ComboBox1, Textbox15, Textbox16
> Tengo una hoja con las columnas Nombre y Pagos.
> Los nombres se repiten tantas veces como pagos hace el cliente.
> La tabla esta ordenada por Nombre y por fecha de pago ascendente.
> Me gustaria que Textbox15 y Textbox16 muestren el ultimo y penultimo pago del nombre seleccionado en ComboBox1...

no comentas en que rango ni de cual hoja estan los datos que quieres mostrar :-((
suponiendo que se trata de la hoja "activa" cuando se muestra el formulario -???-
y que el listado de nombres esta en el rango [A2:A2000] -???-
(obviamente, "te toca" corregir donde los supuestos se equivoquen) :D

para obtener el numero de fila donde esta el ultimo dato del cliente seleccionado en el combobox1...

- define una variable a nivel de modulo (en el modulo de codigo del formulario)
Dim uFilaCliente

- localiza cual es la fila donde esta ese utimo registro (p.e.) en el evento '_change' del combobox1:
Private Sub ComboBox1_Change()
uFilaCliente = Evaluate("max(if(a2:a2000=""" & ComboBox1 & """,row(a2:a2000)))")
MsgBox uFilaCliente
End Sub

- con el numero de fila identificado, ya puedes rescatar los datos de cualquier otra columna
(recuerda que en los datos que expones no indicas nada al respecto) :D

- si suponemos que los datos que necesitas rescatar estan en la columna "W" de la hoja activa
puedes poner el penultimo correspondiente al cliente seleccionado en el combobox1...
TextBox16 = Range("w" & uFilaCliente - 1)
o el ultimo dato...
TextBox15 = Range("w" & uFilaCliente)

saludos,
hector.



Respuesta Responder a este mensaje
#3 GRIEGO59
25/02/2008 - 03:20 | Informe spam
Mil gracias!
Eres un Genio!
Funciona muy rápido, como si fuese "magia"
Y se siente "Livianito"
Saludos,
Darío

"Héctor Miguel" escribió:

hola, Darío !

> Tengo en un formulario: ComboBox1, Textbox15, Textbox16
> Tengo una hoja con las columnas Nombre y Pagos.
> Los nombres se repiten tantas veces como pagos hace el cliente.
> La tabla esta ordenada por Nombre y por fecha de pago ascendente.
> Me gustaria que Textbox15 y Textbox16 muestren el ultimo y penultimo pago del nombre seleccionado en ComboBox1...

no comentas en que rango ni de cual hoja estan los datos que quieres mostrar :-((
suponiendo que se trata de la hoja "activa" cuando se muestra el formulario -???-
y que el listado de nombres esta en el rango [A2:A2000] -???-
(obviamente, "te toca" corregir donde los supuestos se equivoquen) :D

para obtener el numero de fila donde esta el ultimo dato del cliente seleccionado en el combobox1...

- define una variable a nivel de modulo (en el modulo de codigo del formulario)
Dim uFilaCliente

- localiza cual es la fila donde esta ese utimo registro (p.e.) en el evento '_change' del combobox1:
Private Sub ComboBox1_Change()
uFilaCliente = Evaluate("max(if(a2:a2000=""" & ComboBox1 & """,row(a2:a2000)))")
MsgBox uFilaCliente
End Sub

- con el numero de fila identificado, ya puedes rescatar los datos de cualquier otra columna
(recuerda que en los datos que expones no indicas nada al respecto) :D

- si suponemos que los datos que necesitas rescatar estan en la columna "W" de la hoja activa
puedes poner el penultimo correspondiente al cliente seleccionado en el combobox1...
TextBox16 = Range("w" & uFilaCliente - 1)
o el ultimo dato...
TextBox15 = Range("w" & uFilaCliente)

saludos,
hector.



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida