全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 Excel
1939 2
2016-08-05
各位大神,小弟还是菜鸟,想请教一下:

最终目的是根据sheet1中的数填写出sheet2的表格。

首先,我的sheet1中行数列数不定,会增会减,所以需要先自动统计行数列数,   
rts2 = Sheets("sheet1").UsedRange.Rows.Count
cts2 = Sheets("sheet1").UsedRange.Columns.Count
For j = 4 To cts2
。。。
这步好理解。

然后,需要再设定两个range
cs3 = Sheets("Sheet1").Range(Cells(2, 3), Cells(rts2, 3))
cs4 = Sheets("Sheet1").Range(Cells(2, j), Cells(cts2, j))


大神们应该可以看出,我的意图是定义两个range分别代表第三列和第j列(都从第二行开始读数),由于行和列都不定,所以只能用rts2和cts2,以及j表示。

最后,我想用countifs函数
Sheets("Sheet1").Activate
name2 = Cells(1, j)
Sheets(name2).Activate
Sheets(name2).Cells(3, 3) = Application.WorksheetFunction.CountIfs(cs4, 1, cs3, 0)

Sheets(name2).Cells(4, 3) = Application.WorksheetFunction.CountIfs(cs4, 2, cs3, 0)
。。。

我想在新建的sheet中的c3填入符合条件1,0的总数,C4中填入符合条件2, 0 的总数,但这步提示
“不能取得类worksheetfunction的countifs属性”。


本人用的是最笨的办法,但已经写了一堆code了,不想删除,只能接着写,办法还算可行,之前没有统计总行数和列数,只是假设有1000行1000列,code相对于现在的简单一些,虽不太智能但能正常运行且把正确的数填了进去,现在这么一改不对了……试了半天也不行,忘各位大神能帮帮忙看看哪里有问题。

放上来的code只是一小片段,如果大神们需要看整个的我可以单独发送过去,如果不行我就只能再用笨办法了,直接设定最大行数为 65535了。。。


求教了!










二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2016-8-9 10:43:28
cs3,cs4的定义改成下面的试试
复制代码
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2016-9-16 22:56:48
楼上正解。
range对象的默认属性为value

cs3 = Sheets("Sheet1").Range(Cells(2, 3), Cells(rts2, 3))与以下代码等价:
cs3 = Sheets("Sheet1").Range(Cells(2, 3), Cells(rts2, 3)).value

意思是把range的赋予cs3

如果要把range对象赋予cs3,应该在前面加关键字set,同时养成良好的编程习惯,在变量使用前先声明变量,在对象变量使用完毕后,收回变量。

dim cs3 as range
set cs3 = Sheets("Sheet1").Range(Cells(2, 3), Cells(rts2, 3))

......
set cs3=nothing
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群