作者nazomegami (深呼吸~)
看板Office
标题[算表] VBA阵列取唯一值
时间Wed Mar 2 17:07:38 2016
软体:excel vba
版本:2010
(以下文字是在手机上输入的,排版不佳请见谅。)
版上各位大大好,以下我想评估a阵列中字串元素的唯一值(首次出现位置)并计算出现次
数,如果是在储存格中我都习惯使用frequency(match(a,a,0),match(a,a,0)),但是在VB
A中我尝试以evaluate来评估结果却失败。
ꀊ
想请问一下我这样的写法有何错误?迌S或要取得阵列唯一值有何其他作法?é膑癒C
ꀊ
Sub test()
ꂠꀠDim a, b
ꂠꀠDim d, i&
ꂠꀠDim ary(10)
ꂠꀊ
ꂠꂠa = Array("A", "B", "A", "B", "B", "C", "B", "C", "D", "B")
ꂠꀠb = Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
ꂠꀊ
ꂠꂠd = UBound(a)
ꂠꀊ
ꂠꂠFor i = 0 To d
ꂠꂠꂠꀠary(i) = Evaluate("frequency(match(""" & a(i) & """,{""" & Join(a, """
,""") & """},0),match(""" & a(i) & """,{""" & Join(a, """,""") & """},0))")
ꂠꀠNextꂠꂠꂠ
End Sub
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 223.139.77.115
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1456909661.A.78E.html
2F:→ potawei: val = "C" '找C 03/02 20:25
3F:→ potawei: pos = Application.Match(val, A, False) 'C首次位置 03/02 20:25
4F:→ potawei: pos = Application.Match(val, a, False) '小写a 03/02 20:26
5F:→ potawei: 计算出现次数 Scripting.Dictionary 03/02 20:48
7F:→ soyoso: createobject("scripting.dictionary")可以取得唯一值 03/02 20:56
8F:→ soyoso: 为何又要计算出现次数呢? 03/02 20:56
9F:→ soyoso: 抱歉原文,原po有写到要计算出现次数 03/02 20:59
12F:→ nazomegami: 谢谢楼上版友,已测试ok 03/03 12:19