Macro para definir nombres de rangos dinámicos

el poder

Board Regular
Joined
Jul 14, 2002
Messages
62
Buenos días a tod@s,

Resulta que tengo una hoja con más de 10,000 renglones. Obtengo datos por medio de algunas fórmulas como sumaproducto y sumar.si, por ello requiero definir nombres de rangos que son dinámicos para después utilizarlos. En la hoja tengo 4 columnas y las filtro por medio de la columna "C" y con el resultado del filtro y para cada rubro defino dos rangos dinámicos, uno para la columna "A" y otro para la columna "D".
Hice una macro pero como los datos son variables, no sé como hacer que detecte donde comienza cada rango. Anexo código vba con lo que quiero hacer. ¿Podrían ayudarme o darme algunas ideas?


Excel 2007
ABCD
1REVN pers.CC-n.Importe
224490002449000$ 8,888.03
31087900010879000$ 8,295.50
41092900010929000$ 8,295.50
51108900011089000$ 3,713.00
62035900020359000$ 8,888.03
713874390141387439014$ 500.00
813885990141388599014$ 600.00
913890990141389099014$ 700.00
1013891790141389179014$ 800.00
11123265/P02123265/P02$ 4,383.00
12123299/P02123299/P02$ 7,477.50
13123505/P02123505/P02$ 3,703.50
14184586/P03184586/P03$ 3,679.50
15184587/P03184587/P03$ 6,421.51
16184589/P03184589/P03$ 6,421.50
17184608/P03184608/P03$ 3,679.50
18130666999D130666999D$ 401.75
19130757999D130757999D$ 401.75
20130781999D130781999D$ 401.75
214027559A014027559A01$ 381.87
224027609A014027609A01$ 423.93
234006499A024006499A02$ 1,059.83
244025879A024025879A02$ 1,909.33
251858339A041858339A04$ 394.77
SAP SB ORG


Code:
Sub Macro5()
'
'   Se selecciona el filtro por la columna C
    Range("C1").Select
    Selection.AutoFilter
    
'   Se filtra por el criterio 9000
    ActiveSheet.Range("$A$1:$D$6023").AutoFilter Field:=3, Criteria1:="9000"
'   A partir del resultado del filtro se nombran los rangos dinamicos para las columnas A y D
    Range("A2:A6").Select
    Application.Goto Reference:="_9000"
    Range("D2:D6").Select
    Application.Goto Reference:="_9000IMP"
    
'   Se filtra por el criterio 9014
    ActiveSheet.Range("$A$1:$D$6023").AutoFilter Field:=3, Criteria1:="9014"
'   A partir del resultado del filtro se nombran los rangos dinamicos para las columnas A y D
    Range("A7:A10").Select
    Application.Goto Reference:="_9014"
    Range("D7:D10").Select
    Application.Goto Reference:="_9014IMP"
    
'   Se filtra por el criterio /P02
    ActiveSheet.Range("$A$1:$D$6023").AutoFilter Field:=3, Criteria1:="/P02"
'   A partir del resultado del filtro se nombran los rangos dinamicos para las columnas A y D
    Range("A11:A13").Select
    Application.Goto Reference:="_P02"
    Range("D11:D13").Select
    Application.Goto Reference:="_P02IMP"
End Sub

Muchas Gracias!
 

Excel Facts

Workdays for a market open Mon, Wed, Friday?
Yes! Use "0101011" for the weekend argument in NETWORKDAYS.INTL or WORKDAY.INTL. The 7 digits start on Monday. 1 means it is a weekend.
debo decirte que tu consulta no es clara (p.e.)

1) el código que expones no tiene nada que ver con definir/crear/asignar/... nombres a rangos (estáticos o dinámicos), simplemente los usa
2) tampoco se entiende cual es la necesidad de tal definición/creación/... de nombres dinámicos (por efectos de filtrar datos ?)
3) seria mas conveniente si comentas cual es la necesidad, uso y forma en que utilizas (y donde) las funciones sumaproducto, sumar.si, y otras ?

saludos,
hector.
 
Upvote 0
Que tal Héctor, como dices tal vez no fuí claro, entonces comento:


"1) el código que expones no tiene nada que ver con definir/crear/asignar/... nombres a rangos (estáticos o dinámicos), simplemente los usa"

Es que es una macro inicial. Lo que quisiera es que automáticamente la macro asignara para cada criterio de la columna C (9000, 9014, /P02,/P03 y así sucesivamente) dos rangos dinámicos con sus respectivos nombres (también automáticamente) para cada columna A y C. El nombre de los rangos para la columna "A" serían _9000, _9014, _P02, etc y para la columna "C" _9000IMP, _9014IMP, _P02IMP.

"2) tampoco se entiende cual es la necesidad de tal definición/creación/... de nombres dinámicos (por efectos de filtrar datos ?)"

La razón es que la hoja ha crecido y ahora tiene más de 100 columnas y 10000 renglones, entonces utilizo todavía las siguientes fórmulas para cada rubro, en este caso 9000

