Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 5249|回复: 2

[已解决]用vba将数据按月筛选并存到单独的sheet中,在excel的内置公式如何引用中sheet

[复制链接]
发表于 2015-11-26 21:23 | 显示全部楼层 |阅读模式
本帖最后由 huyvbo 于 2015-11-28 19:44 编辑

利用vba将sheet1中的数据按月筛选,并存到单独的sheet中(该段代码已经调试通过)。同时我也想求每月的数据中ET_PM和ET_Har之间的斜率(第13列和第14列,每个sheet都一样),并将值保存在sheet1中,那么在excel的内置公式如何引用中这些新建的sheet?我在代码中用了循环语句,将新建的sheet对象设置为sht,但在公式中却不知道咋引用了,每次代码执行到计算斜率这段时就出错,弹出一个选择文件的对话框,并提示:”更新值:sht“(见图)。我仔细检查了一下,发现所有的sheet名称前都有一个空格,即“5月”在sheet中显示的是“ 5月”。而公式在引用的时候不知道为何却删除了那个空格,导致找不到sheet了。请问大家知道这是怎么回事吗?该怎么解决这个问题呢?

  • Sub copy_data()
  • Dim month As Integer
  • Dim fori As String
  • For month = 1 To 12
  • Dim sht As Worksheet
  • Dim k As Integer
  •     fori = Str(month) & "月"
  •         Worksheets.Add(after:=Worksheets("sheet1")).Name = fori
  •         Set sht = ThisWorkbook.Worksheets(fori)
  •     With Sheet1
  •         .Range(Cells(, 2), Cells(, 17)).AutoFilter field:=4, Criteria1:=month
  •         If .FilterMode Then
  •             .AutoFilter.Range.SpecialCells(xlCellTypeVisible).Copy sht.Cells(1, 2)
  •             .Cells(3 + month, 19).FormulaR1C1 = "=INTERCEPT(" & fori & "!C13," & fori & "!C14)"
  •         End If
  •     End With
  • Next
  •     Sheet1.AutoFilterMode = False
  • End Sub

出错的窗口

出错的窗口

弹出对话框,找不到对应的sheet

生成的sheet名称前有空格

生成的sheet名称前有空格

通过代码生成的月份前都有空格

引用的字段中空格丢失

引用的字段中空格丢失

但公式引用的时候空格丢失,导致找不到sheet
示例数据.rar (41.47 KB, 下载次数: 6)
发表于 2015-11-27 08:48 | 显示全部楼层    本楼为最佳答案   
将你的第7行:
    fori = Str(month) & "月"
改为
    fori = month & "月"

评分

参与人数 1 +1 收起 理由
huyvbo + 1 果然有效,非常感谢!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2015-11-28 11:54 | 显示全部楼层
yorkchenshunan 发表于 2015-11-27 08:48
将你的第7行:
    fori = Str(month) & "月"
改为

果然一下就没问题了,谢谢!
不过能否麻烦你帮我解释一下为什么不用将integer转换成string呢?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-29 17:16 , Processed in 0.576813 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表