[算表] VBA陣列取唯一值

看板Office作者 (深呼吸~)時間10年前 (2016/03/02 17:07), 編輯推噓0(0012)
留言12則, 3人參與, 最新討論串1/1
軟體: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://www.ptt.cc/bbs/Office/M.1456909661.A.78E.html

03/02 18:39, , 1F
可用instr和split https://i.imgur.com/4EhEOx4
03/02 18:39, 1F

03/02 20:25, , 2F
val = "C" '找C
03/02 20:25, 2F

03/02 20:25, , 3F
pos = Application.Match(val, A, False) 'C首次位置
03/02 20:25, 3F

03/02 20:26, , 4F
pos = Application.Match(val, a, False) '小寫a
03/02 20:26, 4F

03/02 20:48, , 5F
計算出現次數 Scripting.Dictionary
03/02 20:48, 5F

03/02 20:53, , 6F
03/02 20:53, 6F

03/02 20:56, , 7F
createobject("scripting.dictionary")可以取得唯一值
03/02 20:56, 7F

03/02 20:56, , 8F
為何又要計算出現次數呢?
03/02 20:56, 8F

03/02 20:59, , 9F
抱歉原文,原po有寫到要計算出現次數
03/02 20:59, 9F

03/02 21:29, , 10F
修改instr方式計數 https://i.imgur.com/fgSDUL1
03/02 21:29, 10F

03/02 23:21, , 11F
03/02 23:21, 11F

03/03 12:19, , 12F
謝謝樓上版友,已測試ok
03/03 12:19, 12F
文章代碼(AID): #1MrgrTUE (Office)
文章代碼(AID): #1MrgrTUE (Office)