UniversoExcelForo

Respuesta a consultas.
Fecha de creación: 09.Abril.2012

Fundadores: Wibly,Tyno,Servando,Sakkar,Rosendo2,RMaximo,Railar,Mcoronel,Ioyama,Igtelo,Hugotron,Drochar,Dedos,Alberto,Adolfo


No estás conectado. Conéctate o registrate

Ver el tema anterior Ver el tema siguiente Ir abajo  Mensaje [Página 1 de 1.]

alberto sierra


Buenos días a todos,

Me gustaría poder hacer en una macro los cálculos que van en el documento (imagen de la hoja cálculos) localizando los campos LOG, VOL0 Y MENSAJES de cada máquina (pueden venir desordenadas, pero las columnas siempre serán las mismas), al utilizar máquinas con volúmenes, hay esos que ves en el documento pero en un futuro puede variar el número de volúmenes. Los resultados (en vez de colocarlos en la columna de al lado en la hoja DATOS) me gustaría poder pasarlos a la hoja RESUMEN (cada resultado en la máquina que corresponda en la fila LOG, VOL0, MENSAJES, % TOTAL Y FREESPACE de cada máquina, en la columna C) la hoja RESUMEN siempre será así nunca variara la columna y las filas (para mayor simplicidad).

Muchísimas gracias por la ayuda
Un saludo
Alberto
Archivos
PRUEBA.xlsm
No tienes los permisos para descargar los archivos.
(59 KB)



Última edición por alberto sierra el 16/12/16, 07:42 am, editado 1 vez (Razón : saludo)

servando


Buen día para tod@s.

Lo que pides se puede realizar pero tiene el riesgo de que si cambian las estructura del fichero los cálculos que se hayan hecho con esta estructura no valdrán para la nueva.

Te adjunto un fichero con mi propuesta, en el no he puesto el Nº TOTAL DE VOLUMNES MENOS(LOG, VOL0 Y MENSAJES) pues no comprendo esa operación que es lo que da.

El resto me parece que si está recogido.

Un saludo desde Vitoria, Servando
Archivos
PRUEBA .xlsm
No tienes los permisos para descargar los archivos.
(63 KB)

3RESUELTO Buenos días a tod@s! el 19/12/16, 06:02 am

alberto sierra


Muchas gracias Servando por tu interés,

Acabo de ver tu contestación ahora, voy a probar lo que me mandas. Ya se que es algo complicado hacer lo que quiero, por eso recurro a crack's como tu! Por que yo tengo nociones de excel pero para hacer esto necesito ayuda... Voy a probarlo y te digo, muchas gracias de nuevo!

Saludos maños!
Alberto

4RESUELTO Buenas tardes a tod@s! el 19/12/16, 12:14 pm

alberto sierra


Que tal Servando,

He estado probando lo que me has pasado, lo primero de todo felicitarte y darte mil gracias por que esta de lujo! Con respecto al cambio de estructura, los datos (de la hoja DATOS) pueden venir desordenados, pero la macro funciona perfectamente, he probado con distintos ordenes y funciona de lujo, lo único que no entiendo es por que en la macro al cambiar "NOMBRE-MAQUINA-" por el nombre real de las máquinas no me funciona (la estructura del nombre real de las máquinas es muy similar xxx-xxxxxxx-) serían tres letras guion siete letras guion. Supongo que será una tontería que no logro localizar. De nuevo darte las gracias eres un crack!!

Un fuerte abrazo
Alberto

5RESUELTO Buenas tardes a tod@s!! el 19/12/16, 01:46 pm

alberto sierra


