【发布时间】:2015-11-14 12:44:55
【问题描述】:
在处理大型数据集时,我无法确定将1 或0 输入相邻单元格以指示值是否唯一的方法。我已经阅读了多种实现此目的的方法,但是它们似乎都没有对我的目的有效:我正在使用 Excel 2010 的一个实例(所以我没有有 Distinct Count 数据透视表中的功能,当我尝试使用 PowerPivot 时,由于处理限制,它会使我的文件崩溃。
在这个 StackOverflow 问题中:Simple Pivot Table to Count Unique Values 建议使用 SUMPRODUCT 或 COUNTIF,但是当我使用 50,000+ 行时,这会导致糟糕的性能和 ~35 MB 的文件大小而不是 ~ 3 MB。我想知道对于大型动态数据集是否有更好的解决方案,无论是公式还是 VBA。
我想要完成的一个例子是(Unique 列是相邻的单元格):
Name Week Unique
John 1 1
Sally 1 1
John 1 0
Sally 2 1
我尝试编写与COUNTIF 相同的功能,但没有成功:
For Each Cell In ThisWorkbook.Worksheets("Overtime & Type Data").Range("Z2:Z" & DataLastRow)
If Worksheets("Overtime & Type Data").Cells(Cell.Row, 26) <> Worksheets("Overtime & Type Data").Cells(Cell.Row - 1, 26) Then
FirstCell = Cell.Row
End If
If (Worksheets("Overtime & Type Data").Range(Cells(FirstCell, 26), Cells(Cell.Row, 26)) = Worksheets("Overtime & Type Data").Range(Cells(Cell.Row, 26))) = True Then
Cell.Value = 1
Else
Cell.Value = 0
End If
Next Cell
【问题讨论】:
-
您遇到错误了吗?如果是的话在哪里?如果没有,发生了什么?
-
我目前遇到了一个运行时 1004 错误,但我不认为我编写了这个脚本,因为我不知道如何转换 if
Range=Cellis @ 987654331@声明很好! -
代码挂在哪里?我注意到的一件事是第一行需要以“.cells”结尾。另一个在你的第二个 if 语句中去掉 '=true'。
标签: excel vba unique uniqueidentifier distinct-values