Excel - Sumar registros que solo tienen un solo producto.

 
Vista:
Imágen de perfil de fer

Sumar registros que solo tienen un solo producto.

Publicado por fer (2 intervenciones) el 17/07/2014 22:48:22
Buenos dias,

Tengo un problema para conocer la cantidad de ususarios que tienen solamente instalado un producto. Tengo dos columnas una de "Productos" y otro "Usuarios", con los productos que tiene cada usuario. Y necesito saber la cantidad de usuarios que solo tienen un producto instalado de una lista bastante grande de usuarios.

He realizado la siguiente formula, pero no creo que es correcto, me podrían ayudar?

=CONTAR.SI.CONJUNTO($A2:$A50;B1:B50="PR")
=CONTAR.SI.CONJUNTO($A2:$A50;B1:B50="STD")
=CONTAR.SI.CONJUNTO($A2:$A50;B1:B50="REA")

Os dejo un ejemplo reducido y muchas gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 4.908
Oro
Ha mantenido su posición en Excel (en relación al último mes)
Gráfica de Excel

Sumar registros que solo tienen un solo producto.

Publicado por Antoni Masana (2481 intervenciones) el 18/07/2014 08:12:05
Usando una tabla dinámica y unos cuantos COPY - PASTE otra opción es una MACRO pero es un poco más complejo.

Crea dos hoja, una se llamara Copia y la otra Tabla

Ejecuta estas 4 macros por orden, 1, 2, 3 y 4

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
' </> ----------------------------------------------------------- </>
' </> ---&--- Copia la tabla y quita duplicados           ---&--- </>
' </> ----------------------------------------------------------- </>
 
Sub Paso_1()
'
' Paso_1 Macro
'
 
'
    Columns("A:B").Select
    Selection.Copy
    Sheets("Copia").Select
    Columns("A:B").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveWorkbook.Worksheets("Copia").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Copia").Sort.SortFields.Add Key:=Range("B2:B20"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    ActiveWorkbook.Worksheets("Copia").Sort.SortFields.Add Key:=Range("A2:A20"), _
        SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    With ActiveWorkbook.Worksheets("Copia").Sort
        .SetRange Range("A1:B20")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
    ActiveSheet.Range("$A$1:$B$20").RemoveDuplicates Columns:=Array(1, 2), Header _
        :=xlYes
End Sub



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
' </> ----------------------------------------------------------- </>
' </> ---&--- Crea una tabla dinámica y la configura      ---&--- </>
' </> ----------------------------------------------------------- </>
 
Sub Paso_2()
'
' Paso_2 Macro
'
 
'
    Range("A8").Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Copia!R1C1:R17C2", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Tabla!R3C1", TableName:="Tabla dinámica2", _
        DefaultVersion:=xlPivotTableVersion14
    Sheets("Tabla").Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Usuario")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Producto")
        .Orientation = xlColumnField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tabla dinámica2").AddDataField ActiveSheet.PivotTables _
        ("Tabla dinámica2").PivotFields("Producto"), "Cuenta de Producto", xlCount
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Producto")
        .Orientation = xlPageField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Producto")
        .Orientation = xlColumnField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Usuario")
        .Orientation = xlPageField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Usuario")
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Usuario")
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Usuario").Orientation _
        = xlHidden
    With ActiveSheet.PivotTables("Tabla dinámica2").PivotFields("Usuario")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tabla dinámica2").PivotSelect "CECILIA:DIANA", _
        xlDataAndLabel + xlFirstRow, True
    Range("H10").Select
End Sub



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
' </> ----------------------------------------------------------- </>
' </> ---&--- Copia la tabla resultante a COPIA           ---&--- </>
' </> ----------------------------------------------------------- </>
 
Sub Paso_3()
'
' Paso_3 Macro
'
 
'
    Range("A4:E14").Select
    Application.CutCopyMode = False
    Selection.Copy
    Sheets("Copia").Select
    Range("E1").Select
    ActiveSheet.Paste
    Range("H2").Select
    Application.CutCopyMode = False
    Selection.AutoFilter
    ActiveSheet.Range("$E$1:$I$11").AutoFilter Field:=5, Criteria1:="1"
    Range("G4").Select
    ActiveWorkbook.Worksheets("Copia").AutoFilter.Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Copia").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "F2:F11"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Copia").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "G2:G11"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Copia").AutoFilter.Sort.SortFields.Add Key:=Range( _
        "H2:H11"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Copia").AutoFilter.Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub



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
' </> ----------------------------------------------------------- </>
' </> ---&--- Marco los que no estan repetidos con COLOR  ---&--- </>
' </> ----------------------------------------------------------- </>
 
Sub Paso_4()
'
' Paso_4 Macro
'
 
'
    ActiveSheet.Range("$E$1:$I$11").AutoFilter Field:=5
    Range("B5").Select
    Selection.Copy
    Range("E3:F3").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B7").Select
    Selection.Copy
    Range("E4:G5").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveSheet.Range("$E$1:$I$11").AutoFilter Field:=5, Criteria1:="1"
    Range("H22").Select
    Application.CutCopyMode = False
    Selection.Copy
    Range("E4:G7").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B7").Select
    Selection.Copy
    Range("E4:G7").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    Range("B17").Select
    Selection.Copy
    Range("E9:H10").Select
    Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False
    Application.CutCopyMode = False
    ActiveSheet.Range("$E$1:$I$11").AutoFilter Field:=5
    Range("G25").Select
End Sub


No se si es lo que buscas, pero es una idea, por formulas es complejo por no decir imposible y con una macro es posible, es complejo pero se necesita conocimientos de programación

Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar