excel中能不能让分母与分子相乘后求和,分母相加求和?如2/3+1/4=(2*3+1*4)/(3+4)

 我来答
百度网友e1af404
2013-04-29 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.1万
采纳率:59%
帮助的人:4066万
展开全部
可以,你这一问其实是在自定义一种运算规则。
只需要用字符处理函数做
假设2/3在A1中,1/4在B1中——两格均为文本格式
那么
A1的分子:left(a1,find("/",a1)-1)
A1的分母:right(a1,len(a1)-find("/",a1))
B1的分子:left(B1,find("/",B1)-1)
B1的分母:right(B1,len(B1)-find("/",B1))
于是可以在C1中填入以下公式
=(left(a1,find("/",a1)-1)*right(a1,len(a1)-find("/",a1))+left(B1,find("/",B1)-1)*right(B1,len(B1)-find("/",B1)))/(right(a1,len(a1)-find("/",a1))+right(B1,len(B1)-find("/",B1)))
即可
tf日出
2013-04-30 · TA获得超过1077个赞
知道小有建树答主
回答量:648
采纳率:0%
帮助的人:260万
展开全部

只是有两个这样的分数相加吗,如果只是这样的话还好一些。

假设:A1单元格中为字符串:2/3+1/4,那么,可以在A2中输入:

=(LEFT(A1,FIND("/",A1)-1)*MID(A1,FIND("/",A1)+1,FIND("+",A1)-FIND("/",A1)-1)+MID(A1,FIND("+",A1)+1,FIND("/",A1,FIND("+",A1))-FIND("+",A1)-1)*RIGHT(A1,LEN(A1)-FIND("/",A1,FIND("+",A1))))/(MID(A1,FIND("/",A1)+1,FIND("+",A1)-FIND("/",A1)-1)+RIGHT(A1,LEN(A1)-FIND("/",A1,FIND("+",A1))))

 

但如果不确定要加多少个这样的分数的话,那么必须要用的数组公式,这个公式就会相当长而复杂,建议用自定义函数(ALF+F11,添加模块,插入如下代码)。定义完自定义公式后就可以直接了:A2中输入:=WA(A1)

 

Function WA(sExp$)
Dim DT(), DTstr, dNo%
Dim sD#, sW#
DTstr = Split(sExp, "+")
dNo = UBound(DTstr)
ReDim DT(dNo)
For I = 0 To UBound(DT)
DT(I) = Split(DTstr(I), "/")
If UBound(DT(I)) <> 1 Then Exit Function
sD = sD + Val(DT(I)(0)) * Val(DT(I)(1))
sW = sW + Val(DT(I)(1))
Next I
WA = sD / sW
End Function



示例参见附件:

追问
你回答的第二种方法和我想要的结果一样!但是新问题又出现了:EXCEL中分数显示有问题,会约分,如果分母中有小数,显示更有问题,所以我现在想你帮帮忙改一下,还是上例,如A1单元格中公式2/13+12/126+32/45+23/434,在B1单元格中显示分母与分子相乘后的和,即(2*13+12*126+32*45+23*434)=12960,在C1单元格中显示分母相加的和,即(13+126+45+434)=618
追答

你说的要约分或要有小数时有问题是你单元格中是数值,这个程序所做的是表达式的字符串,所以是严格按照你的要求做的,不会进行约分,也没有小数问题,你可以自己算一下试试。

可以看一下下面的例子中,你可以比较一下结果(40/80不会被约成1/2; 还有0.1/0.2也是严格按照你的公式计算的):

 

 

如果一定要写一下中间结果,那就把函数稍改一下,增加一个参数vNo,vNo取0或者缺省不写时就是你要的计算结果,取1时分母与分子相乘后的和,取2时就是分母之和,函数修改如下:

 

Function WA(sExp$, Optional vNo% = 0)
Dim DT(), DTstr, dNo%
Dim sD#, sW#
DTstr = Split(sExp, "+")
dNo = UBound(DTstr)
ReDim DT(dNo)
For I = 0 To UBound(DT)
    DT(I) = Split(DTstr(I), "/")
    If UBound(DT(I)) <> 1 Then Exit Function
    sD = sD + Val(DT(I)(0)) * Val(DT(I)(1))
    sW = sW + Val(DT(I)(1))
Next I
WA = Choose(vNo + 1, sD / sW, sD, sW)
End Function

 

示例下载:

本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
笑一笑说一说
科技发烧友

2013-04-30 · 职场办公软件基础应用
笑一笑说一说
采纳数:16868 获赞数:33711

向TA提问 私信TA
展开全部
假设2/3在A1中,1/4在B1中——两格均为文本格式
那么
=(LEFT(A1,FIND("/",A1)-1)*RIGHT(A1,LEN(A1)-FIND("/",A1))+LEFT(B1,FIND("/",B1)-1)*RIGHT(B1,LEN(B1)-FIND("/",B1)))/(RIGHT(A1,LEN(A1)-FIND("/",A1))+RIGHT(B1,LEN(B1)-FIND("/",B1)))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
蚂蚁帝国
2013-04-29 · TA获得超过2005个赞
知道大有可为答主
回答量:2836
采纳率:100%
帮助的人:1862万
展开全部
a1输入'2/3
a2输入'1/4
那么在b1输入=(LEFT(A1)*RIGHT(A1)+LEFT(A2)*RIGHT(A2))/(RIGHT(A1)+RIGHT(A2))就是结果
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式