Foxtable(狐表)用户栏目专家坐堂 → 关于EXCEL 设置单元格公式问题


  共有14385人关注过本帖树形打印复制链接

主题:关于EXCEL 设置单元格公式问题

帅哥哟,离线,有人找我吗?
lin_hailun
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 11:43:00 [显示全部帖子]

由于特殊,只能够在生成报表以后再一个一个地往报表里写入公式。

感觉这样弄很让人纠结,下面是弄好的例子。

 
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:费用明细改.zip



 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 15:06:00 [显示全部帖子]

 不明白为什么公式会失效。

 如果是起初取出来保存最后设置回去的话,公式应该不会出错才对。

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 15:23:00 [显示全部帖子]

以下是引用狐狸爸爸在2012-10-10 15:16:00的发言:

估计是这个原因:

模版的第一列用于定义细节区,生成报表之后,这一列会被删除,也就是生成报表后,整体会左移一列,例如原来模版的C3单元格,生成报表后,会变成B3单元格


试过直接在定义公式的时候,全部左移一列,公式只有第一个是对的,其余都是乱的。

狐爸,是不是Bug图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 15:26:00 [显示全部帖子]


[此贴子已经被作者于2012-10-10 15:26:38编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 16:12:00 [显示全部帖子]

 楼主自己弄一下吧,区分如下图


图片点击可在新窗口打开查看此主题相关图片如下:qq截图20121010161120.png
图片点击可在新窗口打开查看


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 17:14:00 [显示全部帖子]

 楼主,你用下面这段代码吧。

 需要你在excel模板里填入公式,但注意公式要左移一位(比如 E4:E9 要写成 D4:D9)

 原本想帮你自动左移一位的,不过这样会复杂一些。你试一下,测试有效。

Dim Book_Mod As New XLS.Book(ProjectPath & "Attachments\2012 NCB Budget Actuals.xls")
Dim Book_Rep As New XLS.Book(ProjectPath & "Attachments\2012 NCB Budget Actuals.xls")
Dim fl As String = ProjectPath & "Reports\2012 NCB Budget Actuals.xls"

Book_Rep.Build() '生成细节区

For Each sheet As XLS.Sheet In book_Mod.Sheets
    For i As Integer = 0 To sheet.Rows.Count - 1
        For j As Integer = 0 To sheet.Cols.Count - 1
            If sheet(i, j).Formula <> "" Then   '是公式
                book_Rep.Sheets(sheet.Name)(i, j-1).Formula = sheet(i, j).Formula   '把公式重新写入
            End If
        Next
    Next
Next

Book_Rep.Save(fl)
Dim Proc As New Process
Proc.File =fl
Proc.Start()

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 17:28:00 [显示全部帖子]

以下是引用josieli在2012-10-10 17:26:00的发言:
还是我哪里弄错了?

我测试有效,逻辑也有效,你把修改以后的模板放上来看看。记得,水平全部左移一位。
[此贴子已经被作者于2012-10-10 22:13:02编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/10 22:19:00 [显示全部帖子]

 这个绝对是Bug。

 用XLS.Book去取得的公式,并不是文件所示的那样(出现了乱码)

 而用MSExcel.Application去取就是好的。

 这个问题弄得叔纠结了很久。下面是解决方法。

 但是,MSExcel读取数据的时候很慢...很慢......楼主将就下用。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:费用明细.zip



 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/11 14:52:00 [显示全部帖子]

 呵呵,好像03和07不兼容……你用的是07吗?

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/10/11 16:03:00 [显示全部帖子]

 抱歉,是我写错了几句代码,这次真的可以了。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:费用明细.zip

 回到顶部
总数 11 1 2 下一页