计算过滤数据的模式

时间:2015-11-04 02:41:42

标签: excel vba excel-vba excel-formula

我是一名攻读地质学硕士(也就是我不是Excel大师)的研究生,目前正在研究我的论文遇到了一个问题。

我的论点的主要观点是,在路易斯安那州的陆上部分留下了大量未发现的碳氢化合物。我试图通过显示路易斯安那州的大部分油田在1980年之前运营来量化这一点(自1980年以来,该技术在该行业中已经真正起步,并且有许多新技术可以帮助重新开放这些旧油田)。

我的Excel工作簿大约有1850页。每个页面包含一个字段的井数据。有些油田钻了数千口井,而其他油井只钻了几口井。这些表格中包含的许多数据之一是获得许可证的日期。我想计算这些油井许可证的模式年份,以确定每个油田达到“高峰期”的年份。

我目前正在使用过滤器来消除大量不必要的数据,并尝试为自己更轻松地进行计算/宏创建。许可日期位于第I栏。我使用Q栏中的年份功能删除日期中的日期和月份,以便能够计算模式年份。但是,Excel拒绝计算模式,因为它一直尝试使用过滤后的信息进行计算,从而返回错误。模式没有小计功能,我找不到适用于我的互联网环境的解决方案。

过滤后的工作表如下所示:

Before Filtering

对于解决方案,我需要公式来计算整个Q列的模式,因为许可数据的范围将按字段变化。

After Filtering

1 个答案:

答案 0 :(得分:0)

简而言之,我认为您需要将公式从=Year()更改为包含条件,以查看该行是否为“必要”行。基于您发布的最新截图,我认为最简单的解决方案可能是在您的年(Q)列中执行类似的操作,其中这是第二季度中的公式:

=if(isnumber(H2),Year(I2),"")

这会导致任何无效行的空白,并且您的模式功能可能只是:

=MODE(Q:Q)

哪会知道忽略空白。

现在,上面的公式过于简单并且无法使用公式复制过滤条件的可能性大于0%。如果必须这样做,您可以创建一个自定义VBA函数来判断一行是否隐藏(过滤后的行将具有hidden = true),如下所示:

Function Hidden(CellValue As Range) As Boolean
    Hidden = Rows(CellValue.Row).Hidden
End Function

第二季度相应的年份功能将变为:

=IF(Hidden(A2),"",YEAR(B2))

同样的模式功能也适用。我在一个小电子表格上测试过它。在过滤之前,此数据的模式是2006年:

enter image description here

如果我过滤掉C列中的非空白,为了消除我的已知模式,E1中的公式确实会更改为下一个模式,这表明忽略了过滤后的值:

enter image description here