Jump to content

Función SUMAR.SI para 3 dimensiones


Guest Cacho R

Recommended Posts

Guest Cacho R
Posted

Una referencia del tipo

'Hoja 1:Hoja 12'!F15:G30

se denomina Referencia 3D (sugiero dar un "paseo" atento por el enlace que muestro).

___

De acuerdo a lo que nos informa ese artículo técnico sólo algunas funciones del Excel pueden trabajar sobre referencias 3D.

Una de las que no puede hacerlo es -precisamente- la función SUMAR.SI (SumIf en inglés).

Una alternativa sería utilizar una función personalizada como la que muestro en el archivo adjunto: ¡Espero que sea de utilidad!

Saludos, Cacho R.

SumarSi3D.xls

Posted

Muy bueno Cacho,

Algún día me tocará hacer los deberes y actualizarme porque no sé que son los símbolos "$" y "%" en las declaraciones, ¿Punteros? ¿Referencias absolutas?.

Tampoco se que hace "#" al final del nombre de la función, ¿una función que se pasa por referencia?.

"Application.Volatile", Se me viene a la cabeza mi cerebro volatilizándose xD.

Y ya lo ultimo, "Rng1.Parent.Parent.Worksheets(i).Name", he usado nodechilds en los objetos pero nunca parent, ¿Qué ventajas tiene?

Como ya he dicho, algún día me tocará hacer los deberes en VB por que empiezo a estar muy desactualizado jejeje.

Saludos

Guest Cacho R
Posted
... no sé que son los símbolos "$" y "%" en las declaraciones ...

Créeme, amigo, que hay cosas que son más sencillas de lo que parecen y menos utilizadas de lo que deberían. Por ejemplo:

[TABLE=class: grid, width: 700]

[TR]

[TD]Dim i%

equivale :

Dim i as Integer

ó

Dim Var$

equivale a:

Dim Var as String[/TD]

[TD]Por ello una declaración como:

Dim i%, Var$

equivale a:

Dim i as Integer, Var as String

y así sucesivamente...

Todo lo puedes encontrar -como suele ser habitual- en la ayuda del VBA.[/TD]

[/TR]

[/TABLE]

- Lo de Parent tiene que ver con algo que tú conoces a la perfección: el VBA (Visual Basic for Application) es un lenguaje de programación orientado a objetos, ¿Verdad?...

Y los objetos "no están en el aire": siempre están contenidos en algún lado. Por ejemplo:

- Las celdas (Cells, Range) están contenidas en las hojas de Excel.

- Las hojas de Excel (Worksheets, Sheets) están contenidas en los libros de Excel.

- Los libros de Excel abiertos (Workbooks) están contenidos en la aplicación propiamente dicha (Application).

Así las cosas, Parent nos remite al objeto, control o colección en el que está contenido algo. Entonces si Rng1 es un rango de celdas cualquiera, será:

Rng1.Parent

la hoja en la que el rango Rng1 está contenido

Rng1.Parent.Parent

el libro en el que el rango Rng1 está contenido

y por lo tanto:

Rng1.Parent.Parent.Worksheets(2)

es la segunda hoja del libro en el que el rango Rng1 está contenido

___

Finalmente Application.Volatile se utiliza en las funciones personalizadas (UDF).

¿Para que sirve?... Instruye al VBA que recalcule la UDF cuando otra celda -cualquiera- de la hoja en la que se encuentra la UDF, experimenta -a su vez- algún recálculo.

¿Te sirvió -más o menos- la orientación?

Saludos, Cacho R.

Posted

Vaya que si me sirvió, te explicas muy bien Cacho. Estoy tan acostumbrado a empezar por el objeto de mayor categoría y seguir en subnodos (application.thisworkbook.sheets.range.cell) que se me hace raro ver las llamadas al revés, pero me recuerda a cuando se trabaja con los nodos HTML, ahí es el único caso donde he usado Parent.

Lo de las definiciones Dim está curioso y Volatile es algo que llevaba necesitando mucho tiempo, me encantan las UDF :P-

Muchas gracias por tomarte la molestia de explicármelo Cacho.

Saludos

Guest Cacho R
Posted
... Muchas gracias por tomarte la molestia de explicármelo Cacho.

Como siempre: ¡Un gusto hacerlo!

Posted

alguien me ayuda!! como hago, si escribo varias cantidades en una celda y que estas me las sume y me coloque la suma en otra por ejemplo introduzco 21 en f1 y luego vuelvo a colocar 40, necesito que en la columna a1 aparezca la suma de esos dos valores!! gracias de antemano por su ayuda!!

