对过滤的单元格使用工作表函数countif

时间:2019-05-08 12:28:33

标签: excel vba

我正在使用下面的代码在一个过滤的列中循环,并在循环时收集销售人员的每个姓名;我正在使用SpecialCells(xlCellTypeVisible),它仅拾取可见行。我只想要一次名称,所以我正在使用countif工作表功能。一旦有了名称,就将其存储在临时变量(namelist_tmp)中并添加分号。最终的结果是创建一个变量(名称列表),每个名称之间用分号分隔,因此我可以在我拥有的某些电子邮件代码的.to部分中使用它。

我可以遍历并捕获名称,但是当我尝试将temp变量分配给最终变量时,我在namelist_tmp代码上收到运行时错误5无效的过程调用或参数: namelist = Left(namelist_tmp, Len(namelist_tmp) - 2)

我不确定我是否会按照正确的方式做事,善良的灵魂能帮助我看到自己的错误吗?

Sub filteredstuff()
Dim lastRow As Long, myrange As Range
lastRow = Cells(Rows.Count, 2).End(xlUp).Row
For Each myrange In Range("E11:E" & lastRow).SpecialCells(xlCellTypeVisible)
'At each name, use COUNTIF to look upwards and see if the name already exists.
'If not, add name, semi-colon and space to temporary name list
         If WorksheetFunction.CountIf(Range("E11:E" & myrange.Row), _
         Range("E" & myrange.Row)) < 2 Then
             namelist_tmp = namelist_tmp & Range("E" & myrange.Row).Value & "; "
         End If
'Strip last semi-colon & space off of temp list
             namelist = Left(namelist_tmp, Len(namelist_tmp) - 2)
Next myrange
MsgBox namelist
End Sub

1 个答案:

答案 0 :(得分:0)

我已经在虚拟数据上运行了您的代码,对我来说,它可以正常工作,但没有任何错误。 这行很完美,应该没问题:

namelist = Left(namelist_tmp, Len(namelist_tmp) - 2)

您能提供更多细节吗?