Hola Servando, estoy aquí de nuevo para comentarte los cálculos. Los hacen perfectamente salvo los dos últimos (porcentaje total y freespace), he intentado modificar el código que me pasaste esta mañana pero me sale error... Si quieres te comento lo que quiero hacer con estos dos cálculos y haber si entre los dos lo sacamos (seguro que si!). 
En el porcentaje total, sería sumar todos los valores de la columna porcentaje menos los tres valores de Log, Vol0 y Mensajes y todo ello dividirlo para el número total de volúmenes menos 3 (Log, Vol0 y Mensajes)
En el freespace, sería la suma de todos valores de la columna freespace menos los valores de las celdas de Log, Vol0 y Mensajes.
Te adjunto lo que he ido haciendo pero esta mal ya que lo hago con grabar macro, me sale error. Pero bueno te lo paso haber que te parece.

Un fuerte abrazo crack!
Alberto
Archivos
PRUEBA_UEF.xlsm
No tienes los permisos para descargar los archivos.
(62 KB)

servando


Buen día para todo@s.

Prueba el fichero adjunto y comenta.

Un saludo desde Vitoria, Servando
Archivos
Copia de PRUEBA_UEF.xlsm
No tienes los permisos para descargar los archivos.
(68 KB)

alberto sierra


Buenos días a tod@s!!

Hola Servando, felicitarte y agradecerte toda la ayuda que me estas prestando. Los cálculos van perfectos!! Exactamente como debían, lo único que se me escapa es que al cambiar "NOMBRE-MAQUINA-" por el nombre real de la maquina no me hace nada y no se por que. He probado a cambiarlo en el código en la parte:
If Left(Sheets("DATOS").Cells(fDATOS, 3), 15) = "NOMBRE-MAQUINA-" Then aquí sustituyo el "NOMBRE-MAQUINA-" por el nombre real y no me busca el patrón. Pero por lo demás todo perfecto.

Muchas gracias de nuevo!!
Un saludo Alberto

servando


Buen día para tod@s.

Lo único que se me escapa es que al cambiar "NOMBRE-MAQUINA-" por el nombre real de la maquina no me hace nada y no se por que.
He probado a cambiarlo en el código en la parte:
If Left(Sheets("DATOS").Cells(fDATOS, 3), 15) = "NOMBRE-MAQUINA-" Then
aquí sustituyo el "NOMBRE-MAQUINA-" por el nombre real y no me busca el patrón.

Esta línea coge los 15 caracteres a la izquierda del contenido de la celda  que tiene por fila la variable fDATOS y columna 3 de la hoja DATOS y si es igual al patrón ejecuta.

Si me dices como son los nombres intento esta tarde hacerlo.

Un saludo desde Vitoria, Servando.

alberto sierra


Buenas a tod@s!

Hola de nuevo Servando, muchas gracias por la ayuda!! Ya he cambiado el parámetro para buscar el patrón que quiero (me lo hace perfecto), ahora el siguiente paso que me gustaría dar es el siguiente: Esto que estamos haciendo nos lo hace para un día, pero me gustaría que me lo hiciera para una semana (por ejemplo), lo que había pensado es que si ahora empieza a escribir en la columna B de la hoja RESUMEN (ese sería el primer día) que continúe en la columna C (dia dos) columna D (día tres) y así hasta completar toda semana, voy a intentar hacerlo, si veo que me atasco te pediré ayuda (la necesitaré seguro soy muy torpe con excel y tu eres un maestro!!) Muchísimas gracias por la ayuda!!

Saludos desde Zaragoza
Alberto

alberto sierra


Buenas tardes Servando,

Estoy en un atasco... recurro a tu sabiduría haber si me puedes ayudar,
Los cálculos los hace perfectos, pero añade el nombre de las máquinas cada vez que paso la macro. Lo quiero conseguir es que sólo me copie el nombre de las máquinas la primera vez que paso la macro (me gustaría usar el mismo documento para 5 días o así) y después la 2ª, 3ª, 4ª... vez que paso la macro que solo me haga los cálculos y me los coloque en la hoja "RESUMEN" en la máquina que corresponda. Ahora lo que me hace la macro cada vez que la paso es que me copia el nombre de cada máquina y los resultados. Te paso lo que he ido haciendo.


Un abrazo crack!!
Alberto
Archivos
PRUEBA_TE.xlsm
No tienes los permisos para descargar los archivos.
(66 KB)

