【发布时间】:2014-09-13 05:06:23
【问题描述】:
今天我遇到以下问题:我在 Excel 中有 2 列 x 行(不管多少行),每列都有一个字符串,像这样
A B
Apple Potato
Banana Potato
Apple Potato
Orange Apple
每个字符串都可以出现在两列中。
我需要得到以下结果:
Fruit Occurrencies
Apple 3
Banana 1
Potato 3
Orange 1
现在,我确信有一种方法比我想象的要快得多,如果您能提供任何帮助,我将不胜感激。
我的解决方案包括将字符串一一存储在一个数组中,每次检查它们是否已经包含在当前一个插槽之前的插槽中,如果没有,也计算它的出现次数。例如,在将所有字符串存储在一个数组中之后(我现在将其称为Fruit()):
Dim Str() As Variant
Dim Flag As Boolean
For i = LBound(Fruit)+1 to Ubound(Fruit)
Flag = True
For j = i to LBound(Fruit)
If Fruit(i) = Fruit(j) Then
Flag = False
Exit For
End If
Next
If Flag = True Then
Str(k,0) = Fruit(i)
For y = LBound(Fruit) to UBound(Fruit)
if Str(k,0) = Fruit(y) Then Str(k,1) = Str(k,1)+1
Next
k = k+1
End If
Next
这太疯狂了,我知道有一个更简单的解决方案......我只是找不到它。
【问题讨论】:
-
这里可能值得一读:spreadsheetpage.com/index.php/file/…
-
Gareth 很好,但是我如何访问数据透视表的结果(例如,我需要将不同的单词和出现的情况存储在数组中)?考虑到我对数据透视表一无所知,我可以创建一个而不在我的工作表中“写下来”吗?
-
您需要编程解决方案 (VBA) 还是更喜欢一些手动数据表操作?
-
请编程。如前所述,我无法修改我的数据表/插入公式等。
标签: vba excel excel-formula pivot-table find-occurrences