Foxtable(狐表)用户栏目专家坐堂 → 批量改为数值


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

主题:批量改为数值

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 8:58:00 [只看该作者]

如何将这种链接公式='E:\快盘\xl99excel\[资产负债表.xls]资     产     负     债     表'!$D$10粘贴回数值,本表公式如:=SUM(E8:E21)等保留不变?求教老师如何做?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/8 9:09:00 [只看该作者]

以下是引用发财在2014-8-8 8:58:00的发言:
如何将这种链接公式='E:\快盘\xl99excel\[资产负债表.xls]资     产     负     债     表'!$D$10粘贴回数值,本表公式如:=SUM(E8:E21)等保留不变?求教老师如何做?

 

需要遍历所有的单元格,看公式是否是绝对路径的那种,然后执行代码,你发个例子excel表格上来测试。


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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 9:26:00 [只看该作者]

老师你帮我加下代码?

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 9:26:00 [只看该作者]

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:粘贴数值.rar


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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/8 9:28:00 [只看该作者]

 汗,代码如下,自己改一下来用

 

Dim ds() As String = {"C", "D", "E"}
Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.open("d:\test02.xls")
For Each Ws As MSExcel.WorkSheet In Wb.WorkSheets
    For i As Integer = 1 To Ws.UsedRange.Rows.Count
        For j As Integer = 1 To Ws.UsedRange.Columns.Count
            For Each d As String In ds
                If ws.cells(i,j).Formula.Toupper.StartsWith("='" & d & ":\") Then
ws.cells(i,j).copy
                    ws.cells(i,j).PasteSpecial(Paste:=MSExcel.XlPasteType.xlPasteValues, Operation:=MSExcel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False)
                End If
            Next
        Next
    Next
Next
Wb.Save
App.Quit

 


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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 9:56:00 [只看该作者]

这样搜索好像不行,如果是财务软件里的报表公式引用,是不存在路径的如=ge("同期借","517-1"),同样需要粘贴回数值的,并且粘贴的时间太慢了,老师有其他好的办法吗?

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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 10:00:00 [只看该作者]

粘贴一个表估计要20秒。


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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 10:03:00 [只看该作者]

可否换种方法,如何搜索不是链接公式?

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


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2014/8/8 10:07:00 [只看该作者]

 行,那你就这样写,慢没办法。

 

Dim ds() As String = {"'C:\", "'D:\'", "'E:\", "ge"}
Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.open("d:\test02.xls")
For Each Ws As MSExcel.WorkSheet In Wb.WorkSheets
    For i As Integer = 1 To Ws.UsedRange.Rows.Count
        For j As Integer = 1 To Ws.UsedRange.Columns.Count
            For Each d As String In ds
                If ws.cells(i,j).Formula.Toupper.StartsWith("=" & d) Then
ws.cells(i,j).copy
                    ws.cells(i,j).PasteSpecial(Paste:=MSExcel.XlPasteType.xlPasteValues, Operation:=MSExcel.XlPasteSpecialOperation.xlPasteSpecialOperationNone, SkipBlanks:=False, Transpose:=False)
                End If
            Next
        Next
    Next
Next
Wb.Save
App.Quit

 


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


加好友 发短信
等级:六尾狐 帖子:1470 积分:8981 威望:0 精华:0 注册:2013/10/24 9:12:00
  发帖心情 Post By:2014/8/8 15:07:00 [只看该作者]

改为 If ws.cells(i,j).Formula.Toupper.StartsWith("=" & d) Or ws.cells(i,j).Formula.StartsWith("=ge(") Then就行了,但26个excel表用了7至8分钟,太慢了吧,有其他更快的办法吗?


 回到顶部
总数 54 上一页 1 2 3 4 5 6 下一页