Obtener datos de un rango

27/07/2006 - 21:31 por Edwin | Informe spam
Solicito ayuda con una fórmula similar al SUMAR.SI pero que en vez de
devolver la suma condicional de los resultados encontrados en una matriz, me
devuelva los valores encontrados en esa matriz que cumplieron dicha condición.

Me explico:
Buscando un string "X" en la primera columna de una tabla de 5 filas, deseo
que me devuelva una matriz con "n" elementos que representan los valores de
la columna 3, que cumplieron la condición de búsqueda en la columna 1.

Luis 1 Casa
Mario 2 Auto
Jorge 3 Estereo
Mario 4 Tv
Gabriel 5 Cocina
Mario 6 Cama
Por ejemplo: REGRESAR.SI("Mario", MI_TABLA, 3) = {"Auto","Tv","Cama"}

Agradezco cualquier ayuda al respecto.
eddy56@hotmail.com
Edwin

Preguntas similare

Leer las respuestas

#1 Abraham
27/07/2006 - 22:46 | Informe spam
Pues si lo quieres todo en una misma celda, podrias usar un filtro y
despues concatenar los resultados.

Abraham
Respuesta Responder a este mensaje
#2 David
28/07/2006 - 00:53 | Informe spam
Mediante una función, creo muy difícil que se pueda resolver tu problema.
¿Vale con un macro?

Si distribuyeras tus datos de la siguiente manera:

A B C
1 Luis 1 Casa
2 Mario 2 Auto
3 Jorge 3 Estereo
4 Mario 4 Tv
5 Gabriel 5 Cocina
6 Mario 6 Cama
7 Mario 2 Reloj
8 Gabriel 5 Radio
9 Luis 1 Auto
10 Gabriel 2 Auto

Podrías colocar los parámetros de la búsqueda en otras columnas, por ejemplo:

E F
1 Rango A1:C10
2 Buscar Mario
3 Regresar 3
4 en columna 8

En el entendido que F1 contendría el rango en el que se hará la búsqueda, F2
el dato que estás buscando, F3 la columna que quieres que el macro te
devuelva, y F4 la columna donde se listarán los valores devueltos.

Entonces, en la columna 8 (H), obtendrías:

H
1 Auto
2 Tv
3 Cama
4 Reloj

Y por fin, el código:

Sub RegresarSi()
Dim N As Integer, Rango As String
Rango = Range("F1").Value
Range(Cells(1, Cells(4, 6)), Cells(65536, Cells(4, 6))).Delete
Range(Rango).Select
For Each fila In Range(Rango).Rows
If UCase(Cells(2, 6).Value) = UCase(Left(Cells(fila.Row, 1).Value,
Len(Cells(2, 6).Value))) Then
N = N + 1
Cells(N, Cells(4, 6).Value).Value = Cells(fila.Row, Cells(3,
6)).Value
End If
Next fila
End Sub





"Edwin" escribió:

Solicito ayuda con una fórmula similar al SUMAR.SI pero que en vez de
devolver la suma condicional de los resultados encontrados en una matriz, me
devuelva los valores encontrados en esa matriz que cumplieron dicha condición.

Me explico:
Buscando un string "X" en la primera columna de una tabla de 5 filas, deseo
que me devuelva una matriz con "n" elementos que representan los valores de
la columna 3, que cumplieron la condición de búsqueda en la columna 1.

Luis 1 Casa
Mario 2 Auto
Jorge 3 Estereo
Mario 4 Tv
Gabriel 5 Cocina
Mario 6 Cama
Por ejemplo: REGRESAR.SI("Mario", MI_TABLA, 3) = {"Auto","Tv","Cama"}

Agradezco cualquier ayuda al respecto.

Edwin
Respuesta Responder a este mensaje
#3 Héctor Miguel
28/07/2006 - 09:27 | Informe spam
hola, Edwin !

1) si suponemos que los elementos de 'tu_tabla' se encuentran en el rango 'A2:C7'
prueba con una formula +/- como la siguiente:
=desref(a2,k.esimo.menor(si(a2:a7="mario",fila(a2:a7)-fila(a2)),fila(indirecto("1:"&contar.si(a2:a7,"mario")))),2)
-> si pulsas {F1}+{F9} en la celda donde la utilices... ''veras' que la matriz que devuelve se lee +/- asi: ={"Auto"\"Tv"\"Cama"}

