首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用subtotal函数保值的问题

使用subtotal函数保值的问题
EN

Stack Overflow用户
提问于 2021-11-10 11:01:18
回答 2查看 48关注 0票数 0

当我重新筛选单元格时,你知道如何防止subtotal函数改变吗?

代码语言:javascript
复制
' Variable pour trouver la dernière ligne
    Dim DernLigne As Long
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row + 1

' Insérer Montant HT en G
    Sheets("DETAIL MAG").Select
    Rows("1:1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$U$17874").AutoFilter Field:=12, Criteria1:="**FR240**" 'Filter sur FR240
    Sheets("IML").Select
    Range("G" & DernLigne).FormulaR1C1 = "=SUBTOTAL(9,'DETAIL MAG'!C[11])"

当我对下一行使用另一个过滤器执行相同的功能时,它会改变我之前的单元格。

代码语言:javascript
复制
' Variable pour trouver la dernière ligne
        Dim DernLigne As Long
        DernLigne = Range("A" & Rows.Count).End(xlUp).Row + 1

    ' Insérer Montant HT en G
        Sheets("DETAIL MAG").Select
        Rows("1:1").Select
        Selection.AutoFilter
        ActiveSheet.Range("$A$1:$U$17874").AutoFilter Field:=12, Criteria1:="**FR0S0**" 'Filter sur FR0S0
        Sheets("IML").Select
        Range("G" & DernLigne).FormulaR1C1 = "=SUBTOTAL(9,'DETAIL MAG'!C[11])"

也许另一个函数会更好?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-11-10 13:09:04

您必须将过滤后的数据总和以dim格式存储,然后将其粘贴到range/cell中您想要的位置:)。

对于第一次迭代/函数/部分,它将是

代码语言:javascript
复制
Dim FR240 As Range
Dim SUM_FR240 As Long
Dim DernLigne As Long

DernLigne = Sheets("DETAIL MAG").Range("A" & Rows.Count).End(xlUp).Row 'last row
Set FR240 = Sheets("DETAIL MAG").Range("A1:U17874") 'setting whole range of data
Sheets("DETAIL MAG").AutoFilterMode = False 'turning off all filters
FR240.AutoFilter field:=12, Criteria1:="**FR240**" 'filtering data
SUM_FR240 = Application.WorksheetFunction.Sum(Sheets("DETAIL MAG").Range("C2:C" & DernLigne).SpecialCells(xlCellTypeVisible)) 'summing filtered data

如果你想把它放在单元格中,那么只需使用Sheets("IML").Cells("G1") = SUM_FR240或其他。

对第二个函数执行相同的操作,并将总和放在不同的单元格/区域中

票数 0
EN

Stack Overflow用户

发布于 2021-11-22 10:47:54

它工作得很好,但当我复制单元格中的过滤数据时,它会对数字进行四舍五入。你知道怎么停止舍入数字吗?

代码语言:javascript
复制
Dim FR520 As Range  
Dim SUM_FR520 As Long   
Dim DernLigne As Long DernLigne = Sheets("DETAIL MAG").Range("A" & Rows.Count).End(xlUp).Row + 1 'last row 
Set FR520 = Sheets("DETAIL MAG").Range("A1:U17874") 'setting whole range of data
Sheets("DETAIL MAG").AutoFilterMode = False 'turning off all filters 
FR520.AutoFilter field:=12, Criteria1:="FR520" 'filtering data SUM_FR520 = Application.WorksheetFunction.Sum(Sheets("DETAIL MAG").Range("R1:R" & DernLigne).SpecialCells(xlCellTypeVisible)) 'summing filtered data
 
Range("G" & DernLigne).Value = SUM_FR520

在单元格G中,我有"4367,00“而不是"4367,24”

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69912102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档