servando


Buen día para tod@s.

Prueba el fichero adjunto y comenta.

Un saludo desde Vitoria, Servando.
Archivos
PRUEBA_TE.xlsm
No tienes los permisos para descargar los archivos.
(70 KB)

alberto sierra


Buenos días Servando,

Muchas gracias por tu ayuda!! He estado probando el documento que me pasas y no me funciona bien. Me sigue poniendo el nombre de las máquinas en la hoja "RESUMEN" y me elimina datos de la hoja "DATOS" (que eso da igual por que esa hoja la borro cada vez que paso la macro y pego los datos a calcular del día siguiente). Te paso lo que he ido haciendo que me da error y no encuentro por que. Haber si entre los dos lo sacamos (seguro que si por que eres un crack!!)

Un fuerte abrazo
Alberto
Archivos
PRUEBA %284%29.xlsm
No tienes los permisos para descargar los archivos.
(67 KB)

servando


Buen día para tod@s.

Efectivamente no funcionaba bien si no se lanzaba la macro en la hoja "RESUMEN".

Ahora la he modificado para que lanzando la macro desde la hoja "DATOS" funcione bien, o eso creo.

Pruébala y comenta por favor.

Un saludo desde Vitoria, Servando.

alberto sierra


Buenas Servando,

Muchas gracias!! Voy a hacer pruebas desde la hoja "RESUMEN" con el documento que me pasaste anteriormente, por que ahora no me ha llegado el documento para ejecutarlo desde la hoja "DATOS". 

Un abrazo 
Alberto

alberto sierra


Buenas a tod@s!!

Hola Servando, felicitarte y darte las gracias por toda la ayuda! He estado haciendo pruebas y funciona a la perfección ejecutándolo desde la hoja "RESUMEN". Así que perfecto muchísimas gracias de nuevo! De todas maneras si me puedes pasar el que me has dicho antes el que se puede ejecutar desde la hoja "DATOS" te lo agradecería enormemente (sino no pasa absolutamente nada) Voy a seguir haciendo cosas por que aquí no termina el trabajo, aún me quedan de hacer bastantes cosas si me atasco te digo por que que eres un crack!! 

Un fuerte abrazo
Alberto

servando


Buen día.

He intentado el reenvío del anexo y no hay manera.

Te lo pongo como texto aqui mismo.


Sub LanzarCalculos()
   
Mensaje = MsgBox("Desea borrar los datos existentes", vbQuestion + vbYesNo, "#FreelancerExcel")

If Mensaje = vbYes Then
    'Limpiar datos anteriores en la hoja "RESUMEN"
    Sheets("RESUMEN").Cells.ClearContents
    cRESUMEN = 1
   
Else
    cRESUMEN = Sheets("RESUMEN").Cells(4, Cells.Columns.Count).End(xlToLeft).Column + 1
End If

'Averiguar cual es la última fila de la hoja "DATOS"
uFila = Sheets("DATOS").Cells(Rows.Count, 1).End(xlUp).Row

fRESUMEN = 3


'Bucle para recorrer las filas y buscar las máquinas que tenemos en la columna 3.
For fDATOS = 1 To uFila
    If Left(Sheets("DATOS").Cells(fDATOS, 3), 12) = "MOV-RISPACS-" Then
   
        'Poner el nombre en la hoja "RESUMEN"
        Sheets("RESUMEN").Cells(fRESUMEN, cRESUMEN) = Sheets("DATOS").Cells(fDATOS, 3)
        'Sheets("RESUMEN").Cells(fRESUMEN, cRESUMEN + 1) = "Capacity"
       
        'Localizar datos de esta máquina.
        CalcularDatosMaquina2 (fDATOS), (fRESUMEN), (cRESUMEN)
       
        fRESUMEN = fRESUMEN + 7
    End If
Next

'Seleccionar la hoja "RESUMEN" para visualizar.
Sheets("RESUMEN").Select
Sheets("RESUMEN").Cells(1, 1).Select


