以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  Excel 返回自定义公式字符串  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=133298)

--  作者:nxhylczh
--  发布时间:2019/4/11 15:09:00
--  Excel 返回自定义公式字符串
单元格值:   =年初数("1001","","","")+年初数("1003","","","")+年初数("1003","","","")
读入的公式变为  =\'余额\'(1001,,)+\'余额\'(1002,,)+\'余额\'(1005,,)
怎么操作还是要返回 =年初数("1001","","","")+年初数("1003","","","")+年初数("1003","","","")
这样就可以用公式计算器了

--  作者:有点甜
--  发布时间:2019/4/11 15:54:00
--  

 

没看懂你的问题是什么。具体说明需要做到的效果。

 

 


--  作者:nxhylczh
--  发布时间:2019/4/11 16:09:00
--  
计算资产负债表


图片点击可在新窗口打开查看此主题相关图片如下:49`%`r49$pm@7@r3i%y)0pg.png
图片点击可在新窗口打开查看

打开这个Excel表后,我的想法是遍历工作表
Dim Book As New XLS.Book(vars("ReportFileName"))
Dim Sheet1 As XLS.Sheet = Book.Sheets(0)

For RowIndex As Integer=1 To sheet1.Rows.Count-1
    For ColIndex As Integer =0 To sheet1.Cols.Count-1
        If sheet1(Rowindex,ColIndex).Formula<> "" Then
            msgbox(sheet1(Rowindex,ColIndex).Formula)         \'如果是公式
            sheet1(Rowindex,ColIndex).Value=Computer2(sheet1(Rowindex,ColIndex).Formula)  \'调用公式计算器进行计算
    \'希望传的参数为 =年初数("1001","","","")+年初数("1003","","","")+年初数("1003","","","")
     \'但是现在传入的参数是 \'年初数\'(1001,,,)+\'年初数\'(1003,,,)+\'年初数\'(1003,,,)  Excel把我需要的引号去掉了
        End If
    Next
Next
自定义函数的格式 Public Function 年初数(ByVal kmbm As String, Optional ByVal iYear As String, Optional subType As String, Optional SubItem As String) As String


--  作者:nxhylczh
--  发布时间:2019/4/11 16:14:00
--  
图片点击可在新窗口打开查看
--  作者:nxhylczh
--  发布时间:2019/4/11 16:15:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:有点甜
--  发布时间:2019/4/11 16:37:00
--  

试试用vba处理

 

Dim App As New MSExcel.Application
Dim Wb As MSExcel.WorkBook = App.WorkBooks.Open("D:\\1234.xls")
Dim Ws As MSExcel.WorkSheet = Wb.WorkSheets(1) \'指定工作表

For RowIndex As Integer=1 To ws.usedrange.rows.Count-1
    For ColIndex As Integer =1 To ws.usedrange.columns.Count-1
        If ws.cells(Rowindex,ColIndex).Formula.startswith("=") Then
            msgbox(ws.cells(Rowindex,ColIndex).Formula)         \'如果是公式
            \'sheet1(Rowindex,ColIndex).Value=Computer2(sheet1(Rowindex,ColIndex).Formula)  \'调用公式计算器进行计算
            \'希望传的参数为 =年初数("1001","","","")+年初数("1003","","","")+年初数("1003","","","")
            \'但是现在传入的参数是 \'年初数\'(1001,,,)+\'年初数\'(1003,,,)+\'年初数\'(1003,,,)  Excel把我需要的引号去掉了
        End If
    Next
Next

 

app.quit


--  作者:nxhylczh
--  发布时间:2019/4/11 16:56:00
--  
鼠标一直转圈  
窗口还不能关闭了

--  作者:有点甜
--  发布时间:2019/4/11 17:29:00
--  

 

是不是你excel的文件的行数列数太大?

 

vba读取是比较慢的。excel文件发上来测试。


--  作者:nxhylczh
--  发布时间:2019/4/11 17:51:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:资产负债表.xls


--  作者:有点甜
--  发布时间:2019/4/11 17:52:00
--  
测试上面代码,瞬间完成,没有问题。