Rango dinámico dentro una función
Publicado por javier (8 intervenciones) el 09/05/2018 18:46:13
Buenas! Estoy intentando automatizar un reporte diario pero ya me estoy volviendo loco de lo pegado que me encuentro. Logré programar las tablas dinámicas (con rango variable o dinámico, osea, la tabla dinámica toma un rango fijo de columnas pero toma un rango variable de filas, ya que la cantidad de filas varia con cada reporte. La idea ahora es llenar la ultima tabla normal en la hoja "resumen" en la cual tengo que poner formulas desde la celda B2 ((=+CONTAR.SI('Base puntos'!A3:A74;"*")) que tomen la información de la hoja "Base puntos" y q tenga un rango variable o dinámico (El número de filas creadas por la tabla dinámica es variable,osea que tiene que tomar desde la fila A3 hasta la ultima fila con datos, en vez de un rango fijo como está escrito en la formula). Estoy intentando hacerlo de la misma manera que cree las tablas dinámicas, contando el numero de filas pero me quedé pegado, no sé como poner ese rango dinámico dentro de la función.
Adjunto excel en zip con el cual estoy corriendo el código.
El código que he creado hasta ahora (funcional) es el stge :
Con la ultima parte del código estoy creando el resumen de todas las tablas creadas anteriormente con el codigo... En la hoja "resumen" necesito ir poniendo formulas desde la celda B2 (=+CONTAR.SI('Base puntos'!A3:A74;"*") y que esta formula ocupe un rango dinámico (columnas fijas, filas variables), que busque el rango en la hoja "Base puntos", que vaya desde la celda A3 hasta la ultima linea con datos para poner el resultado en la hoja "resumen" celda B2.
Se agradecería un montón una ayudita!
De antemano, muchisimas gracias.
Atte,
Javier del Campo
Adjunto excel en zip con el cual estoy corriendo el código.
El código que he creado hasta ahora (funcional) es el stge :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
Sub TD()
Dim Ultima As Long
Ultima = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
Range("N2").Select
ActiveCell.FormulaR1C1 = "Aceptado"
Range("O2").Select
ActiveCell.FormulaR1C1 = "Rechazado"
Range("N3").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-3]=""aceptado"",1,0)"
Range("O3").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-4]=""rechazado"",1,0)"
Range("N3").Select
Selection.AutoFill Destination:=Range("N3:N" & Ultima)
Range("O3").Select
Selection.AutoFill Destination:=Range("O3:O" & Ultima)
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="srirmam!R2C1:R" & Ultima & "C15", _
Version:=6).CreatePivotTable _
TableDestination:="Hoja1!R1C1", _
TableName:="TablaDinámica2", _
DefaultVersion:=6
Sheets("Hoja1").Select
Cells(3, 1).Select
Sheets("Hoja1").Select
ActiveSheet.Name = "Base Rut"
ActiveSheet.PivotTables("TablaDinámica2").AddFields RowFields:="RUT VERIFICADO"
ActiveSheet.PivotTables("TablaDinámica2").AddDataField ActiveSheet.PivotTables( _
"TablaDinámica2").PivotFields("aceptado"), "Suma de Aceptado", xlCount
ActiveSheet.PivotTables("TablaDinámica2").AddDataField ActiveSheet.PivotTables( _
"TablaDinámica2").PivotFields("rechazado"), "Suma de Rechazado", xlCount
ActiveSheet.PivotTables("TablaDinámica2").AddDataField ActiveSheet.PivotTables( _
"TablaDinámica2").PivotFields("TRANSACCION"), "Cuenta de TRANSACCION", xlCount
Sheets.Add
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, _
SourceData:="srirmam!R2C1:R" & Ultima & "C15", _
Version:=6).CreatePivotTable _
TableDestination:="Hoja2!R1C1", _
TableName:="TablaDinámica3", _
DefaultVersion:=6
Sheets("Hoja2").Select
Cells(3, 1).Select
Sheets("Hoja2").Select
ActiveSheet.Name = "Base puntos"
With ActiveSheet.PivotTables("TablaDinámica3").PivotFields("NOMBRE PC")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("TablaDinámica3").AddDataField ActiveSheet.PivotTables( _
"TablaDinámica3").PivotFields("TRANSACCION"), "Cuenta de TRANSACCION", xlCount
With ActiveSheet.PivotTables("TablaDinámica3").PivotFields( _
"RESULTADO VERIFICACION")
.Orientation = xlColumnField
.Position = 1
End With
Sheets.Add After:=ActiveSheet
Sheets("Hoja3").Select
Sheets("Hoja3").Name = "resumen"
ActiveCell.FormulaR1C1 = "Métrica"
Range("B1").Select
ActiveCell.FormulaR1C1 = "Resultado"
Range("A2").Select
ActiveCell.FormulaR1C1 = "N° de puntos con actividad"
Range("A3").Select
ActiveCell.FormulaR1C1 = "N° de transacciones"
Range("A4").Select
ActiveCell.FormulaR1C1 = "RUN verificados"
Range("A5").Select
ActiveCell.FormulaR1C1 = "RUN aceptados"
Range("A6").Select
ActiveCell.FormulaR1C1 = "RUN rechazados"
Range("A7").Select
ActiveCell.FormulaR1C1 = "RUN con mas de 10 aceptado"
Range("A8").Select
ActiveCell.FormulaR1C1 = "RUN aprobados al primero intento"
Range("A9").Select
ActiveCell.FormulaR1C1 = "RUN aprobados con menos de 3 rechazos"
Range("A10").Select
ActiveCell.FormulaR1C1 = "RUN aprobados con al menos 3 rechazos previos"
Range("A11").Select
ActiveCell.FormulaR1C1 = "Numero de intentos por RUN verificado"
Range("A13").Select
ActiveCell.FormulaR1C1 = "N° de RUN"
Range("A14").Select
ActiveCell.FormulaR1C1 = "N° de firmas promedio por RUN"
Columns("B:B").Select
Columns("A:A").EntireColumn.AutoFit
End Sub
Con la ultima parte del código estoy creando el resumen de todas las tablas creadas anteriormente con el codigo... En la hoja "resumen" necesito ir poniendo formulas desde la celda B2 (=+CONTAR.SI('Base puntos'!A3:A74;"*") y que esta formula ocupe un rango dinámico (columnas fijas, filas variables), que busque el rango en la hoja "Base puntos", que vaya desde la celda A3 hasta la ultima linea con datos para poner el resultado en la hoja "resumen" celda B2.
Se agradecería un montón una ayudita!
De antemano, muchisimas gracias.
Atte,
Javier del Campo
- ejemplo-info.zip(29,9 KB)
Valora esta pregunta


0