我在代码中添加了一条计数行,以计算特定值弹出的次数,然后显示出来。列的大小可以变化(数量巨大)。我最近了解到一个不错的选择(比执行“ For Each”循环更快)是使用Find函数,但是我看不到任何有关使用“ Find”的阅读材料计算值。
这只是我的计数代码的草稿。
s.str.replace(r"\(.*\)","").str.strip()+"_ID_"+s.str.replace(r'[^(]*\(|\)[^)]*', '')
有人可以指出我正确的方向吗?
谢谢。
答案 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