我试图在 VBA 中找到数组的模式。
假设有电影标题的动态列表。A:A,还有一个和 B:B 一样长的列表,它是电影“类型”的列表。
我试图找到某种类型的重复次数最多的标题。
注意:A:A 是一个动态列表,我不知道它的长度。
---------------------------------
-Finding Nemo - Cartoon
-Finding Nemo - Cartoon
-Finding Nemo - Cartoon
-Finding Nemo - Cartoon
-Finding Nemo - Cartoon
-Inception - Action
-Inception - Action
-Inception - Action
-Dragon Ball - Cartoon
-Dragon Ball - Cartoon
-Dragon Ball - Cartoon
---------------------------------
以这张表为例,海底总动员是出现次数最多的标题。但是现在我要编写一个函数来返回该结果吗?
我假设一个类似的功能:
=movieMode(5)
其中 5 指定了我想要返回的“顶级”结果的数量。
这里的问题是当 A:A 处于动态长度时我不知道该怎么做。以及如何控制要返回多少个结果。我应该设置一个过滤器,默认情况下只搜索“卡通”。
请分享一些关于这一点的信息。
更新
经过一番研究,我找到了这个公式。
=INDEX(A2:A177,MATCH(MAX(COUNTIF(A2:A177,A2:A177)),COUNTIF(A2:A177,A2:A177),0))
这将在 2 个条件下返回出现次数最多的标题。
- 我使用 Ctrl+Shift+Enter (这似乎是循环遍历范围?)
- 我指定的范围内没有空格。
我需要改进这个公式,使其采用 E:E,其中type
是卡通,并且当 A'x' 不为空时。(当范围为空时,此公式似乎不起作用。
这是我使用 excel 公式的第一天,我已经遇到过这个问题。哈哈
进一步更新
考虑到我上面给出的场景,我希望使用 =movieMode(2)
结果应该是
----------------------------
-Finding Nemo - 5
-Dragon Ball - 3
----------------------------
我希望默认情况下将“卡通”过滤器设置为函数。我从不希望动作出现在任何时候,也不希望它成为变量。
但是,如果我使用
-movieMode(1)
预期结果是
-------------------
-Finding Nemo - 5
-------------------