Fórmulas matriciales

23/11/2008 - 23:18 por Francesca Brasso | Informe spam
Hola ¿alguien me podría explicar que devuelve y por qué la siguiente fórmula
matricial? (está en la columna EW):
{=SI(MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))=0;"";INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))))}

y también esta otra que está en la columna siguiente a la anterior (columna
EX):
{=SI(EW7="";"";INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))+1))}

Gracias
Frn

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
24/11/2008 - 03:13 | Informe spam
hola, Francesca !

1) las formulas crean una matriz iniciando en la columna R (18)
2) a cada columna se suma 2 (por lo que la primer columna -18- se convierte en 20)
3) despues, descartan las columnas a solo los multiplos de 10 (lo que hace la funcion residuo)
4) de lo anteiror, las formulas solo buscan en 12 columnas: R, AB, AL, AV, BF, BP, BZ, CJ, CT, DD, DN, DX
5) la primer formula identifica cual es la (maxima) columna cuyo contenido sea diferente de "" (vacio ?)
una vez encontrado, la funcion indice(... devuelve su contenido
6) la segunda formula devuelve el contendo de la celda en la columna "siguiente" (de la formula anterior)

OJO: podrias usar solo la segunda parte de cada formula omitiendo la condicional y la cadena de texto de longitud 0 =si(..."")
si no se encuentra nada en el rango de busqueda, ambas formulas devolverian 0 (cero) que puedes ocultar (p.e.)
desde (menu) herramienas / opciones / (ficha) ver / (seccion) opciones de ventana / desmarca la casilla de "valores en cero"

saludos,
hector.

__ OP __
alguien me podria explicar que devuelve y por que la siguiente formula matricial? (esta en la columna EW):
{=SI(MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))=0;"";INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))))}

y también esta otra que está en la columna siguiente a la anterior (columna EX):
{=SI(EW7="";"";INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))+1))}
Respuesta Responder a este mensaje
#2 Francesca Brasso
24/11/2008 - 15:52 | Informe spam
Gracias por la explicación Héctor. Lo único que no entiendo es por qué se
convierte el 18 en 20. Lo otro que si quisiera que la fórmula busque en las
columnas T a DZ ¿cómo quedaría ?
Frn


"Héctor Miguel" escribió en el mensaje de
noticias news:
hola, Francesca !

1) las formulas crean una matriz iniciando en la columna R (18)
2) a cada columna se suma 2 (por lo que la primer columna -18- se
convierte en 20)
3) despues, descartan las columnas a solo los multiplos de 10 (lo que hace
la funcion residuo)
4) de lo anteiror, las formulas solo buscan en 12 columnas: R, AB, AL, AV,
BF, BP, BZ, CJ, CT, DD, DN, DX
5) la primer formula identifica cual es la (maxima) columna cuyo contenido
sea diferente de "" (vacio ?)
una vez encontrado, la funcion indice(... devuelve su contenido
6) la segunda formula devuelve el contendo de la celda en la columna
"siguiente" (de la formula anterior)

OJO: podrias usar solo la segunda parte de cada formula omitiendo la
condicional y la cadena de texto de longitud 0 =si(..."")
si no se encuentra nada en el rango de busqueda, ambas formulas
devolverian 0 (cero) que puedes ocultar (p.e.)
desde (menu) herramienas / opciones / (ficha) ver / (seccion) opciones
de ventana / desmarca la casilla de "valores en cero"

saludos,
hector.

__ OP __
alguien me podria explicar que devuelve y por que la siguiente formula
matricial? (esta en la columna EW):
{=SI(MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))=0;"";INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))))}

y también esta otra que está en la columna siguiente a la anterior
(columna EX):
{=SI(EW7="";"";INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0))+1))}




Respuesta Responder a este mensaje
#3 Héctor Miguel
24/11/2008 - 20:56 | Informe spam
hola, Francesca !

... Lo unico que no entiendo es por que se convierte el 18 en 20.



donde la columna "R" (18) se convierte en 20 proviene de esta parte de la formula que expusiste...
" ... COLUMNA(R7:DX7)+2 ... "

Lo otro que si quisiera que la formula busque en las columnas T a DZ como quedaria ?



T es la columna 20 y DZ es la columna 130 (por lo que no se requiere "ajuste" a la funcion columna)
modifica la parte central de tu formula +/- a lo siguiente:
de: -> INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0)))
a: -> INDICE(7:7;MAX(COLUMNA(T7:DZ7)*(T7:DZ7<>"")*(RESIDUO(COLUMNA(T7:DZ7);10)=0)))

saludos,
hector.
Respuesta Responder a este mensaje
#4 Francesca Brasso
24/11/2008 - 21:36 | Informe spam
Lo siento Héctor, no me expresé bien, entiendo que el 18 se convierte en 20
por el COLUMNA(...)+2, lo que quiero saber es por qué hay que convertir el
18 en 20, cual es el sentido de eso dentro de la formula, eso es lo que no
me deja tranquila.
Gracias tambien por tu ayuda en la modificación para las col. T a DZ.
Frn


"Héctor Miguel" escribió en el mensaje de
noticias news:%
hola, Francesca !

... Lo unico que no entiendo es por que se convierte el 18 en 20.



donde la columna "R" (18) se convierte en 20 proviene de esta parte de la
formula que expusiste...
" ... COLUMNA(R7:DX7)+2 ... "

Lo otro que si quisiera que la formula busque en las columnas T a DZ como
quedaria ?



T es la columna 20 y DZ es la columna 130 (por lo que no se requiere
"ajuste" a la funcion columna)
modifica la parte central de tu formula +/- a lo siguiente:
de: ->
INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0)))
a: ->
INDICE(7:7;MAX(COLUMNA(T7:DZ7)*(T7:DZ7<>"")*(RESIDUO(COLUMNA(T7:DZ7);10)=0)))

saludos,
hector.

Respuesta Responder a este mensaje
#5 Héctor Miguel
24/11/2008 - 21:57 | Informe spam
hola, Francesca !

... entiendo que el 18 se convierte en 20 por el COLUMNA(...)+2
lo que quiero saber es por qué hay que convertir el 18 en 20
cual es el sentido de eso dentro de la formula, eso es lo que no me deja tranquila...



o quiza yo entendi mal la pregunta ?... pero, de la formula que expusiste originalmente...
INDICE(7:7;MAX(COLUMNA(R7:DX7)*(R7:DX7<>"")*(RESIDUO(COLUMNA(R7:DX7)+2;10)=0)))



- para poder considerar datos a intervalos de cada 10 se utiliza la funcion residuo(<rango>;10)=0
- si necesitas incluir desde la primer fila/columna con datos (en este caso la columna R es la # 18)
es necesario "ajustar la cuenta" para que el pirmer dato "coincida" con multiplos de 10 (18 + 2)

saludos,
hector.
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida