以文本方式查看主题

-  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=123419)

--  作者:188802386
--  发布时间:2018/8/14 12:05:00
--  [求助]excel公式计算
我有一个提成公式=ROUND(MAX(E3*{0.16,0.19,0.22,0.25,0.3,0.35,0.4,0.45,0.45,0.45}-{0,300,900,1800,3800,6300,9300,12800,12800,12800},0),2)
请问在系统里面业绩列输入业绩后,提成列通过上面的公司得出相应的金额,请问该如何操作。
E3为业绩列

--  作者:有点甜
--  发布时间:2018/8/14 12:16:00
--  

写代码计算吧,比较麻烦的。

 

Dim ary1() As Double = {0.16,0.19,0.22,0.25,0.3,0.35,0.4,0.45,0.45,0.45}
Dim ary2() As Double = {0,300,900,1800,3800,6300,9300,12800,12800,12800}
Dim v As Double = 10000

Dim ary3(ary1.length-1) As Double
For i As Integer = 0 To ary3.length-1
    ary3(i) = v*ary1(i)-ary2(i)
Next
array.sort(ary3)
msgbox(ary3(ary3.length-1))


--  作者:188802386
--  发布时间:2018/8/14 12:33:00
--  
甜老师太牛了,结果是我想要得。但能不能解释下是怎么得出来的呢,这代码啃不透,看不懂啊。
--  作者:有点甜
--  发布时间:2018/8/14 14:46:00
--  
以下是引用188802386在2018/8/14 12:33:00的发言:
甜老师太牛了,结果是我想要得。但能不能解释下是怎么得出来的呢,这代码啃不透,看不懂啊。

 

比如excel公式是 100*{1,2,3}-{7,8,9}

 

实际上展开就是 100*1-7,100*2-8,100*3-9,如果再加上max,就是获取三个数的最大值。


--  作者:188802386
--  发布时间:2018/8/16 12:25:00
--  
列1 {0.16,0.19,0.22,0.25,0.3,0.35,0.4,0.45,0.45,0.45}
列2 {0,300,900,1800,3800,6300,9300,12800,12800,12800}
业绩 10000
sql数据库里有这三列数据,能否用sql语句来计算提成呢

--  作者:有点甜
--  发布时间:2018/8/16 12:32:00
--  

回复5楼,是无法直接计算的。

 

如果需要计算,你要在数据库那里添加一个函数,用来分割出值,计算,最后返回一个结果。


--  作者:188802386
--  发布时间:2018/8/16 13:14:00
--  
甜老师,能详细讲下具体步骤吗,我看到sql里也有max round 函数啊
表里有个提成公式列 {0.16,0.19,0.22,0.25,0.3,0.35,0.4,0.45,0.45,0.45}-{0,300,900,1800,3800,6300,9300,12800,12800,12800}  就是这样的内容
如果这种不得行的话,或者需要怎么改动表 只要能实现sql来计算这个提成就行
[此贴子已经被作者于2018/8/16 13:18:08编辑过]

--  作者:有点甜
--  发布时间:2018/8/16 14:24:00
--  

1、添加函数,编写计算逻辑

 

https://www.baidu.com/baidu?wd=sql+server+create+function

 

2、调用函数返回计算结果。

 

3、函数的编写类似2楼的代码,自行学习sqlserver编程。