2) dependiendo de como pienses 'rescatar' despues algun elemento 'especifico' de la matriz devuelta...
y/o que tengas pensado 'hacer' con ella -?-
[p.e.] si suponemios que deseas 'rescatar' el segundo eleento de la matriz [asumiento que existe mas de uno 'coincidente']...
la siguiente formula seria 'matricial' [ya sabes, al introducirla/editarla se debe terminar con ctrl+mayus+enter]
=desref(a2,k.esimo.menor(si(a2:a7="mario",fila(a2:a7)-fila(a2)),2),2)

3) solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

-> [seguramente] habra otras alternativas de formulas/funciones/... [es solo mientras comentas los detalles 'en el tintero'] :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
... formula similar al SUMAR.SI pero que en vez de devolver la suma condicional de los resultados encontrados en una matriz
... devuelva los valores encontrados en esa matriz que cumplieron dicha condicion. Me explico:
Buscando un string "X" en la primera columna de una tabla de 5 filas, deseo que me devuelva una matriz con "n" elementos
que representan los valores de la columna 3, que cumplieron la condicion de busqueda en la columna 1.
Luis 1 Casa
Mario 2 Auto
Jorge 3 Estereo
Mario 4 Tv
Gabriel 5 Cocina
Mario 6 Cama
Por ejemplo: REGRESAR.SI("Mario", MI_TABLA, 3) = {"Auto","Tv","Cama"}
Respuesta Responder a este mensaje
#4 Héctor Miguel
28/07/2006 - 09:31 | Informe spam
hola [de nuevo], Edwin ! [fe de erratas] :-((

-> si pulsas {F1}+{F9} en la celda donde la utilices... ''veras' que la matriz que devuelve se lee +/- asi: ={"Auto"\"Tv"\"Cama"}



=> la secuencia 'correcta' de las teclas ES... -> {F2}+{F9} <= NO {F1}+{F9}

saludos,
hector.
Respuesta Responder a este mensaje
#5 David
28/07/2006 - 20:32 | Informe spam
Excelente, Héctor Miguel. Tus aportes son fabulosos, pero hoy sí que te
pasaste.



"Héctor Miguel" escribió:

hola, Edwin !

1) si suponemos que los elementos de 'tu_tabla' se encuentran en el rango 'A2:C7'
prueba con una formula +/- como la siguiente:
=desref(a2,k.esimo.menor(si(a2:a7="mario",fila(a2:a7)-fila(a2)),fila(indirecto("1:"&contar.si(a2:a7,"mario")))),2)
-> si pulsas {F1}+{F9} en la celda donde la utilices... ''veras' que la matriz que devuelve se lee +/- asi: ={"Auto"\"Tv"\"Cama"}

2) dependiendo de como pienses 'rescatar' despues algun elemento 'especifico' de la matriz devuelta...
y/o que tengas pensado 'hacer' con ella -?-
[p.e.] si suponemios que deseas 'rescatar' el segundo eleento de la matriz [asumiento que existe mas de uno 'coincidente']...
la siguiente formula seria 'matricial' [ya sabes, al introducirla/editarla se debe terminar con ctrl+mayus+enter]
=desref(a2,k.esimo.menor(si(a2:a7="mario",fila(a2:a7)-fila(a2)),2),2)

3) solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D

-> [seguramente] habra otras alternativas de formulas/funciones/... [es solo mientras comentas los detalles 'en el tintero'] :))

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
> ... formula similar al SUMAR.SI pero que en vez de devolver la suma condicional de los resultados encontrados en una matriz
> ... devuelva los valores encontrados en esa matriz que cumplieron dicha condicion. Me explico:
> Buscando un string "X" en la primera columna de una tabla de 5 filas, deseo que me devuelva una matriz con "n" elementos
> que representan los valores de la columna 3, que cumplieron la condicion de busqueda en la columna 1.
> Luis 1 Casa
> Mario 2 Auto
> Jorge 3 Estereo
> Mario 4 Tv
> Gabriel 5 Cocina
> Mario 6 Cama
> Por ejemplo: REGRESAR.SI("Mario", MI_TABLA, 3) = {"Auto","Tv","Cama"}



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