¿Buscarv + función si en Matriz? ¿




 Me gustaría poder usar las funciones excel, sin irme a lo que es ya programación, para intentar hacer lo siguiente. Dispongo de una matriz, donde en Y tengo dos campos y en POR un campo, y me gustaría que en una celda, según si se cumple por e y me muestre el valor de esa matriz... Ejemplo:  
                                     A B C D  




 gato amarillo 10 4 5 6  
perro amarillo 2 5 4 5  
loro rojo 2 1 2 2  
serpiente verde 2 3 4 3  
Por ejemplo me gustaría que si yo en la celda A1 introduzco: A, en la celda A2 introduzco:gato y en la celda A3 introduzco: amarillo. En la celda A4 apareciera el 10, que es el valor correspondiente de la matriz.
Es sencillo. Vamos a resolverlo. Te sugiero que lo resuelvas siguiendo con la explicación que te detallare:  
Abrir un libro nuevo "Libro 1", ahora situemosno en "Hoja 1". Vamos a trabajar en esa hoja, pero en la parte superior izquierda.  
Tenemos 3 condiciones que se tienen que cumplir (Animal, color y letra) para que me de Numero (como resultado)  
En la columna A, digitamos "**Animal/gato/perro/loro/serpiente**"  
En la columna B, digitamos "**Color/amarillo/amarillo/rojo/verde**"  
En la columna C, digitamos "**A/10/2/2/2**"  
En la columna D, digitamos "**B/4/5/1/3**"  
En la columna E, digitamos "**C/5/4/2/4**"  
En la columna F, digitamos "**D/6/5/2/3**"  
  
******Lo que esta esta escrito en "**negrita**" son los datos como veras, que en este mensaje lo he ordenado horizontalmente, pero en la hoja de Excel deberas ordenarlo de arriba hacia abajo de manera vertical (tal como tu lo has hecho)  
Podemos concluir que nuestro rango de datos es de A1:F5  
Nuestro reporte lo vamos a hacer en la misma hoja de calculo. Digitar los siguientes valores en:  
En la fila 9 >>> A9: **Animal** / B9: **Color** / C9: **Letra** / D9: **Numero**  
En la fila 10 >>> A10: **gato** / B10: **amarillo** / C10: **D**  
Lo que esta en negrita son nuestros títulos de columnas y valores están en negrita (en este caso los criterios que se tienen que cumplir)  
***La celda **D10** por lo pronto estara vacia (esta sera la celda donde queramos que nos de el resultado)   
Si hasta aquí hemos hecho bien todo, el resto sera sencillo.  
Ahora selecionemos TODA la "columna C" hagamos click DERECHO y seleccionar la opción "Insertar". Esto hará que las columnas de Animal y Color permanezcan igual. El resto se ha desplazado a la derecha.  
Coloquemos un titulo para la columna vacía que se acaba de insertar.   
En C1 y en C9 digitemos **Combinado**  
Ahora, en C2 vamos a escribir la siguiente fórmula:  
**=A2&B2**  
Esto hará que se concatene el valor de la celda A2 y de la celda B2. Aparecerá en C2: **gatoamarillo**  
Es verdad, no tiene espacio entre las palabras gato y amarillo. No importa, dejémoslo así.  
Rellenar ahora las celdas utilizando el cuadro de relleno desde C2 hasta C5  
Hacer el mismo procedimiento para la celda C10. La fórmula para C10 seria (igual que la anterior). Seria la siguiente:  
=A10&B10  
Lo que viene es la parte final del problema  
Situemosno en la celda E10 y escribamos la siguiente fórmula tal como esta (idéntica)  
**=BUSCARV(C10, C1:G5, COINCIDIR(D10, C1:G1, 0), FALSO)**  
OJO: El Excel que yo tengo ahora esta configurado para que el separador de argumentos en la fórmulas sea "LA COMA" (,). Si en tu caso fuera el "PUNTO Y COMA" (;). Entonces deberás cambiar la (,) por el (;) en la fórmula que te acabo de dar.  
Listo!  
Ahora puedes escribir A10 **loro** por ejemplo, en B10 **rojo** y en D10 **D**, el resultado deberá ser **2**  
Si gustas puedes **OCULTAR** la columna C, haciendo esto no afectara en nada los cálculos.  
Espero haber colaborado contigo. Mi explicación es muy detallada. Te sugiero que lo hagas para que puedas hacerlo y comprender.  
Espero haberte ayudado.  
No te olvides de finalizar y puntuar. De otro modo Todoexpertos no podrá hacer que realices una consulta a otro experto.  
Saludos,  
Christian  
[[email protected]](/cdn-cgi/l/email-protection)
amigos les comparto la solución:

