Saltar al contenido
View in the app

A better way to browse. Learn more.

Ayuda Excel

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Curioso. Función VBA en una hoja y me modifica todas las del libro

publicado

Hola Buenas, tengo un problema. He generado en una hoja, una tabla con personal y funciones. He creado despues una funcion en VBA que según aparezca en una celda SI/No (Dependiendo si el personal está trabajando o no), me hace unos cálculos de sumarme unas celdas (me calcula si el operario realiza una actividad o no), y me saca un total (que es donde tengo puesta la función).

 La función va bien, el problema es que esa hoja la voy repitiendo cada mes, y si actualizo las formulas de la pestaña del último mes, pulsando CTRL+ALT+F9, me modifica los datos de todos los meses anteriores, dejándome en las celdas, los valores del ultimo mes en todas las hojas. Es decir, si yo calculo Enero pulsando CTRL+ALT+F9, me salen los valores de Enero correctos, pero si voy al ultimo mes y actualizo, me calcula bien los del ultimo mes, pero si voy a la pestaña de Enero, me ha puesto los datos del ultimo mes en todas. 

 

La función es esta: 

 

'Si tenemos las celdas, como (i,j)>> (fila, columna)
'
'    fila As Integer       > Campo que indica el numero de fila donde se empieza a evaluar
'    columna As Integer    > Campo que indica el numero de columna donde se empieza a evaluar
'    iteraciones As Integer                 > Nº de veces que se va a preguntar la condición
'    columna_evaluacion As Integer          > Columna donde se encuentra la celda a evaluar con su contenido
'    valor_evaluación as String             > Valor a evaluar "SI"

Function Contar_Polivalencia_verde(fila As Long, columna As Long, iteraciones As Long, columna_plantilla As Long) As Long

'inicializo la variable resultado
Dim resultado As Long
Dim i As Long
i = fila
resultado = 0
 
    'comienzo el bucle
    For i = fila To iteraciones    
        If Cells(i, columna_plantilla).Value = "SI" And Cells(i, columna).Value = "SI" Then   'criterio que debe cumplir                
                     resultado = resultado + 1
                     End If
    Next
               Contar_Polivalencia_verde = resultado
    End Function

 

 

Os adjunto el archivo de ejemplo para ver si se puede encontrar una solución. Muchas gracias por adelantado.

 

Tabla Ejemplo.xlsm

Featured Replies

publicado

Qué tal @tximo ,

Prueba a introducir una variable más en la función, el índice de la hoja:
 

Function Contar_Polivalencia_verde(indiceHoja As Integer, fila As Long, columna As Long, iteraciones As Long, columna_plantilla As Long) As Long

'inicializo la variable resultado
Dim resultado As Long
Dim i As Long
i = fila
resultado = 0
 
    'comienzo el bucle
    For i = fila To iteraciones
    
        If Sheets(indiceHoja).Cells(i, columna_plantilla).Value = "SI" And Sheets(indiceHoja).Cells(i, columna).Value = "SI" Then   'criterio que debe cumplir
                
                     resultado = resultado + 1
                     End If
    Next
               
         Contar_Polivalencia_verde = resultado
    End Function

Así la fórmul en cada hoja sería:

Hoja1=Contar_Polivalencia_verde(1;17;6;100;2)

Hoja1=Contar_Polivalencia_verde(2;17;6;100;2)

Hoja1=Contar_Polivalencia_verde(3;17;6;100;2)

Te dejo el ejemplo. Donde no aparece #VALOR son las celdas que ya he modificado

Tabla Ejemplo.xlsm

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.