Sunteți pe pagina 1din 14

MACRO PARA UNA HOJA RESUMEN Option Explicit Sub Control() Dim c As Range 'Suponiendo que los nombres

de las hojas empiezan en A1 hasta An en 'en la primera hoja del libro llamada INDICE For Each c In Worksheets("INDICE").Range(Range("A1"), Range("A1").End(xlDown)) LeeEscribeHoja (c.Value) Next c End Sub

Sub LeeEscribeHoja(h As String) Dim f As Double Dim maxi As Double Dim maxj As Double Dim v(4) As Variant maxi = Worksheets(h).Range("G5").End(xlDown).Row maxj = Worksheets("CONTROL").Range("a655655").End(xlUp).Row For f = 5 To maxi Worksheets(h).Activate If Format(Now(), "dd-mm-aa") = Format(Cells(f, 7).Value, "dd-mm-aa") Then v(1) = Cells(f, 7) 'g v(2) = Cells(f, 2) 'b v(3) = Cells(f, 10) 'j v(4) = Cells(f, 4) 'd

Worksheets("CONTROL").Activate maxj = maxj + 1 Cells(maxj, 1) = v(1) 'g Cells(maxj, 2) = v(2) 'b Cells(maxj, 3) = v(3) 'j Cells(maxj, 4) = v(4) 'd End If Next f End Sub

Macro para copiar celdas a otra hoja


Hola prueba con ese cdigo busca la palabra concluido en la columna j mientras no este vaca y la copia en la hoja 2 a partir de a2, borrando la fila copiada. Sub copia()

Dim fila, filacopia As Integer fila = 3 filacopia = 2 While Sheets("hoja1").Cells(fila, 10) <> Empty If Sheets("hoja1").Cells(fila, 10) = "Concluido" Then Sheets("hoja2").Cells(filacopia, 1) = Sheets("hoja1").Cells(fila, 10) Sheets("hoja2").Cells(filacopia, 2) = Sheets("hoja1").Cells(fila, 11) Sheets("hoja2").Cells(filacopia, 3) = Sheets("hoja1").Cells(fila, 12) Sheets("hoja2").Cells(filacopia, 4) = Sheets("hoja1").Cells(fila, 13) Sheets("hoja2").Cells(filacopia, 5) = Sheets("hoja1").Cells(fila, 14) filacopia = filacopia + 1 Sheets("hoja1").Cells(fila, 10).Activate ActiveCell.EntireRow.Delete End If fila = fila + 1 Wend End Sub

Valor en una celda y respuesta en otra


Hola pon ese cdigo en un botn y le asignas esta macro que realiza lo que tu quieres Sub pinta () Dim fila As String fila = 1 While Sheets("hoja1").Cells(fila, 1) <> "" If Sheets("hoja1").Cells(fila, 1) = 0 Then Sheets("hoja1").Cells(fila, 3) = "Atendido" Sheets("hoja1").Cells(fila, 3).Select

With Selection .Interior .Pattern = xlSolid .PatternColorIndex = xlAutomatic .Color = 255 .TintAndShade = 0 .PatternTintAndShade = 0 End With Else Sheets("hoja1").Cells(fila, 3) = "Pendiente" End If fila = fila + 1 Wend End Sub

Comparar entre hoja 1 y hoja 2 los registro que no se encuentran y lo enve a hoja3
Estimado aca te envo la respuesta inserta un modulo copia el cdigo, inserta un botn y asigna la macro la macro lo que hace es tomar un registro de la hoja1 buscarlo en la hoja2, si no lo encuentra lo agrega en la hoja3, adptala con el nombre de tus hojas. Te aconsejo que visites www.programarexcel.blogspot.com ah encontrars distintos ejemplos que puedes descargar y aplicar a tus hojas de excel. Espero comentarios. Sub BuscayCopia() Application.ScreenUpdating = False Dim fila, fila1, filat As Integer Dim dato, c As String fila = 2 fila1 = 2 filat = 2 While Sheets("ProdB").Cells(fila, 1) <> Empty dato = Sheets("ProdA").Cells(fila, 1) Set b = Sheets("ProdB").Range("A1:A1048576").Find(dato, LookIn:=xlValues, Lookat:=xlWhole) If b Is Nothing Then Sheets("ProdA").Select

