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. 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 = ???
6 Réponses :
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
Si vous voulez seulement la somme plutôt que SUMIF
AtmCurrentSum = application.worksheetfunction.subtotal(9, Range("X3:X4533"))
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 . Cod> partie s'il n'est généralement pas nécessaire
Je viens de rencontrer ce site. HTTPS: / /www.techrepublic.com/blog/microsoft-Office/how-a-sum-values-in-an-excel-Filtered-list/ P>
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)) p>
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)
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. P>
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: p> points à retenir lorsque vous appliquez une formule sous-total: p>
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) Code>. Connaissez-vous l'argument correspondant pour 109 code> pour entrer dans Fonction: = code>?
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)
Si vous utilisez Excel 2016, cela fonctionnera p>
Somme = Application.worksheetfunction.SubTotal (9, plage ("$ D2: D" et lignes (lignes.count) .end (XLUP) .row)) p>
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 :) p>
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.