Paraformulas

Como hago en excel lo siguiente:
Tengo 3 datos en a1, a2, a3,(30,25, y 64) única parte donde dígito, quiero lo siguiente:
1- Que cuando digite cualquier dato en columna a, me los ordene en la columna c, en orden desdendente,(64,30 y 25)
2- Que en la columna d, me de el resultado de c/2, en la d c/3, en e c/4, en la f c/4 etc.
3- Que de los datos (12) entre c1 y f3 me escoja el 7o más alto (15) y me lo coloque en la celda a10.
Todo lo anterior que ocurra solo digitando en a1, a2 o a3.
A B C D E F
30 64 32 21 16
25 30 15 10 7
64 25 12 8 6
[email protected]

10 respuestas

Respuesta
1
Me he puesto con ello y tengo algunas cuestiones:
*no entiendo los puntos 2 y 3
*de donde salen los datos de la tabla, ¿son datos fijos?
*en la columna b ¿hay algo?
2- Que en la columna d, me de el resultado de c/2, en la e c/3, en la f c/4 etc. Para las 3 filas d1,d2,d3,e1,e2,e3 y f1,f2,f3
3- Que de los datos (12) entre c1 y f3 me escoja el 7o más bajo (15) de los primeros 7 más altos y me lo coloque en la celda a10.
* LOS DATOS SON CUALQUIERA QUE SE ME OCURRIO PARA HACER UN EJEMPLO DE TABLA Y TENER UNA GUIA.
* EN LA COLUMNA B NO HAY DATOS
He estado dándole vueltas, y no encuentro una función que me permita algo parecido, he intentado crear una función pero no me permite ejecutar determinados pasos dentro, con lo que no me queda otra que crear una macro que deberás ejecutar cada vez que introduzcas nuevo código:
Sub sepnum()
Range("a11") = Range("c1").Value
Range("a12") = Range("c2").Value
Range("a13") = Range("c3").Value
Range("a14") = Range("d1").Value
Range("a15") = Range("d2").Value
Range("a16") = Range("d3").Value
Range("a17") = Range("e1").Value
Range("a18") = Range("e2").Value
Range("a19") = Range("e3").Value
Range("a20") = Range("f1").Value
Range("a21") = Range("f2").Value
Range("a22") = Range("f3").Value
Range("A11:a22").Select
Selection.Sort Key1:=Range("A11"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("a10") = Range("a17").Value
Range("A11:a22").Delete
End Sub
por otro lado las celdas d1:f3 deberan tener antes de la operacion la siguiente funcion:=REDONDEAR.MENOS(+$C1/2;0), con el fin de redondear el valor por abajo como me has dado en el ejemplo
la celda c1 - =max(a1:a3
la celda c2 - =mediana(a1:a3)
la celda c3 - =min(a1:a3)
Comentame lo que quieras y seguimos solucionándolo
un saludo
Respuesta
1
Es fácil. En la celda c1 puedes introducir ésta fórmula:
=K.ESIMO.MAYOR(A$1:A$3;FILA())
En el punto 2 supongo que te has equivocado y que deseas introducir en celdas d1, e1, f1, y g1 las siguientes fórmulas respectivamente (corrígeme si no):
=C1/2
=C1/3
=C1/4
=C1/5
Sólo tienes que extender éstas fórmulas hasta la fila 3 (en total consigues 15 fórmulas). Y por último, en a10 puedes introducir ésta fórmula:
=K.ESIMO.MAYOR(D1:G3;7)
Que te dará el 7º valor más alto del rango d1:g3
Dime si responde a lo que deseabas. Saludos.
Rsanti
PD.: Te envío un archivo por si deseas ver dos posibilidades distintas sobre lo que querías hacer (en Hoja1 y Hoja2).
Aclaro pregunta punto 2 y 3:
2- Que en la columna d, me de el resultado de c/2, en la e c/3, en la f c/4 etc. Para las 3 filas d1,d2,d3,e1,e2,e3 y f1,f2,f3
3- Que de los datos (12) entre c1 y f3 me escoja el 7o más bajo (15) de los primeros 7 más altos y me lo coloque en la celda a10.
Me agrada las fórmulas que me ha hecho llegar por ahora.
Por lo que veo sobran las fórmulas de la columna g, sólo tienes que seleccionar esas celdas y Edición / Borrar / Todo.
En la celda a10 si quieres el 7º valor más alto... debes introducir ésta fórmula:
=K.ESIMO.MAYOR(C1:F3;7)
o ésta otra si quieres el 7º valor mas bajo:
=K.ESIMO.MENOR(C1:F3;7)
Como verás sólo tienes que modificarlo un poco.
Te envío otro ejemplo por correo. Pienso que se adaptará a lo que buscas.
Respuesta
1
Temo que un día un usuario me pida que al clic de un botón Excel largue un capuchino... jajaja
Bueno, lindo desafío para un fin de semana. Espero que esto sea lo que necesites.
Alt+F11 para llamar al Editor, seleccioná la hoja donde van a estar los datos y ahí lo pegas.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim RangCtrl As String
Dim EnRango As Variant
RangCtrl = "A1:A3"
Set EnRango = Application.Intersect(Range(RangCtrl), Target)
If Not EnRango Is Nothing Then
Application.ScreenUpdating = False
Range("A1:A3").Select
Selection.Copy Destination:=Range("C1")
Range("C1:C3").Select
Selection.Sort Key1:=Range("C1"), Order1:=xlDescending
Range("D1").Select
ActiveCell.FormulaR1C1 = "=+RC[-1]/2"
Range("E1").Select
ActiveCell.FormulaR1C1 = "=+RC[-2]/3"
Range("F1").Select
ActiveCell.FormulaR1C1 = "=+RC[-3]/4"
Range("D1:F1").Select
Selection.AutoFill Destination:=Range("D1:F3"), Type:=xlFillDefault
Range("C1:F1").Select
Selection.Copy
Range("G1").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("C2:F2").Select
Selection.Copy
Range("G5").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("C3:F3").Select
Selection.Copy
Range("G9").Select
Selection.PasteSpecial Paste:=xlValues, Operation:=xlNone, SkipBlanks:= _
False, Transpose:=True
Range("G1:G12").Select
Selection.Sort Key1:=Range("G1"), Order1:=xlDescending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("G7").Select
Selection.Copy
Range("A10").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("G1:G12").ClearContents
Application.ScreenUpdating = True
End If
End Sub
Utilicé una columna adicional, la G, si está ocupada tendrás que modificar donde veas G por otra letra.
Pruébala y por favor no olvides finalizar si todo está OK
Respuesta
1
Te acabo de enviar el archivo de ejemplo, lo hice mediante una macro que considero es la manera más sencilla de obtener los que me indicaste.
Solo captura los datos de A1 A2 y A3 y después de ello, presiona el botón "Calcular Celda A10".
Espero que te sirva y por favor, no olvides finalizar la pregunta.
Respuesta
1
Recién vuelvo de mi fin de semana y encontré tu pregunta.
Suena a una tarea que deberías resolver tu mismo, investigando y estudiando y no "copiar" de otros.
Podría darte una solución que involucre la utilización de macros (programas de Visual Basic) pero por lo básico de las otras preguntas, asumo que deberías dar una respuesta simplemente basadas en fórmulas.
Así el primer punto puedes resolverlo con funciones de MAX() y MIN() o, mejor con la función especial K.ESIMO.MAYOR()
Así en C1 deberías colocar esta fórmula:
=K.ESIMO.MAYOR($A$1:$A$3,1)
[Considera si sueles usar comas o punto y coma para separar argumentos de las funciones. Yo usé ","]
Asígnale el formato deseado y, luego, copia esta celda y pégala para los otros dos valores.
Edita la celda C2 y donde decía:, 1) coloca, 2
=K.ESIMO.MAYOR($A$1:$A$3,2)
Otro tanto con la tercera fórmula, para que quede:
=K.ESIMO.MAYOR($A$1:$A$3,3)
De esta manera habrás aprendido, también que usando el signo $ para filas y columnas puedes copiar la fórmula y el rango será el mismo en todas ellas (pruba hacerlo sin el signo $, y obeserva qué ocurre).
En este sentido, también puedes aplicarlo para resolver el segundo punto de tu trabajo:
En la celda D1 ingresa esta función:
=$C1/2
Nota que el signo $ sólo afecta a C (columna).
Si copias esta fórmula a la celda E1 y cambias el 2 por un 3 tendrás:
=$C1/3
Igual para la columna F, quedándote:
=$C1/4
Ahora selecciona estas tres celdas (D1 a F1) y copia esas celdas, pegándolas hacia abajo.
¿Qué pasó? En D2 ahora tendrás:
=$C2/2
Es decir que la columna quedó igual pero cambió la celda.
Así habrás completado tu segundo punto.
La tercera pregunta puedes resolverla fácilmente si utilizas nuevamente la fórmula que te sugerí para resolver el primer punto.
En A10 escribe la siguiente fórmula:
=K.ESIMO.MAYOR(C1:F3,7)
Así obtendrás el séptimo valor en importancia dentro del rango que le indicaste.
Graba el archivo.
Así tendrás tu hoja formulada. Al cambiar los valores en las celdas A1:A3 estás fórmulas modificarán automáticamente sus resultados.
Como ves, no fue necesario desarrollar macro alguna para resolverlo.
Espero, Miguel, que esto te ayude a *aprender* y no solamente a completar una tarea...
Ademas de ayuda se convierte en verdadero catedrático, me deja más que satisfecho tolo lo realizado para darme respuesta, que estas 5 estrellas ojalá pudieran vales 1.000 puntos, Gracias
Respuesta
1
Muy bien,, para ello hay que desarrollar una macro... para ello enviame el archivo y con gusto te colaboro.
[email protected]
Respuesta
1
La verdad es que son una serie de ordenes y ocupando fórmulas de excel, no creo necesario ninguna macro. El punto es que explicarte en detalle cada paso que quieres hacer será muy largo. No es nada de difícil, te recomiendo que le preguntes a algún amigo que sepa excel y te lo resolverá en un ratito.
Por otro aldo, te mando el manual de macros para que lo tengas.
Mucha Suerte.
Rowen.
Respuesta
1
Ya esta hecho, en este momento te lo estoy enviando por correo electrónico para que lo revises.
Me parece que quedó bien, revísalo y me cuentas. Por favor no olvides finalizar la pregunta y por favor en tu valoración dime que aplicabilidad tiene eso o para que lo usas pues nunca me habían solicitado algo similar y mi idea de esto es aprender cada día un poco más.
Respuesta
1
El trabajo esta, si entiendo bien, solamente en ordenar la columna B, ya que lo demás se despernde de ello.
Esto lo puedes hacer con un IF. O un condicional.
En cuanto lo de buscar 7mo más bajo, creo que matemáticamente el valor siempre estaría en la misma celda, por lo cual puedes solo colocar un link contra la misma.
Respuesta
1
Miguel, te estoy mandando mando un correo

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas