Buscar en una tabla

26/02/2008 - 00:53 por pablorotero | Informe spam
Hola a todos.

Tengo una tabla en la cual las filas son años y las columnas son los
meses. Necesito una función que me devuelva en una celda el valor de
la tabla correspondiente a un mes de un año concreto.
Dichas coordenadas se informan a partir de dos desplegables (combobox)
en los que se le indica el periodo a analizar.
Es decir, en un desplegable selecciono por ejemplo el mes de abril y
en otro desplegable el año 2007, y quiero que en una celda aparezca el
valor correspondiente a dicho periodo.
Gracias

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
27/02/2008 - 23:59 | Informe spam
hola, pablo !

... son cuadros combinados que vienen del cuadro de controles.
En uno de ellos he puesto como ListFillRange los meses de la tabla y en el otro los a#os.
Por cierto, aprovecho para preguntar Como vinculo al rango filas en vez de columnas?
Lo he solucionado con una columna oculta que contiene los a#os, pero no se si hay una forma directa.
He vinculado los dos combos con dos celdas en los que me devuelve la seleccion
(por ejemplo, en una celda aparece abril y en otra 2007) definiendolo en la propiedad LinkedCell del combo.
Por lo tanto, las coordenadas del dato a obtener vienen dadas por la seleccion hecha en los cuadros combinados...



(en resumen):
- la tabla en el rango [F18:J30] de la hoja... (hoja 2 ???)
(asumo que los meses estan en el rango F19:F30 y los a#os en el rango G18:J18) -???-

- combos de la barra de herramientas "cuadro de controles" en la hoja 1
vinculados a las celdas F13 (los meses ?) y F14 (los a#os ?)

- el resultado lo necesitas en la hoja1 en la celda H21 -?-
usa la siguiente formula (OJO con el separador de argumentos, yo uso la coma)

[H21] =indice(hoja2!g19:j30,coincidir(f13,hoja2!f19:f30,0),coincidir(--f14,hoja2!g18:j18,0))

saludos,
hector.

p.d. la propiedad ListFillRange de los combos requiere de un rango "vertical" (como el truco que estas haciendo)
si requieres usar un rango "horizontal", sera necesario utiizar codigo (p.e. en el evento '_activate' de la hoja donde esta)...

Private Sub Worksheet_Activate()
ComboBox2.Column = Worksheets("hoja1").Range("g18:j18").Value
End Sub
Respuesta Responder a este mensaje
#7 pablorotero
28/02/2008 - 01:08 | Informe spam
Como siempre, espectacular !!!!!!

Funciona de maravilla

Muchísimas gracias, Héctor
Respuesta Responder a este mensaje
#8 pablorotero
28/02/2008 - 13:48 | Informe spam
Sigo con la dichosa tabla.

Ahora ya tengo lo que quería. Ahora se me ocurre aprovechar el que un
una celda me devuelve el mes seleccionado y en otra el año
seleccionado en los combos

¿Hay forma de obtener el resultado de la selección en formato fecha?

Me explico. Me interesa comparar el dato obtenido, por ejemplo abril
de 2007, con el del mes anterior. Para ello, ¿puedo obtener en una
celda en formato fecha el perido seleccionado en los combos? Es la
única forma que se me ocurre para obtener en otra celda el resultado
del mes anterior al seleccionado.

Gracias
Respuesta Responder a este mensaje
#9 Héctor Miguel
28/02/2008 - 21:00 | Informe spam
hola, Pablo !

Ahora se me ocurre aprovechar el que en una celda me devuelve el mes... y en otra el a#o seleccionado en los combos
Hay forma de obtener el resultado de la seleccion en formato fecha?
Me explico. Me interesa comparar el dato obtenido, por ejemplo abril de 2007, con el del mes anterior.
Para ello, puedo obtener en una celda en formato fecha el perido seleccionado en los combos?
Es la unica forma que se me ocurre para obtener en otra celda el resultado del mes anterior al seleccionado.



el detalle seria que al obtener (p.e.) el dato correspondiente a enero (primer fila de la columna-a#o),
el mes anterior pasa a ser la ultima fila de la columna-a#o anterior
(obviando que si el enero es de la primer columna-a#o, no habria "mes anterior" con el que comparar) -?-

suponiendo que puedes usar las celdas: E16, F16, F17 (mas la necesaria para el nuevo dato del mes anterior)...
prueba con las siguientes formulas:
[E16] =coincidir(f13,hoja2!f19:f30,0)-1
[F16] =indice(hoja2!f19:f30,si(e16,e16,12))
[F17] ñ4-(E16=0)

y la nueva formula: =indice(hoja2!g19:j30,coincidir(f16,hoja2!f19:f30,0),coincidir(--f17,hoja2!g18:j18,0))

saludos,
hector.
Respuesta Responder a este mensaje
#10 pablorotero
29/02/2008 - 02:09 | Informe spam
Perfecto !!!!

Gracias de nuevo
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una pregunta AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida