excel怎样用宏递增选择

第1天选择的是:Range("A1225:AL1225").Select
如何实现第2天只选择:Range("A1226:AL1226").Select
  不再选择第1天的:Range("A1225:AL1225").Select
如何实现第3天只选择:Range("A1227:AL1227").Select
  不再选择第2天的:Range("A1226:AL1226").Select

以此类推
谢谢!

第1个回答  2011-08-11
可以用宏来写,搜索"隔行插入",网上有一堆这样的代码.
如果不是很想用宏解决,那么推荐使用辅助列的技巧来完成.

例如有 200行,
1,在首列插入一空列A,在上面填上偶数序列号如
2,4,6。。。400
2,在单元格A201起,向下填入奇数序列号1,3,5..........399 为止。
3, 在201行到400行,从B列开始复制你的标题行
3,选中全表,进行递增排序。
4,删除加入的首列。就得到你要的400行结果了
追问

我的要求是如何用宏的代码来实现:
第1天选择的是:Range("A1225:AL1225").Select
第2天只选择:Range("A1226:AL1226").Select 
第3天只选择:Range("A1227:AL1227").Select 
第4天只选择:Range("A1228:AL1228").Select
以此类推

第2个回答  2011-08-12
不大清楚你所说的第几天是如何给出的。假设天的数据在A1单元格,用1表示第1天,2为第2天,通过改变A1单元格中的天数,执行宏就可以得到结果。宏的程序如下:
x =Cells(1, 1)+1224 ‘第1天从1+1224开始
s = "A" + Str(x) + ":AL" + Str(x)
s = Replace(s, " ", "")
Range(s).Select追问

Sub 宏1()
'
' 宏1 宏
'
' 快捷键: Ctrl+q
'
Range("B1225:AL1225").Select
ActiveWorkbook.Save
End Sub
也就是说,今天选择的是1225行B列至AL列,到明天只选择1226行B列至AL列,不再选择1225行B列至AL列的数据,以此类推下去。再麻烦你在上面增加一个关闭工作薄的代码,谢谢!
另外,用你提供的代码,操作了一下,直接就选择了4225行B列至AL列,没有能选择1225行,再按快捷键,还是原地不动,是什么原因吗?

追答

补充:
假设以2011-8-1日期为基准选择1225行,则可以修改上述x的计算语句为:
x=1225+DateValue(Date) - DateValue("2011-8-1")
程序将自动根据系统日期执行。修改后程序如下:
x=1225+DateValue(Date) - DateValue("2011-8-1")
s = "A" + Str(x) + ":AL" + Str(x)
s = Replace(s, " ", "")
Range(s).Select
' ...... 其他语句
ActiveWorkbook.Close SaveChanges:=True
最后一句是保存并关闭工作表。

本回答被提问者采纳
相似回答