计算列中的特定值

时间:2018-10-15 15:38:36

标签: excel vba excel-vba

我在代码中添加了一条计数行,以计算特定值弹出的次数,然后显示出来。列的大小可以变化(数量巨大)。我最近了解到一个不错的选择(比执行“ For Each”循环更快)是使用Find函数,但是我看不到任何有关使用“ Find”的阅读材料计算值。

这只是我的计数代码的草稿。

s.str.replace(r"\(.*\)","").str.strip()+"_ID_"+s.str.replace(r'[^(]*\(|\)[^)]*', '')

有人可以指出我正确的方向吗?

谢谢。

2 个答案:

答案 0 :(得分:0)

尝试一下:

Sub Counting()

    Dim LastRow As Long, Count As Long, rng As Range, sheet1 As Worksheet

    Set sheet1 = ThisWorkbook.Sheets("whateverursheetiscalled")
    LastRow = sheet1.Range("H2").End(xlDown).Row
    Set Range = sheet1.Range("H2:H" & LastRow)
    Count = Application.CountIf(rng, "VALUE")
    sheet1.Range("O3") = Count

End Sub

答案 1 :(得分:0)

如果您要处理大量数据(提到30列,每行26 k行),那么作为一般方法,我认为使用数组会更有效。几年前,我将这种技术应用于一本工作簿,在该工作簿中,我们对许多行数据进行了许多验证。对于某些客户,验证例程最多可能需要25分钟。使用数组,我将其减少到4秒,现在我们将在各处使用此方法,除非它非常简单,有限的验证/功能 简单的概念是将整个工作表读入一个数组,然后以您喜欢的任何方式处理该数组,然后将所有结果写回末尾。这完全与VBA层和工作表层之间的I / O有关。每次使用VBA读写单元时,应用程序层之间都会有一个I / O。通过一次将数据读入一个数组,并在最后写回数据,您可以有效地将数千个/百万个I / O减少到2