=SUMAPRODUCTO('SAP SB ORG'!$E$2:$E$31032*('SAP SB ORG'!$A$2:$A$31032=$A2)*('SAP SB ORG'!$C$2:$C$31032=9000))

lo que quisiera es que se leyera como:

=SUMAPRODUCTO('SAP SB ORG'!_9000IMP*('SAP SB ORG'!_9000=2449000))

es decir, además que se pueda entender mejor, estaría limitando la búsqueda para que la operación sumaproducto tarde menos en procesarse


3) seria mas conveniente si comentas cual es la necesidad, uso y forma en que utilizas (y donde) las funciones sumaproducto, sumar.si, y otras ?

La razón es que ha crecido la hoja, actualmente tarda como una hora y media en procesar. He hecho algunas pruebas sustituyendo con sumar.si y ha bajado un poco el tiempo. Por ejemplo: =SUMAR.SI(_9000,2449000,_9000IMP) y el resultado sería $ 8,888.03 , además con la ventaja que no tiene que buscar en + de 10000 renglones

Las fórmulas como están actualmente son:


Cell Formulas
RangeFormula
B2=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A2)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B3=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A3)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B4=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A4)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B5=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A5)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B6=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A6)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B7=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A7)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B8=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A8)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B9=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A9)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B10=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A10)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B11=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A11)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
B12=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A12)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9000))
C2=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A2)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C3=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A3)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C4=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A4)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C5=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A5)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C6=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A6)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C7=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A7)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C8=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A8)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C9=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A9)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C10=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A10)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C11=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A11)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
C12=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A12)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032=9014))
D2=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A2)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D3=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A3)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D4=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A4)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D5=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A5)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D6=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A6)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D7=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A7)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D8=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A8)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D9=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A9)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D10=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A10)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D11=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A11)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
D12=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A12)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="9A01"))
E2=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A2)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E3=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A3)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E4=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A4)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E5=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A5)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E6=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A6)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E7=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A7)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E8=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A8)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E9=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A9)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E10=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A10)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E11=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A11)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
E12=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A12)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P02"))
F2=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A2)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F3=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A3)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F4=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A4)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F5=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A5)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F6=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A6)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F7=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A7)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F8=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A8)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F9=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A9)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F10=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A10)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F11=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A11)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
F12=SUMPRODUCT('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$E$2:$E$31032*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$A$2:$A$31032=$A12)*('[SAP ISSSTE-BASES 2A Sep 13 CHECA.xls]SAP SB ORG'!$C$2:$C$31032="/P03"))
 
Upvote 0
...La razón es que la hoja ha crecido y ahora tiene más de 100 columnas y 10000 renglones, entonces utilizo todavía las siguientes fórmulas para cada rubro, en este caso 9000
=SUMAPRODUCTO('SAP SB ORG'!$E$2:$E$31032*('SAP SB ORG'!$A$2:$A$31032=$A2)*('SAP SB ORG'!$C$2:$C$31032=9000))

lo que quisiera es que se leyera como:
=SUMAPRODUCTO('SAP SB ORG'!_9000IMP*('SAP SB ORG'!_9000=2449000))

es decir, además que se pueda entender mejor, estaría limitando la búsqueda ... además con la ventaja que no tiene que buscar en + de 10000 renglones...

op1: prueba con las opciones de una tabla dinámica (te ahorraras algunos dolores de cabeza)

op2: (al parecer) son vínculos a rangos y hojas en otro libro (?), por lo que referencias a rangos-nombrados podría no ser la mejor alternativa (independientemente de que estén ambos abiertos)

op3: si tu listado está siempre ordenado (o se puede ordenar) por los grupos requeridos, podrías también recortar los rangos de acción para otras funciones (sumar.si, sumaproducto, etc.)

(creo que) aun hay detalles que estás dejando "en el tintero" (?), por lo que...
si cualquier duda (o información adicional)... comentas ?
saludos,
hector.
 
Upvote 0
Que tal Héctor,

Van mis comentarios:

op1: prueba con las opciones de una tabla dinámica (te ahorraras algunos dolores de cabeza)

R. Gracias, estoy haciendo pruebas con las tablas y ciertamente me está ayudando.

op2: (al parecer) son vínculos a rangos y hojas en otro libro (?), por lo que referencias a rangos-nombrados podría no ser la mejor alternativa (independientemente de que estén ambos abiertos)
R. La hoja que subí tiene vínculos a otro libro, pero en la que estoy trabajando tiene las ligas dentro del mismo.

op3: si tu listado está siempre ordenado (o se puede ordenar) por los grupos requeridos, podrías también recortar los rangos de acción para otras funciones (sumar.si, sumaproducto, etc.)
R. Eso también lo estoy probando.

Gracias por las sugerencias.. seguiré posteando avances..

Saludos!
 
Last edited:
Upvote 0

Forum statistics

Threads
1,215,330
Messages
6,124,305
Members
449,150
Latest member
NyDarR

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top