'Si cRESUMEN es diferente de 1 ejecutar los siguiente.
If cRESUMEN <> 1 Then


    'Ordenar los datos de acuerdo a las máquinas de la 1ª columna.
   
    'Buscar la 1ª máquina de la columna 1 en la columna actual(cRESUMEN).
    For f = 3 To 31 Step 7
        If Cells(f, cRESUMEN) = Cells(3, 1) Then
            'Si coincide copiamos los datos de la máquina a la fila 38.
            Range(Cells(f, cRESUMEN), Cells(f + 5, cRESUMEN + 1)).Copy Cells(3, cRESUMEN + 2)
           
        End If
    Next
    'Buscar la 2ª máquina de la columna 1 en la columna actual(cRESUMEN).
    For f = 3 To 31 Step 7
        If Cells(f, cRESUMEN) = Cells(10, 1) Then
            'Si coincide copiamos los datos de la máquina a la fila 38.
            Range(Cells(f, cRESUMEN), Cells(f + 5, cRESUMEN + 1)).Copy Cells(10, cRESUMEN + 2)
           
        End If
    Next
    'Buscar la 3ª máquina de la columna 1 en la columna actual(cRESUMEN).
    For f = 3 To 31 Step 7
        If Cells(f, cRESUMEN) = Cells(17, 1) Then
            'Si coincide copiamos los datos de la máquina a la fila 38.
            Range(Cells(f, cRESUMEN), Cells(f + 5, cRESUMEN + 1)).Copy Cells(17, cRESUMEN + 2)
           
        End If
    Next
    'Buscar la 4ª máquina de la columna 1 en la columna actual(cRESUMEN).
    For f = 3 To 31 Step 7
        If Cells(f, cRESUMEN) = Cells(24, 1) Then
            'Si coincide copiamos los datos de la máquina a la fila 38.
            Range(Cells(f, cRESUMEN), Cells(f + 5, cRESUMEN + 1)).Copy Cells(24, cRESUMEN + 2)
           
        End If
    Next
    'Buscar la 5ª máquina de la columna 1 en la columna actual(cRESUMEN).
    For f = 3 To 31 Step 7
        If Cells(f, cRESUMEN) = Cells(31, 1) Then
            'Si coincide copiamos los datos de la máquina a la fila 38.
            Range(Cells(f, cRESUMEN), Cells(f + 5, cRESUMEN + 1)).Copy Cells(31, cRESUMEN + 2)
           
        End If
    Next
   
    'Borrar las columnas cRESUMEN+2
    Sheets("RESUMEN").Range(Cells(1, cRESUMEN), Cells(1, cRESUMEN + 2)).EntireColumn.Delete
   
End If

End Sub



Sub CalcularDatosMaquina2(fDATOS As Long, fRESUMEN As Long, cRESUMEN As Long)

fLog = 0
fVol = 0
fMen = 0
'La primera fila con datos es
fDATOS = fDATOS + 5

'Averiguar las filas de la tabla
uFila = Sheets("DATOS").Cells(fDATOS, 2).End(xlDown).Row

'Número de volumnes
nVolumenes = uFila - fDATOS + 1