Rows(fila).Select Selection.Copy Sheets("Inexistentes").Select Cells(filat, 1).Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False filat = filat + 1 End If fila = fila + 1 Wend Application.ScreenUpdating = False End Sub
FORMULA MEJORADA PARA COPIAR HOJAS

ola pon est cdigo enn vez del que tiene tu libro y funcionar, recuerda que en www.programarexcel.blogspot.com encontrars ejemplos que puedes bajar y aplicar a lo que ests haciendo. Sub BuscayCopia() Application.ScreenUpdating = False Dim fila, filat, uc1, uc2 As Integer Dim d1, d2, d3, d4, d5, d6 As String Dim b, con1, con2 As String fila = 2 fila1 = 2 filat = 2 Sheets("depurados").Select Range("a2:XFD1048576").Clear uc1 = Sheets("hoy").Cells(1, Columns.Count).End(xlToLeft).Column uc1 = uc1 + 1 uc2 = Sheets("d-1").Cells(1, Columns.Count).End(xlToLeft).Column uc2 = uc2 + 1 While Sheets("hoy").Cells(fila, 1) <> Empty d1 = Sheets("hoy").Cells(fila, 4).Text d2 = Sheets("hoy").Cells(fila, 5).Text d3 = Sheets("hoy").Cells(fila, 7).Text con1 = d1 & d2 & d3 Sheets("hoy").Cells(fila, uc1) = con1 fila = fila + 1 Wend fila = 2 While Sheets("d-1").Cells(fila, 1) <> Empty d4 = Sheets("d-1").Cells(fila, 4).Text d5 = Sheets("d-1").Cells(fila, 5).Text d6 = Sheets("d-1").Cells(fila, 7).Text con2 = d4 & d5 & d6 Sheets("d-1").Cells(fila, uc2) = con2 fila = fila + 1

Wend fila = 2 While Sheets("hoy").Cells(fila, uc1) <> Empty dato = Sheets("d-1").Cells(fila, uc2) Set b = Sheets("hoy").Columns(uc1).Find(dato, LookIn:=xlValues, Lookat:=xlWhole) If b Is Nothing Then Sheets("d-1").Select Rows(fila).Select Selection.Copy Sheets("depurados").Select Cells(filat, 1).Select Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _ SkipBlanks:=False, Transpose:=False Application.CutCopyMode = False filat = filat + 1 End If fila = fila + 1 Wend Sheets("depurados").Columns(5).Select Selection.NumberFormat = "#,##0" Sheets("hoy").Columns(uc1).Clear Sheets("d-1").Columns(uc2).Clear Sheets("depurados").Columns(uc2).Clear Set b = Nothing Application.ScreenUpdating = False End Sub

botn buscar y botn guardar modificado


Private Sub CommandButton8_Click() Application.ScreenUpdating = False Sheets("dbcomp").Unprotect Password:="1610" Sheets("ingreso comprobante").Unprotect Password:="1610" 'Primero busca el registro y luego lo elimina Dim Quebusco1 As String Dim Quebusco2 As String Dim Quebusco3 As String Dim Quebusco4 As String Dim Quebusco5 As String Dim filabusqueda As String Dim filaIC As String filabusqueda = 2 filaIC = 8 'la variable Que guarda el dato ingresado Quebusco1 = ComboProveedorB.Value Quebusco2 = ComboComprobanteB.Value

Quebusco3 = ComboTipoB.Value Quebusco4 = TextPrefijoB.Value Quebusco5 = TextNumeroB.Value ' busca en la hoja dbcomp los datos de los combo y texbox para determinar si hay duplicados While Sheets("dbcomp").Cells(filabusqueda, 2) <> Empty If Quebusco1 = Sheets("dbcomp").Cells(filabusqueda, 3).Value And _ Quebusco2 = Sheets("dbcomp").Cells(filabusqueda, 4).Value And _ Quebusco3 = Sheets("dbcomp").Cells(filabusqueda, 5).Value And _ Quebusco4 = Sheets("dbcomp").Cells(filabusqueda, 6).Value And _ Quebusco5 = Sheets("dbcomp").Cells(filabusqueda, 7).Value Then 'si se encuentra el dato puede mostrar un mensaje de error como el siguiente miopcion = MsgBox("Seguro desea eliminar el registro", vbCritical + vbOKCancel) If miopcion = 1 And Sheets("dbcomp").Cells(filabusqueda, 10) = Empty Then Sheets("dbcomp").Activate Sheets("dbcomp").Cells(filabusqueda, 3).Select Selection.EntireRow.Delete GoTo aqui1 Else MsgBox "No se puede eliminar comprobante" & Chr(10) & " tiene OP asociadas", vbInformation Exit Sub End If 'busca en la fila siguiente Else filabusqueda = filabusqueda + 1 End If Wend

