以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]如何实现EXCEL函数运算  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=68750)

--  作者:l1q2lq
--  发布时间:2015/5/24 9:25:00
--  [求助]如何实现EXCEL函数运算
excel中函数为:
K5=SUMPRODUCT($N$2:$S$2,N5:S5)
指定单元格计算


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


FOXTABLE中如何实现,都是整列整行对应的计算,怎么做到指定单元格计算


--  作者:大红袍
--  发布时间:2015/5/24 9:52:00
--  

 去写Datacolchanged事件代码

 

Select Case e.DataCol.Name
    Case "第四列", "第五列", "第六列"
        Dim r1 As Row = Tables("表A").Rows(0)
        e.DataRow("第一列") = r1("第四列") * e.DataRow("第四列") + r1("第四列") * e.DataRow("第五列") + r1("第六列") * e.DataRow("第六列")
End Select


--  作者:l1q2lq
--  发布时间:2015/5/24 10:15:00
--  
先谢过, 小白,麻烦问一下去写Datacolchanged事件代码 这个是在哪个窗口做? 表达式列公式吗?我这边代码粘进去修改后显示CASE运算符后缺少操作数
--  作者:大红袍
--  发布时间:2015/5/24 10:17:00
--  

 初学者,建议先去看一下视频教程

 

http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&Id=67818

 


--  作者:l1q2lq
--  发布时间:2015/5/24 10:20:00
--  
好的,谢谢
--  作者:l1q2lq
--  发布时间:2015/5/24 11:03:00
--  
大大,
Select Case e.DataCol.Name
    Case "手动两驱基本型", "手动两驱标准型", "手动两驱舒适型"
        Dim r1 As Row = Tables("PBOM").Rows(0)
        e.DataRow("生产计划1") = r1("手动两驱基本型") * e.DataRow("手动两驱基本型") + r1("手动两驱基本型") * e.DataRow("手动两驱标准型") + r1("手动两驱基本型") * e.DataRow("手动两驱舒适型")
End Select

我按这个修改过后,修改数值后只返回一列的变化

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

想要得到的是图中第三列第四行的值=第六列第一行*第六列第四行+第七列第一行*第七列第四行+第八列第一行*第八列第四行, Dim r1 As Row = Tables("PBOM").Rows(0) 是否是因为我这句的赋值有错误?
麻烦了
[此贴子已经被作者于2015/5/24 11:04:51编辑过]

--  作者:大红袍
--  发布时间:2015/5/24 11:12:00
--  
 代码没有问题,现在有什么问题?你修改一下 手动两驱基本型, 手动两驱标准型, 手动两驱舒适型 的值,不计算么?
--  作者:l1q2lq
--  发布时间:2015/5/24 11:15:00
--  
计算,但是我修改了手动基本型第一行的值为100,得到生产计划1第一行的值为10000,跟我需要的运算结果不符
想要得到的是图中生产计划1第四行的值=手动基本型第一行*手动基本型第四行+手动标准型第一行*手动标准型第四行+手动舒适型第一行*手动舒适型第四行
之后第三列每一行的值都按这个函数进行计算
[此贴子已经被作者于2015/5/24 11:18:09编辑过]

--  作者:大红袍
--  发布时间:2015/5/24 11:25:00
--  

Select Case e.DataCol.Name
    Case "第四列", "第五列", "第六列"
        Dim idx As Integer = Tables("表A").FindRow(e.DataRow)
        If idx = 0 Then
            e.DataTable.DataCols("第四列").RaiseDataColChanged("_Identify <> " & e.DataRow("_Identify"))
            e.DataRow("第一列") = Nothing
        Else If idx = 1 Then
            e.DataRow("第一列") = Nothing
        Else
            Dim r1 As Row = Tables("表A").Rows(0)
            e.DataRow("第一列") = r1("第四列") * e.DataRow("第四列") + r1("第五列") * e.DataRow("第五列") + r1("第六列") * e.DataRow("第六列")
        End If
End Select


--  作者:l1q2lq
--  发布时间:2015/5/24 11:31:00
--  
万分感谢,这个可以了 我这边好好研究一下代码