'Bucle para recorrer los datos
For f = fDATOS To uFila

    'Localizar datos "vol_logs" o "logs"
    If Sheets("DATOS").Cells(f, 2) = "vol_logs" Or _
       Sheets("DATOS").Cells(f, 2) = "vol_Dlogs" Or _
       Sheets("DATOS").Cells(f, 2) = "logs" Then
        'MsgBox "vol-logs " & Sheets("DATOS").Cells(f, 6) - Sheets("DATOS").Cells(f, Cool
        Sheets("RESUMEN").Cells(fRESUMEN + 1, cRESUMEN) = "LOG"
        Sheets("RESUMEN").Cells(fRESUMEN + 1, cRESUMEN + 1) = Sheets("DATOS").Cells(f, 6) - Sheets("DATOS").Cells(f, Cool
        'Capturar la fila
        fLog = f
    End If
   
    'Localizar datos "vol0" o "Vol0"
    If Sheets("DATOS").Cells(f, 2) = "vol0" Or _
       Sheets("DATOS").Cells(f, 2) = "vol_D000" Or _
       Sheets("DATOS").Cells(f, 2) = "Vol0" Then
        'MsgBox "vol-logs " & Sheets("DATOS").Cells(f, 6) - Sheets("DATOS").Cells(f, Cool
        Sheets("RESUMEN").Cells(fRESUMEN + 2, cRESUMEN) = "VOL0"
        Sheets("RESUMEN").Cells(fRESUMEN + 2, cRESUMEN + 1) = Sheets("DATOS").Cells(f, 6) - Sheets("DATOS").Cells(f, Cool
        'Capturar la fila
        fVol = f
    End If

    'Localizar datos "mensajes" o "vol_me..."
    If Sheets("DATOS").Cells(f, 2) = "mensajes" Or _
       Sheets("DATOS").Cells(f, 2) = "vol_Dm..." Or _
       Sheets("DATOS").Cells(f, 2) = "vol_me..." Then
        'MsgBox "vol-logs " & Sheets("DATOS").Cells(f, 6) - Sheets("DATOS").Cells(f, Cool
        Sheets("RESUMEN").Cells(fRESUMEN + 3, cRESUMEN) = "MENSAJES"
        Sheets("RESUMEN").Cells(fRESUMEN + 3, cRESUMEN + 1) = Sheets("DATOS").Cells(f, 6) - Sheets("DATOS").Cells(f, Cool
        'Capturar la fila
        fMen = f
    End If
   
    '% Total, sumatorio de la columna 8 de las filas fDATOS a uFila
    SumaPorcentajes = SumaPorcentajes + Sheets("DATOS").Cells(f, 10)
   
    'Calcular el FreeSpace
    SumaFreeSpace = SumaFreeSpace + Sheets("DATOS").Cells(f, Cool
       
Next

    'Calcular el % TOTAL.
    Sheets("RESUMEN").Cells(fRESUMEN + 4, cRESUMEN) = "% TOTAL"
    SumaPorcentajes = SumaPorcentajes - Sheets("DATOS").Cells(fLog, 10) - Sheets("DATOS").Cells(fVol, 10) - Sheets("DATOS").Cells(fMen, 10)
    Sheets("RESUMEN").Cells(fRESUMEN + 4, cRESUMEN + 1) = SumaPorcentajes / (nVolumenes - 3)
   
    'Calcular FreeSpace
    Sheets("RESUMEN").Cells(fRESUMEN + 5, cRESUMEN) = "FreeSpace"
    SumaFreeSpace = SumaFreeSpace - Sheets("DATOS").Cells(fLog, Cool - Sheets("DATOS").Cells(fVol, Cool - Sheets("DATOS").Cells(fMen, Cool
    Sheets("RESUMEN").Cells(fRESUMEN + 5, cRESUMEN + 1) = SumaFreeSpace

End Sub




Saludos.

alberto sierra


Hola Servando,

Perfecto muchísimas gracias!! Voy a probar lo que me pasas y a continuar haciendo mas cosas con el Excel. 


Un fuerte abrazo
Alberto

servando


Buen día para tod@s.

Si me das un correo te envío el archivo como adjunto no se que pasa pero no me permite adjuntarlo.

Un saludo desde Vitoria, Servando

alberto sierra


Hola Servando,

Ya está solucionado muchísimas gracias!!! Funciona perfectamente desde la hoja "DATOS", voy a continuar con el Excel, si tengo alguna duda te digo (ya que eres un maestro de esto!!)

Un fuerte abrazo y muchas gracias de nuevo
Alberto

Contenido patrocinado


Ver el tema anterior Ver el tema siguiente Volver arriba  Mensaje [Página 1 de 1.]

Permisos de este foro:
No puedes responder a temas en este foro.