本帖最后由 xiaoxie2830398 于 2011-11-4 16:50 编辑
有请excel精英里的高手帮我设置一下VBA程序,非常感谢 本人由于工作需要经常使用excel进行数据运算,可是因不会设置运算公式,所以工作增加了很大的工作量,今有幸得知有个excel精英论坛,故特来请教,请高手一定帮忙解决,非常感谢! A | B | C | D | E | 58 | 11.375 | 11.25 | 1 | 0.06389 | | 16.625 | 6.5 | 1 | 0.05384 | | 10.875 | 3 | 2 | 0.03395 | | 11.25 | 6.5 | 1 | 0.03656 | | 18.5 | 4.125 | 2 | 0.07665 | | 6.875 | 6 | 2 | 0.04161 | | 10.875 | 6.625 | 1 | 0.03611 | | 19.125 | 6.625 | 2 | 0.12637 | | 7.375 | 2 | 1 | 0.00772 | | 16.5 | 2.875 | 2 | 0.04861 | | 16.625 | 2.75 | 2 | 0.04653 |
程序构思如下: 1、A/(B+0.125)=C; 注:A即58,B即C列中的数值如11.25,C即58/11.375=5.098
2、取整。去掉C小数点后面的数值得D; 注:去掉C即5.098小数点后面的值得5,即D
3、如果C没有小数点,则(C-1)=E; 注:如58/(28.875+0.125)=2,则2-1=1即E
4、D或E*(B+0.125)=F; 注:5*(11.25=0.125)=56.875或1*(28.875+0.125)=29
5、把F与选择区域(即表C列数值)中(最大的数值+0.125)相加,如果和大于A,则换(第二大的数值+0.125)与F相加,如果和也大于A,则换(第三大的数值+0.125)与F相加……如果选择区域中每个数值都相加过,和都是大于A的(如56.875这个值),则(G+0.125)/C或E /36*H,得出最后结果填入单元格内; 注:G就是表B列的数值,如(11.375+0.125)/5/36*1=0.06389
6、如果选择区域中有一个可用的(最大数值+0.125)与F相加后,和不大于A的,则再把相加后的和(即I)再与选择区域中(最大数值+0.125)相加,一直重复,直到选择区域中没有可用的,相加后和不大于A的数值,得出最后的数值(即In );注:如F 29+11.375=40.375+11.375=51.75+6.125=57.875即In
7、然后(G+0.125)*(B+0.125)/In /36*H,得出最后的结果填入单元格内。 注:G列数值*C列数值/In/36*D列数值,如表第四行(11.25+0.125)*(6.5+0.125)/57.25/36*1=0.03656
8、软件在计算前或计算中要有哪个单元格(或哪部分单元格)对应哪些选择区域的操作; 注:表C列第一行的11.25对应的选择区域是C列的所有数值
9、这个单元格的以上计算程序要能够进行填充操作。
本帖最后由 mxg825 于 2011-11-9 13:28 编辑
到50楼下载,,,已经写好了
|