El cdigo que se encuentra a continuacin se debe ingresar en un modulo, descargando el ejemplo lo podrs ver en funcionamiento, analizar, modificar y adaptar a lo que t ests realizando el cdigo est abierto sin ningn tipo de restriccin.

Cdigo a insertar en mdulo Private Sub BuscayCreaCarpeta() Dim mes1 As String Dim mes, ao As Integer 'Estabezco si la carpeta existe ao = Year(Date) mes = Month(Date)

'Determino el nombre de la subcarpeta que va dentro de la carpeta ao, hay que tener en cuenta que los informes se 'sacan al mes siguiente, en caso de ser diciembre deber{ia tenerse en cuenta que se saca en enero del ao que sigue 'por ende el directorio donde se guardan los datos es el del ao anterior que ya est en teora creado. 'Se pone como nombre de mes el anterior al mes actual, ya que los informes se sacan el mes siguiente Select Case mes Case 1 mes1 = "Dic" Case 2 mes1 = "Ene" Case 3 mes1 = "Feb" Case 4 mes1 = "Mar" Case 5 mes1 = "Abr" Case 6 mes1 = "May" Case 7 mes1 = "Jun" Case 8 mes1 = "Jul" Case 9 mes1 = "Ago" Case 10 mes1 = "Sep" Case 11 mes1 = "Oct" Case 12 mes1 = "Nov" End Select 'Se establece que si el mes es diciembre el ao donde se guarden los archivos es el actual menos 1 osea el anterior If mes1 = "Dic" Then ao = ao - 1 End If 'Verifica que la carpeta con el nombre del ao se encuentre caso contrario la crea Path = "C:\" & ao If Dir(Path, vbDirectory) = "" Then MkDir Path End If

'Verifica que la carpeta con el nombre del mes se encuentre caso contrario la crea path1 = "C:\" & ao & "\" & mes1 If Dir(path1, vbDirectory) = "" Then MkDir path1 End If 'Verifica que la carpeta con el nombre de la sucursal esta dentro mes del informe path2 = "C:\" & ao & "\" & mes1 & "\Consolidado" If Dir(path2, vbDirectory) = "" Then MkDir path2 End If path3 = "C:\" & ao & "\" & mes1 & "\CC" If Dir(path3, vbDirectory) = "" Then MkDir path3 End If path4 = "C:\" & ao & "\" & mes1 & "\Suc1" If Dir(path4, vbDirectory) = "" Then MkDir path4 End If End Sub Private Sub guardapdfGXDpto() Application.ScreenUpdating = False Application.DisplayAlerts = False 'Controlo errores On Error Resume Next Sheets("Graf_por_dpto").Range("v2").Select Dim filagrafico, dire As String Dim nomfile, nomsuc As String Dim x As Integer 'Establece rea de impresin Range("b11:j63").Select ActiveSheet.PageSetup.PrintArea = Selection.Address filagrafico = 2 'Hace que se realice el informe consolidado y por cada sucursal For x = 2 To 4 Sheets("Graf_por_dpto").Range("d15") = Sheets("Graf_por_dpto").Cells(x, 25) 'Recorre la filas donde est el nombre de los dtos While Sheets("Graf_por_dpto").Cells(filagrafico, 22) <> Empty Sheets("Graf_por_dpto").Range("e16") = Sheets("Graf_por_dpto").Cells(filagrafico, 22) 'corre procedimiento que hace que filtre las otras columnas, es como apretar el boton consultar de la hoja

BuscayCreaCarpeta 'Verifica que los datos para el filtro estn cargados caso contrario carga por defecto If Sheets("Graf_por_dpto").Range("d15") = Empty Then Sheets("Graf_por_dpto").Range("d15") = "Todas" End If 'Determina el nombre del archivo y lo guarda nomsuc = Sheets("Graf_por_dpto").Range("d15").Value If nomsuc = "Todas" Then nomsuc = "consolidado" End If 'Dependiendo la sucursal elegida determina el path correspondiente Select Case nomsuc Case "consolidado" dire = path2 Case "CC" dire = path3 Case "Suc1" dire = path4 End Select nomfile = "Grfico Vtas de " & Sheets("Graf_por_dpto").Range("e16").Value & " " & nomsuc ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _ dire & "\" & nomfile & ".pdf", Quality:=xlQualityStandard, _ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False filagrafico = filagrafico + 1 Wend 'vuelvo fila al inicio para que siga con la proxima seleccin filagrafico = 2 Next x Range("d15").Select Application.DisplayAlerts = True Application.ScreenUpdating = True End Sub FORMULAS CONTAR.SI.CONJUNTO
=CONTAR.SI.CONJUNTO (B2:B10,>95, C2:C10,>95) =CONTAR.SI.CONJUNTO (B2:C10,>95)+CONTAR.SI.CONJUNTO (D2:D10,>90)

Determina el objetivo mensual por gerente, utilizando la formula de Excel Sumar.Si


Published on 23 abril, 2012, by FormulasdeExcel.com in Casos.

La prxima funcin a explicar es SUMAR.SI la misma nos permite sumar un rango de valores basados en un criterio predeterminado, siempre y cuando se d una condicin que indiquemos.

La sintaxis de la funcin es la siguiente:

=SUMAR.SI (Rango, Criterio, Rango de Suma)

Donde tendremos lo siguiente:

Rango (Obligatorio), este es el rango de celdas que se desea evaluar segn los criterios especificados. Criterio (Obligatorio) este es el criterio en forma de nmero, expresin o texto, que determina las celdas que se van a sumar siempre y cuando el mismo este dado. Rango_suma (Opcional) Luego de evaluar el rango, esto es lo que Excel sumara, en caso de dejarlo en blanco se sumara lo que hemos especificado en Rango.

Veamos el siguiente ejemplo:

Por lo regular cuando manejamos proyecciones y reportes de ventas en Excel tenemos data consolidada en una o varias hojas como veras en nuestra primera grafica y sobre esta data queremos consultar datos especficos. Digamos que la compaa X tiene una base de datos con clientes, localidad, nombre, gerente, objetivo mensual del cliente, entre otras.

Basados en la informacin anterior queremos saber el objetivo mensual de los clientes de cada gerente, para esto utilizamos la formula SUMAR.SI de la siguiente manera, Primero creamos un cuadro con los nombres de los gerentes que queremos buscar, y el objetivo mes, aqu es donde colocaremos la formula:

Una vez creado el cuadro, vamos a la casilla de formula y buscamos SUMAR.SI, una manera rpida de encontrarla es en la celda donde vamos a escribir la formula, escribimos =sumar.si, en la barra de formulas aparecer lo que escribimos y presionamos

Luego de esto nos aparecern los argumentos de funcin,

Ac colocaremos los siguientes datos, RANGO presionaremos la columna D y seleccionara D:D indicando que est tomando toda la columna, en caso de que sea un rango especifico lo indicamos manualmente, digamos que queremos evaluar de la celda D1 a la celda D25, en ese caso sera D1:D25. CRITERIO, colocamos el criterio a evaluar, en nuestro caso seleccionamos la celda I2 que es donde esta Carlos que es el primer nombre de gerente. RANGO_SUMA, esto indica las celdas a sumar una vez se encuentre el criterio. En resumen le estamos diciendo a Excel lo siguiente Busca en la Columna D todos los nombre que sean igual a Carlos y una vez lo encuentres suma las celdas de la columna G que correspondan a este.

Luego de evaluar la primera condicin, copiamos la formula y la pegamos al lado de cada gerente, lo que nos dar el objetivo mensual de cada uno.

Ahora tendremos el producto final buscado, aqu tendremos el objetivo del mes de cada gerente sacado de una tabla donde tiene el objetivo individual de cada cliente.

Para bajar la hoja de clculo que hemos utilizado en este caso PRESIONA AQU.

Hasta aqu este post, espero que el caso anterior les sea de utilidad, no olvides subscribirte a nuestra lista para recibir de primera mano nuestros tips y actualizaciones, de igual modo te invitamos a comentar sobre este.

S-ar putea să vă placă și