Posted

Hola, WIWIW te suguiero inicies un nuevo tema, ya que este apartado es para ideas y aportes no para consultas.

Gracias Cacho R, muy buen aporte y gran explicación, me sirven ambos aportes.

Salu2.xlsx

Guest Cacho R
Posted

A raiz de una consulta que me hicieron, me ha parecido útil introducir una "vuelta de tuerca" adicional a lo mostrado.

En el archivo que muestro podemos ver la función personalizada del primer mensaje, y -adicionalmente- una estructura de datos que no requiere del uso de esa UDF.

En efecto: si la cantidad de hojas a considerar dentro del rango 3D es variable, la UDF nos entrega todo su potencial como ya vimos.

Pero si la cantidad de hojas que componen el rango 3D es fijo y predeterminado, entonces una mera fórmula matricial nos resuelve el problema del SUMAR.SI.

Saludos, Cacho R.

SumarSi3D_2.xls

Archived

This topic is now archived and is closed to further replies.

  • 108 ¿Te parecen útiles los tips de las funciones? (ver tema completo)

    1. 1. ¿Te parecen útiles los tips de las funciones?


      • No
      • Ni me he fijado en ellos

  • Ayúdanos a mejorar la comunidad

    • Donaciones recibidas este mes: 0.00 EUR
      Objetivo: 130.00 EUR
  • Files

  • Download Statistics

    • Files
      184
    • Comments
      96
    • Reviews
      28

    More information about "Un juego solitario en Excel"
    Latest File
    By pegones1

    4    0

  • Crear macros Excel

  • Posts

    • Hola. Tu archivo no tiene macros. Sobre las celdas combinadas, ya que no puedes evitar su uso al no ser tus archivos, lo mejor es "des combinarlas" previo a cualquier cosa, incluso en tu misma macro (que no envías). 
    • Hola buenas tardes tengo un archivo en excel que copia varias tablas y las importa a word de manera automatica. Este selecciona las tablas en base a las filas con datos de mi columna C. pueden ser  diferentes rango de tablas. (Pero siempre mi rango es de celdas continuas y con valores continuas) Funciona muy bien. El problema que ahora tengo es que muchos archivos con tablas  tienen las celdas combinadas ya sea horizontalmento o vertical. Aqui es donde empieza mi problema ya que son formatos de origen no puedo modificarlas. Quisiera ajustar mi macro en la parte de seleccion de rango de tablas y que pueda considerar la celdas combinadas y pegarlos en word sin problema. Ya que actualmente no me pone algunas tablas o rangos, o me repite las tablas y no considera las demas. Todo esto a que en algunas no hay valores o las celdas estan combinadas.   Muchas gracias Seleccion automatica de celdas combis.xlsx
    • por si te sirve: la primera matriz (pivotarpor) al inicio los que no tienen profesor asignado (orden ascendente por omision) la segunda (2 matrices y solo unicos) en el orden de aparicion (no asignados al final) la tercera (2 matrices) omite los no asignados (tambien por orden de aparicion) unicos y suma (ayudaExcel).xlsx
    • No se si este tema va aquí, si no es así, pido disculpas. Llevo varios días dando vueltas a un fallo que me sale al exportar una tabla a xml y que no consigo resolver. El fallo que me da es que no las asignaciones no son exportables y al comprobar la asignación me dice datos no normalizados.     Libro1.xlsx
    • Buenas tardes estimado JSDJSD, muchas gracias por responder. En efecto esta parte quedo perfecta. Pero me falto indicar que la macro se ejecute dependiendo de la celda L1 ( Caliza o Mezcla). Entonces si dice Caliza aplica la macro que me enviaste, pero si dice Mezcla que haga lo siguiente: Busque el  ultimo dato de la columna K de la hoja Mezcla Adición del libro Base de datos Cementos producido 2024, con la condición de que la columna B debe ser igual a 4 y el dato lo coloque en la celda N1 de la hoja Cemento del libro Cemento. Te comento que el libro Prehomo y Base de datos Cementos producidos 2024 están en carpetas diferentes ya que estos los maneja otra área, como se enmendaría este caso por el comentarios que me enviaste de la ruta. Saludos y un fuerte abrazo   Cemento-2.xlsm
  • Recently Browsing

    • No registered users viewing this page.
×
×
  • Create New...

Important Information

Privacy Policy