Cálculo en la celda activa en Excel

Resuelto
touroul -  
touroul Mensajes publicados 526 Fecha de registro   Estado Miembro Última intervención   -
Hola a todos.

En Excel, quiero crear una celda que contenga un cálculo dependiente de la celda activa.
Me explico:
En A3, por ejemplo, quisiera mostrar el resultado del cálculo A1+A2 si estoy en la celda A2.
En resumen, si estoy en A2, la celda A3 debe mostrar el resultado de =SOMME("celda activa"-DESPLAZAMIENTO("celda activa"-1 celda")
Uff, así no está fácil ...
¿Alguna ayuda por favor? Estoy atascado ...

Configuración: Windows 7 / Firefox 12.0

17 respuestas

  1. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    Hola

    si he entendido bien, con una macro para colocar en el módulo de la hoja (modificar la constante plage)

    Const plage = "A1:A10" Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range(plage)) Is Nothing Then If Target.Row = 1 Then Exit Sub Else Target.Offset(1, 0).Value = Target.Value + Target.Offset(-1, 0) End If End If End Sub

    buena continuación
    0
  2. touroul
     
    ¡Uf! Gracias por este inicio de respuesta.
    Es el momento de zambullirme en las macros.
    Así que creé esta macro (pestaña Desarrollador > Macro)
    Le di el nombre "KM" a esta macro, copié tu código.
    Cerré para volver a mi hoja de cálculo.
    Luego hice clic en "Macros" y KM desapareció...
    Por otro lado, ¿a qué corresponde "A1:A10"?

    ¡Gracias por responder!
    0
  3. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    re

    1. primero hay que comprobar si he entendido bien tu pregunta: la selección de una celda del rango provoca la suma de la celda activa y la que está encima, y coloca el resultado en la celda de debajo (de la celda activa)
    https://www.cjoint.com/?0Eik5r6oIYo

    2. si es así
    2.1. la macro debe copiarse tal como está en el módulo de la hoja donde debe aplicarse (clic derecho en la pestaña/ver código)
    2.2. la macro se aplicará aquí, únicamente en el rango "A1:A10"; tú debes modificar este rango según tus necesidades

    buena continuación
    0
  4. touroul
     
    De acuerdo, de acuerdo ...
    Gracias ccm81

    Para mayor simplicidad, adjunto una parte de mi archivo:

    http://cjoint.com/?BEilr5NJzAT

    Cuando hago clic en E3, quiero que en A1 aparezca el resultado del cálculo E3-C3
    Cuando hago clic en E4, quiero que en A1 aparezca el resultado del cálculo E4-C4

    Aquí está el resultado más concreto que se desea obtener.
    Seguramente es más sencillo con un ejemplo
    0
  5. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    re

    1. no puedo leer tu archivo, si debes enviarlo, ponlo en formato Excel 2003
    2. ¡tu solicitud ya no es exactamente la misma!
    3. el código es aún más simple (aplicado al rango E1:E10)

    Const plage = "E1:E10" Private Sub Worksheet_SelectionChange(ByVal Target As Range) If Not Intersect(Target, Range(plage)) Is Nothing Then Range("A1").Value = Target.Value - Target.Offset(0, -2) End If End Sub


    buena continuación
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      Hola a todos,

      ¿por qué todo esto en VBA para la pregunta 1?
      =SUMA($A$1:A2)
      ¿copiar hacia abajo no basta?

      eric
      0
  6. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    hola eric

    aparentemente, #4, touroul quiere el resultado de su resta en A1 sin importar la celda que se haga clic en la columna E

    buen provecho
    0
    1. eriiic Mensajes publicados 24581 Fecha de registro   Estado Colaborador Última intervención   7 281
       
      I was talking about the first question, something escapes me but it's okay...
      0
  7. touroul
     
    Me reincorporo, perdón, había ido a bañar a mis hijas...
    Efectivamente, es bien introducir la variabilidad de la célula activa lo que hace el problema complejo.
    Aquí está mi archivo simplificado en versión Excel 2003:
    http://cjoint.com/?BEimv4vhxJb
    Es verdad, había hecho el problema más complicado de lo que realmente es!

    Bien, me atasco con un problema simple:
    No sé cómo grabar una macro:
    He mostrado la pestaña Desarrollador, hago clic en Macros, la nombro "KM", modifico su contenido con el código suministrado, guardo el archivo, cierro VBA, y una vez en mi hoja, mi macro no aparece.
    OK, tengo avances, pero ahí me deprimo.
    Me gustaría poder crear Victoria (¡y más aún un 8 de mayo ...)
    ¡Ayuda!
    0
  8. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    re

    1. no has leído bien mi publicación 3 (2.1.) acerca del módulo de hoja
    2. tu archivo actualizado (clic derecho sobre la pestaña de la hoja/ver código y modificar el rango)
    https://www.cjoint.com/?0EinbojDpjD
    3. también se puede nombrar el rango E3:Exx de forma dinámica para evitar tener que modificar la constante (un inserto de fila se tiene en cuenta automáticamente)
    https://www.cjoint.com/?0EinlHEvwXK
    4. no es motivo para desanimarse
    5. ánimo para la “creación” de la Victoria
    bonne suite
    0
  9. touroul
     
    ¡GUAU! ¡Funciona!
    He elegido el segundo código.
    Me queda adaptarlo a mi hoja.
    Estoy trabajando en ello y les enviaré una respuesta esta noche.
    No tengo mucho que aportarles a cambio de su ayuda, excepto mi gratitud por este apoyo gratuito y desinteresado.
    Prometo decirles cómo voy.
    No pueden imaginarse lo que me aporta el placer de progresar en Excel.
    0
  10. touroul
     
    Bien, acabo de dedicarle 2 horas sin éxito.
    Tanté la ingenuidad de pensar que proponiendo una tabla simplificada lograría adaptar el código a la tabla original... ¡error!
    No me las arreglo.
    Esta vez adjunto el archivo completo, con algunas explicaciones sobre el objetivo a alcanzar:
    Versión Excel 2003: http://cjoint.com/?BEiqDs5VXNR
    Versión Excel 2010 con macros: http://cjoint.com/?BEiqEQMVVFj

    Así que aquí está el objetivo preciso de la manipulación, que debería facilitarme la vida.
    Primera cosa: no quiero engordar mi tabla con tres columnas que contengan el cálculo mencionado, sabiendo que lo voy anotando a mano cuando voy en coche. Por eso la presencia en A1 de este cálculo "flotante" :
    - Al hacer clic en una celda de la columna F3 a F5000, mostrar en A1 el cálculo F3-C3 (F4-C4, etc ...)
    - Al hacer clic en una celda de la columna L3 a L5000, mostrar en A1 el cálculo L3-F3 (L4-F4, etc ...)
    - Al hacer clic en una celda de la columna P3 a P5000, mostrar en A1 el cálculo P3-L3 (P4-L4, etc ...)

    ¡Ya está!
    Si este fragmento de código no es demasiado difícil de escribir, aquí está lo que podría romperse la cabeza! De antemano, muchas gracias.

    Mi configuración: Windows 7 64bits, Excel 2010.
    0
  11. ccm81 Mensajes publicados 11033 Estado Miembro 2 434
     
    re

    el código es del mismo tipo para cada una de las 3 franjas involucradas

    V1. con franjas fijas (líneas 3 o 5 a 5000 - un clic después de la última celda llenada genera 0)
    https://www.cjoint.com/?0EirWQyvEmh

    V2. con franjas dinámicas (un clic después de la última celda llenada no genera nada)
    https://www.cjoint.com/?0EiseeSABUg

    Resto por supuesto por comprobar ....

    buena continuación
    0
  12. touroul
     
    Genial, casi el resultado correcto. Muchas gracias. Dos observaciones, sin embargo:
    1- El cálculo no funciona en la columna P si no hay una segunda etapa, es decir, si la columna L está vacía. ¿Podemos añadir una condición para que, en la columna P, se calcule Px-Fx si Lx está vacía?
    2- En la versión V2, cuando selecciono una columna que contiene Km (F, L, P), me aparece el siguiente mensaje de error:
    -------------
    Error de ejecución '13'
    Incompatibilidad de tipos
    -------------
    ¿Puede ser que el código no esté definido hasta la última celda de la columna? (la de la fila 1 048 576)

    Prometo dejar de pedir ayuda después de esto, ya me has ayudado mucho.
    Aquí está la nueva versión del archivo: http://cjoint.com/?BEitmnI9dg6
    Marc
    0
  13. touroul
     
    Querido CCM81

    Buen provecho para ti también, con nosotros es comida de un servicio de catering chino, ¡mmmhm!
    Si los cálculos comienzan en la línea 5 no tiene ninguna importancia (son mis primeros días en este puesto ...)

    Buena noticia: ya no hay ningún problema, es lo que buscaba al 100%

    No puedo hacer más que agradecer y rendirme ante el talento!

    Si puedo ayudarte a mi vez (HTML, Windows, búsqueda de empleo en biología, ...) no dudes.

    ¡Hasta pronto! Haré una última respuesta después de unos días de uso.

    ¡Buenas noches
    Marc
    0
  14. touroul Mensajes publicados 526 Fecha de registro   Estado Miembro Última intervención   17
     
    Tengo otra petición...
    En el archivo: https://www.cjoint.com/?BEptCHJTkdi
    en caso de ausencia de datos en las columnas F y L, ¿puedes colocar en A1 el cálculo: (Px-Cx)/2 ?
    ¡Gracias de antemano!

    Marc
    0
  15. touroul Mensajes publicados 526 Fecha de registro   Estado Miembro Última intervención   17
     
    Una vez más, es perfecto.

    Servicio rápido además.

    Buena noche para ti, yo voy a dejar mis 3 PC que me consumen tiempo y a ir a ver una película ...

    Buena noche para ti y para los tuyos y muchas gracias de nuevo.

    Marc
    0