Foxtable(狐表)用户栏目专家坐堂 → Excel 设置公式


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

主题:Excel 设置公式

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2019/10/30 11:27:00 [只看该作者]

老师,那我要区域,就是多单元格的,要怎么遍历处理呢?
我现在这样写:
Dim App As New MSExcel.Application
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open(lj1)
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets("沈阳")
Dim Rg As MSExcel.Range
rg = Ws.Range("C4:C13")
Dim s As String = RG.Formula
Output.Show(RG.Value )
Output.Show(RG.Formula )
s = s.replace(day1,day2)
RG.Formula = s
Output.Show(RG.Value )
Output.Show(RG.Formula )
Wb.SaveAs(lj2)
Wb.close
App.Quit


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


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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2019/10/30 11:30:00 [只看该作者]





  • 通过Cells集合引用

    例如Cells(i,j)就表示第i行、第j列处的单元格,i、j都是整数。
    如果没有指定具体的行号和列号,那么就代表引用整个工作表。如,Rg = Ws.Cells。
    如果需要 按位置循环引用单元格区域的各个单元格,那么使用Cells属性是最方便的,例如下面的代码就是将第5-10行、6-20列的所有单元格内容替换为"abc":

    Dim App As New MSExcel.Application
    Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\Report.xls")
    Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1)
    Dim Rg As MSExcel.Range
    For i As Integer = 5 To 10
        For j As Integer = 6 To 20
            Rg = Ws.Cells(i,j)
            Rg.Value = "abc"
        Next
    Next
    App.Visible = True
老师,发现可以用这个。
有没有其他的方式呢。

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2019/10/30 11:33:00 [只看该作者]

就是想整个工作表都替换掉,不需要去指定单元格
[此贴子已经被作者于2019/10/30 11:32:55编辑过]

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/30 12:06:00 [只看该作者]

只能遍历单元格,一个个设置

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2019/10/30 15:05:00 [只看该作者]

老师,我一个工作簿有33个工作表,要替换公式里面的 26 变成 27 
用EXCEL本身的查找替换,挺快的,用我们这个逐个遍历,有点慢
老师,不知道有没有更好的办法。。。
Dim Wb As MSExcel.Workbook = App.WorkBooks.Open(lj1)
Dim Ws As MSExcel.WorkSheet
ws = Wb.WorkSheets(n)
Dim st As Date = Date.Now
output.show(Ws.Name)
Dim Rg As MSExcel.Range
For i As Integer = 1 To 167
    For j As Integer = 1 To 15
        Rg = Ws.Cells(i,j)
        Dim gs As String = rg.Formula
output.show(Ws.Name)
        If gs.Contains(day1) Then
            Dim s As String = RG.Formula
            s = s.replace(day1,day2)
            RG.Formula = s
        End If
    Next
Next

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

[此贴子已经被作者于2019/10/30 15:14:15编辑过]

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/30 15:25:00 [只看该作者]

测试了一下,是可以对多个单元格同时设置的,前提是这些单元格的公式都是一样的

Wb.WorkSheets(1).range("A1:A5").Formula = “xxx公式”

11楼的错误是Output.Show(rg.Value )导致的,因为多个单元格的时候rg.Value 是一个数组,不能直接放在Output.Show

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2019/10/30 15:38:00 [只看该作者]

老师,他公式是这样:
='D:\10月\[北京-2019年10月日报表.xlsx]25'!C12
='D:\10月\[北京-2019年10月日报表.xlsx]25'!C13
='D:\10月\[北京-2019年10月日报表.xlsx]25'!C14
每个格引用的对应的格,不是都是一样

所以,我们之前就是用excel表格把 25 替换 成 28 ,这样就可以了

这种情况适用于你说的那个方法吗?

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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/30 15:43:00 [只看该作者]

不一样的只能一个个单元格的处理

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


加好友 发短信
等级:九尾狐 帖子:2355 积分:16187 威望:0 精华:0 注册:2013/9/1 8:09:00
  发帖心情 Post By:2019/10/30 17:04:00 [只看该作者]

老师,你看,excel里替代公式,快
哎,本想做个自动化的。。。

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


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


加好友 发短信
等级:超级版主 帖子:107440 积分:546479 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/10/30 17:27:00 [只看该作者]

这个没有办法,没有可比性。

 回到顶部
总数 22 上一页 1 2 3 下一页