si alguien conoce que valores se le puede poner al campo i\_sgfunct por que con la “c” te muestra el paso a paso del proceso.

observen:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/c/5/c5599222f216c73cbaa60eba0c4ce2d109725223.png "image")
[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/f/0/f068ab9b0e27a375b953093037dd8a7bd1072a30.png "image")
[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/d/4/d448f934275234f3c7f8757fb1d4963123777dc9.png "image")

paso 1:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/9/b/9bcdcb9a236d604a71fd0e56bc2ca844d5fc8f4b.png "image")

paso 2:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/e/8/e859f68266fadd858aca3fef5ad15782fd65df02.png "image")

paso 3:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/c/f/cf4eaa2b483c117668b07c17e8e93c6d503ef805.png "image")

paso 4:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/0/f/0f52f083bd907828651e6fe3c760eb3e7c6fb977.png "image")

paso 5:

[[image]](https://foros.consultoria-sap.com/uploads/db7262/original/3x/0/7/07422411c986279788cc7ce415eb5e8f266280b3.png "image")

paso… no cursor, mientras lazo, o por el usuario función necesaria.sólo necesito ser creativo con for xml y trayectoria.[nota: esta solución sólo funciona en sql 2005 y posteriores. pregunta original no ha especificado la versión en uso.]create table #yourtable ([id] int, [name] char(1), [value] int) insert into #yourtable ([id],[name],[value]) values (1,'a',4) insert into #yourtable ([id],[name],[value]) values (1,'b',8) insert into #yourtable ([id],[name],[value]) values (2,'c',9) select [id], stuff(( select ', ' + [name] + ':' + cast([value] as varchar(max)) from #yourtable where (id = results.id) for xml path(''),type).value('(./text())[1]','varchar(max)') ,1,2,'') as namevalues from #yourtable results group by id drop table #yourtable intuyo que quieres desarrollar un simulador con algun lenguaje de programación, ¿es correcto?

si es así, deberás saber que existen dos tipos de notaciones para los movimientos de las piezas:

1. notación descriptiva, se presta a confusiones pues cada jugador numera sus filas del 1 al 8 desde su lado y cada vez más en desuso, por lo que solo la mencionamos y

2. notación algebraica

cada una de las sesenta y cuatro casillas de un tablero de ajedrez es identificada con dos caracteres de manera única. el primer carácter identifica la columna de la casilla, y se representa por una de las siguientes letras minúsculas a, b, c, d, e, f, g y h, ordenadas desde la izquierda del jugador con piezas blancas hasta su derecha. el segundo carácter de una casilla indentifica su línea (fila) y se representa por un número del 1 al 8, en orden ascendente, desde el lado del jugador de piezas blancas hasta el lado jugador de piezas negras. las casillas, en la posición inicial, de algunas piezas son: torre del lado de la dama blanca a1, dama blanca d1, torre del lado del rey negro h8.

cada pieza tiene una letra mayúscula asociada, y varía en función del idioma del anotador, en español se utilizan r, d, t, a y c, respectivamente, para el rey, la dama, la torre, el alfil y el caballo. los peones no tienen asociados ninguna letra.

así 1. e2-e4 denotará que el peón que se encuentra en la casilla e2 ha sido movido a e4, habitualmente se omite la casilla de partida y se infiere por la casilla de llegada. nc3 será el caballo a la posición c3.

en fin, todo esto lo puedes hallar en cualquier libro elemental de ajedrez, o en línea en:

 http://es.wikipedia.org/wiki/notaci%c3%b3n\_algebraica\_(ajedrez)

lo interesante será "enseñar" a tu modelo de simulación las reglas del juego y como reconocer una jugada válida.

podré darte más ayuda si especificas mejor tu pregunta.
yo simule hace mas de 30 años un programita parecido, usando fortran iv y lo hice con un arreglo bidimensional de 8 x 8, todo lo que pude avanzar fue que el programita revisara la validez de la movida propuesta y dar respuestas correcto o incorrecto, pues en ese entonces la máxima interactividad que había con la computadora era a través de tarjetas perforadas!

toda una brecha generacional no??!!!

ahora me divierto muchísimo jugando en línea contra rivales, humanos o máquinas y la verdad es que la oferta de programas interesantes sobrepasa el tiempo que se le puede dedicar.

ojala, sea lo que requieres.
saludos, rojo y amarillo=positivo negro=negativo dos verdes=parlante dos blanco=parlante dos gris=parlante dos violeta=parlante... fíjate si coinciden los colores. QUIERO SABER PARA QUE SIRVE CADA UNA DE LAS TECLAS DE LA CALCULADORA...OK.. también si no tiene mucho espacio tras el tablero conectas el rca que ya tienes y en la cajuela haces la división con y pero de hembra a 2 machos, como te sea mas practico. vea este artículo <http://msdn.microsoft.com/en-us/library/bb738695.aspx> y <http://msdn.microsoft.com/en-us/library/bb386870.aspx> muestra acerca de la actualización con EF.   
 Y esta pregunta SO sobre ApplyCurrentValues: [ApplyCurrentValues en EF 4](https://stackoverflow.com/questions/2272325/applycurrentvalues-in-ef-4) para ver cómo trabajar con AppliCurrentValues. x²+8x+15/x+4 por x/x²+3x por x²-16/x+5

factorizando todo queda

(x+3)(x+5) / (x+4) por x / x (x+3) por (x+4) (x-4) / (x+5)

simplificando lo que más se puede da 

x - 4

ojalá te quede claro básicamente, se crea una función de interfaz:public interface func { public out apply(in in); } y, a continuación, pasar una subclase anónima a través de su método.su método se podría aplicar la función a cada elemento en el lugar:public static void applytolistinplace(list list, func f) { listiterator itr = list.listiterator(); while (itr.hasnext()) { t output = f.apply(itr.next()); itr.set(output); } } // ... list mylist = ...; applytolistinplace(mylist, new func() { public string apply(string in) { return in.tolowercase(); } }); o crear un nuevo list (básicamente la creación de una asignación de la lista de entrada a la de salida de la lista):public static list map(list in, func f) { list out = new arraylist(in.size()); for (in inobj : in) { out.add(f.apply(inobj)); } return out; } // ... list mylist = ...; list lowercased = map(mylist, new func() { public string apply(string in) { return in.tolowercase(); } }); que uno es preferible depende de su caso de uso. si la lista es muy grande, en lugar de la solución puede ser la única solución viable; si usted desea aplicar a muchas funciones diferentes a la misma lista original para hacer muchas otras listas, usted va a querer la map versión. bueno...el segundo primero....
los numeros son: x-1, x, x+1
sus cuadrados:: (x-1) al cuadrado+x(al cuadrado)+(x+1)al cuadrado
xª-2x+1+xª+xª+2x+1=77
3xª+2=77
3xª=75
x=5
los numeros son 4,5 y 6...........
ahora el primero es muy dificil de explicar...tratare de hacerlo...
2x+2y=5
xy=1.44
x=1.44/y
reemplazando en la primera ecuación
2(1.44/y)+2y=5
resolviendo....
una ecuacion cuadratica::: 2yª-5y+2.88....((yª=y al cuadrado es que no se como se pone al cuadrado))
sale que y=0.9 o 1.6....
esas son las dimensiones del marco...0.9*1.6cm