作者tina1688 ()
看板Office
標題Re: [算表] 陣列函數寫成VBA
時間Sat Mar 10 20:02:33 2018
※ 引述《tina1688 ()》之銘言:
各位 大大
想計算 範圍內的 不重複文字的 個數
但不知如何轉寫成VBA,有大大可以解惑嗎? 謝謝喔~
示意圖
https://imgur.com/a/LZh4J
檔案連結
https://goo.gl/9Zp6mq
--
Sent from my Windows
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.194.200.173
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1519823881.A.8CC.html
1F:→ soyoso: 迴圈,range.find、range.findnext來尋找範圍區間 02/28 21:59
2F:→ soyoso: 最後一個區間則判斷當尋找到的儲存格為第一次找到的 02/28 21:59
3F:→ soyoso: range.address時則以最後一筆有值的儲存格 02/28 22:00
4F:→ soyoso: 有起迄區間儲存格,可配合evaluate來使用原工作表內 02/28 22:00
5F:→ soyoso: 所寫的陣列公式,儲存格置換為上述起迄區間儲存格位置字 02/28 22:00
6F:→ soyoso: 串以range.address,連接符號以& 02/28 22:00
7F:→ soyoso: 儲存格偏移上以range.offset 02/28 22:00
大大,研究一下後
用evaluate來輸入陣列函數,程式碼如下
但是執行顯示型態不符QQ
我已經找到區間範圍,剩下把陣列公式值丟到儲存格就好了
我要把=SUM(1/COUNTIF(範圍)) ,丟進去。再麻煩大大解惑
ActiveSheet.Range("V" & kkk + 1).Value = Application.Evaluate("=SUM("
& "1/COUNTIF(" & ActiveCell.Range("T" & kkk & ":U" & kkk + ADress_Row) & "))")
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.76.45
※ 文章網址: https://webptt.com/m.aspx?n=bbs/Office/M.1520683356.A.B8B.html
9F:→ soyoso: 或range以address來取得位置字串 03/10 20:29
大大,因要判斷的Range有空格會顯示錯誤
故丟進去函數變成=SUM(IF(T2:U5<>"",1/COUNTIF(T2:U5,T2:U5)))
但顯示#value, 不知道是甚麼問題@@ 拜託大大解惑,謝謝
ActiveSheet.Range("V" & kkk).Value = Application.Evaluate
("=SUM(If(T" & kkk & ":U" & ADress_Row & "<>""" & "," & "1/COUNTIF
(T" & kkk & ":U" & ADress_Row & "," &
"T" & kkk & ":U" & ADress_Row & ")))")
※ 編輯: tina1688 (1.160.76.45), 03/11/2018 13:10:33
11F:→ soyoso: 不等於""於字串內為""""表示,回文內會是"<>""""" 03/11 13:23
12F:→ soyoso: 另外不帶入變數,"<>...countif(t"中間不需要用&來連接 03/11 13:26
大大是這樣嗎?
https://imgur.com/a/P8TlH
不知道哪裡串接錯誤了Q.Q
※ 編輯: tina1688 (1.160.76.45), 03/11/2018 20:31:35
13F:→ soyoso: """""改為"""" 03/11 20:36
大大拍謝,測試後這次變成#VALUE @@
檔案:
http://t.cn/REDUFew
Sub test()
Dim kkk As Integer
Dim ADress_Row As Integer
kkk = 2
ADress_Row = 5
ActiveSheet.Range("V" & kkk).Value = Application.Evaluate _
("=SUM(If(T" & kkk & ":U" & ADress_Row & "< >"""",1/COUNTIF _
(T" & kkk & ":U" & ADress_Row & "," &
"T" & kkk & ":U" & ADress_Row & ")))")
End Sub
※ 編輯: tina1688 (123.194.200.173), 03/11/2018 23:24:22
14F:→ soyoso: < >改為<> 03/11 23:32