Re: filtrar y mantener total

19/01/2006 - 21:54 por lg | Informe spam
Muchas gracias Hector Miguel, justamente era eso, pero ahora me surge otro problema, he buscado bastante dentro del foro y de una lista de excel y pienso que estoy cerca, quizas es algun error de sintaxis, me explico

Tengo una formula en los totales que toma el valor de la fila anterior EJ (columna C)

_________A B C
___je_____100 200 30
___jo_____200 200 10
TOTAL 300 400 10

Pero Por ejemplo al filtrar "je", no me toma como anterior 300, sino que me toma 100, ya que por lo que investigue, las filas solo se ocultan con los autofiltros

A mi se me ocurrio hacer alguna macro que cuente las ocultas y dado el total q se encuentra en la fila Nº "=FILA()" sacar la fila anterior , lo que encontre fue esto

Function Ocultas(rango
Application.Volatil
For Each celda In rang
If celda.EntireRow.Hidden Then
ocultas = ocultas +
Nex
End Functio

luego inserto en la celda del total el valor de la celda "C(=FILA()+fila comienzo - OCULTAS)"

puse esi la macro

Sub uhm(
Function Ocultas(rango
Application.Volatil
For Each celda In rang
If celda.EntireRow.Hidden The
Ocultas = Ocultas +
End I
Nex
End Functio
End Su

pero me dice "error de compilacion se esperaba un end sub " y no he pillado en que fallo(es primera ves que creo una macro) .. igual es medio complicado la solucion y lo mas seguro es que exista una mas facil .. ojala me ayuden

Gracias

lg

Ver este tema: http://www.softwaremix.net/viewtopic-476097.htm

Enviado desde http://www.softwaremix.net

Preguntas similare

Leer las respuestas

#1 Héctor Miguel
20/01/2006 - 00:12 | Informe spam
hola, lg !

... ahora me surge otro problema... una formula en los totales que toma el valor de la fila anterior EJ (columna C):
_________A B C
___je_____100 200 300
___jo_____200 200 100
TOTAL 300 400 100
... al filtrar "je", no me toma como anterior 300, sino que me toma 100...
... se me ocurrio hacer alguna macro que cuente las ocultas y [...]



antes de 'llegarle' a las macros [ademas de que no puedes 'meter' un procedimiento function 'dentro' de un procedimiento sub]...
y con los siguientes supuestos [ya que los ejemplos que expones no son muy 'explicitos' en cuanto a los rangos donde estan]...
1) en 'C1' tienes algun titulo [y es la fila con las listas desplegables de los autofiltros]
2) el rango [columna 'C'] donde filtras [antes de 'la formula'] es -> 'C2:C31'
3) la celda donde se toma 'la fila anterior' [visible despues del filtro] es -> 'C32'
-> usa ALGUNA de las siguientes formulas:
=desref(c1,max(fila(c2:c31)*subtotales(2,desref(c2,fila(c2:c31)-fila(c2),0)))-1,0)
=indirecto("c"&max(fila(c2:c31)*subtotales(2,desref(c2,fila(c2:c31)-fila(c2),0))))

-> toma nota de que se trata de formulas 'matriciales' [es decir]...
cuando se introducen/editan... se deben terminar con la combinacion de teclas {ctrl}+{mayus}+{enter}
NO con un solo y simple {enter} <= OJO
-> y no olvides ajustar los rangos a los 'reales' y recuerda lo de 'mis' comas :D

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#2 Cristian
20/01/2006 - 00:29 | Informe spam
HOLA,

no se si entendi bien pero te expongo 2 cosas que te serviran:
1) si pones "sub" algo ese es el inicio de esa macro (no puedes continuar
con function o otro sub antes de cerrar ese, por lo tanto te sugero que
borres las siguientes lineas del codigo que publicas Sub uhm() y en sub y
el total lo llames como una funcion personalizada, podrias poner la siguiente
fomula en la celda total =ocultas(rango) y eso automaticamente te se
actualizara al filtrar (eso si tu algoritmo funciona)

2) yo haria una macro mas facil de aplicar que seria algo asi:
sub total()
f=0 'para la celda inmediatamente anterior
do until activecell(f,1).entirerow.visible=true
f=f-1
loop
activecell.value=activecell(f,activecell.column).value
end sub

asi cada vez que ejecutes esta macro la celda activa (total) se actualizara
a la ultima visible anterior

NOTA: mi codigo tambien lo puedes escribir como una funcion (tendrias que
reemplazar "activecell.value =" por "total=" (en la penultima linea)




saludos, CRISTIAN

"lg" escribió:


Muchas gracias Hector Miguel, justamente era eso, pero ahora me surge otro problema, he buscado bastante dentro del foro y de una lista de excel y pienso que estoy cerca, quizas es algun error de sintaxis, me explico :

Tengo una formula en los totales que toma el valor de la fila anterior EJ (columna C) :

_________A B C
___je_____100 200 300
___jo_____200 200 100
TOTAL 300 400 100

Pero Por ejemplo al filtrar "je", no me toma como anterior 300, sino que me toma 100, ya que por lo que investigue, las filas solo se ocultan con los autofiltros.

A mi se me ocurrio hacer alguna macro que cuente las ocultas y dado el total q se encuentra en la fila Nº "=FILA()" sacar la fila anterior , lo que encontre fue esto

Function Ocultas(rango)
Application.Volatile
For Each celda In rango
If celda.EntireRow.Hidden Then
ocultas = ocultas + 1
Next
End Function

luego inserto en la celda del total el valor de la celda "C(=FILA()+fila comienzo - OCULTAS)"

puse esi la macro

Sub uhm()
Function Ocultas(rango)
Application.Volatile
For Each celda In rango
If celda.EntireRow.Hidden Then
Ocultas = Ocultas + 1
End If
Next
End Function
End Sub

pero me dice "error de compilacion se esperaba un end sub " y no he pillado en que fallo(es primera ves que creo una macro) .. igual es medio complicado la solucion y lo mas seguro es que exista una mas facil .. ojala me ayuden ,

Gracias.


lg


Ver este tema: http://www.softwaremix.net/viewtopic-476097.html

Enviado desde http://www.softwaremix.net



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida