作者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/cn.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/cn.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