7
votes

Somme visible (ou filtrée) dans une feuille de calcul Excel

dans Excel, j'ai besoin de filtrer et d'afficher le comtetif em> & somme em> de la gamme gamme em> et de visible (ou Filtré) Plage em>.

Je peux déjà afficher le comptez em> & de la gamme gamme em> avec le code suivant. xxx pré>

i peut également obtenir le compter em> de la plage visible (ou filtrée) em> comme suit: p> xxx pré>

Cependant, cela laisse toujours la gamme somme em> de la plage visible (ou filtrée) em> en circulation. P>

AtmCurrentSum = ???


2 commentaires

Cela peut ne pas être la solution idéale, mais si vous copiez la plage d'utilisée sur une nouvelle feuille, elle ne copiera que les données filtrées vous permettant de faire les calculs dont vous avez besoin plus facilement.


Pas une option ripster car les données changent trop souvent.


6 Réponses :


7
votes

Cela fera ce que vous voulez. Définissez VissibleTotal sur le type de données approprié pour le total et modifiez les objets WS et RNG pour correspondre à ce que vous avez dans votre classeur.

Sub SumVisible()
    Dim ws As Worksheet
    Dim rng As Range
    Dim visibleTotal As Long

    Set ws = ThisWorkbook.Sheets("Sheet1")
    Set rng = ws.Range("B1:B7")

    ws.AutoFilterMode = False
    rng.AutoFilter field:=1, Criteria1:=5

    visibleTotal = Application.WorksheetFunction.Sum(rng.SpecialCells(xlCellTypeVisible))
    ' print to the immediate window
    Debug.Print visibleTotal
End Sub


0 commentaires

1
votes

Si vous voulez seulement la somme plutôt que SUMIF

AtmCurrentSum = application.worksheetfunction.subtotal(9, Range("X3:X4533"))


3 commentaires

J'ai ajouté la réflexion de la variable c'était explicite de soi ;-)


Pas la variable;) Quand j'ai ajouté votre fonction `Feuille de calcul ... Cela donne une erreur sur le code


J'ai ajouté l'application . partie s'il n'est généralement pas nécessaire



-1
votes

Je viens de rencontrer ce site. HTTPS: / /www.techrepublic.com/blog/microsoft-Office/how-a-sum-values-in-an-excel-Filtered-list/

La formule de base est x = application.worksheetfunction.subtotal ("numéro de code", "gamme") La formule que vous voulez est x = application.worksheetfunction.subtotal (109, plage (x, y))


0 commentaires

0
votes

La fonction de donner la fonction subdicible () n'a pas fonctionné pour moi à la place, j'ai utilisé la fonction sous-totale.Caution Utilisez le numéro de fonction 109,102 104,105 pour ignorer les valeurs cachées. c'est-à-dire de calculer uniquement des cellules visibles.

" https: // support.office.com/en-us/article/subtotal-fonction-7b027003-f060-4ade-9040-E478765b9939 " P>

aSum = WorksheetFunction.Subtotal(109, CalcRange) 
aCount = Application.WorksheetFunction.Subtotal(102, CalcRange)
aMax = Application.WorksheetFunction.Subtotal(104, CalcRange)
aMin = Application.WorksheetFunction.Subtotal(105, CalcRange)


0 commentaires

2
votes

Si une nécessité de compter le nombre d'éléments visibles dans une liste filtrée, utilisez la fonction de sous-tension, qui ignore automatiquement les lignes cachées par un filtre.

La fonction de sous-total peut effectuer des calculs tels que Compte, Somme, Max , Min, moyenne, produit et bien d'autres (voir le tableau ci-dessous). Il ignore automatiquement les éléments qui ne sont pas visibles dans une liste ou une table filtrée. Cela le rend idéal pour montrer combien d'articles sont visibles dans une liste, le sous-total des lignes visibles, etc. Il fournit également des lignes de contrôle manuellement manuellement manuellement.

La solution à votre question serait de compter le nombre. des rangées non vierges visibles dans la colonne A et la colonne B Lorsqu'un filtre est actif, utilisez: xxx


 arguments de formule sous-total Excel


points à retenir lorsque vous appliquez une formule sous-total:

  • Lorsque fonctionnaire_num (premier argument) est compris entre 1-11, le sous-total comprend des valeurs cachées manuellement mais ignorez cachée par filtre.
  • Lorsque Function_num est compris entre 101 et 1111, le sous-total exclut toutes les valeurs cachées.
  • Dans les listes filtrées, le sous-total ignore toujours les valeurs dans des lignes cachées, quelle que soit la fonction_num.
  • Le sous-total ignore les autres sous-totaux existants dans les références sont ignorés pour empêcher Double-comptage
  • Sous-total Utilisez uniquement des valeurs de données verticales disposées verticalement.
  • dans des colonnes horizontales cachées, les valeurs sont toujours incluses et jamais ignorées.

2 commentaires

Je souhaite utiliser la fonctionnalité 109 dans l'onglet Données / sous-totale dans VBA. Comme: Plage (A1) .Subtotal Groupby: = 1, Fonction: = XLSUM, Totallist: = Array (2) . Connaissez-vous l'argument correspondant pour 109 pour entrer dans Fonction: = ?


Je crois, il restera à XLsum, cependant, de filtrer sur des cellules visibles, vous devez utiliser la plage ("A: A"). SPÉCIALCELLS (XLCELLTYPEVISIBLE) .SubTotal GroupBy: = 1, Fonction: = xlsum, Totallist: = Array ( 2)



0
votes

Si vous utilisez Excel 2016, cela fonctionnera

Somme = Application.worksheetfunction.SubTotal (9, plage ("$ D2: D" et lignes (lignes.count) .end (XLUP) .row))

9 Spécifie que vous voulez la somme de lignes visibles Mes données dans lesquelles je devais trouver la somme était dans la colonne D J'espère que cela aidera :)


0 commentaires