EXCEL的一个单元格包含多组文字对应数字(如图),请问如何进行公式计算

如图,1.横向需要计算空粒乘10与其他项对应数字之和,如空粒是8残处是2,其他都是零,则需计算8*10+2是多少;2.纵向需计算每相同文字项对应数字之和,如纵项所有的空粒对应数字之和,如纵项所有异物对应数字之和,3.请问一格只一个文字对应一个数字,但文字数字均不同,可以只对数字进行求和吗,如何实现请问如何实现,能实现吗。
我举个实际的例子,我会根据需要在括号写数,有没有括号不重要,一个项目对应一个数字,数字为零的我一般省略,也可以都写上,写成零。
单元格内计算(就是横向红字数字)有空粒项的对应的数需要乘以10再相加;其他种类的都是对应数字直接相加,纵向是每项相同文字对应后面的数字之和。
不知道大大们懂了吗

因为比较复杂,直接用公式书写麻烦、不易实现,建议使用VBA

Alt+F11,调出VBA,然后“插入”——“模块”

问题1:

Function Suma(Rng As Range) As Integer
    Dim Tmp As String, Arr
    Tmp = Rng.Text
    Tmp = Replace(Tmp, "空粒(板、袋、装量不足)(", "")
    Tmp = Replace(Tmp, ") 残(半)片(粒)(", ",")
    Tmp = Replace(Tmp, ")双(多)片(粒)(", ",")
    Tmp = Replace(Tmp, ")漏粉(液)(", ",")
    Tmp = Replace(Tmp, ")异物(", ",")
    Tmp = Replace(Tmp, ")空胶囊(", ",")
    Tmp = Replace(Tmp, ")板面不净(", ",")
    Tmp = Replace(Tmp, ")双帽(", ",")
    Tmp = Replace(Tmp, ")", "")
    Arr = Split(Tmp, ",")
    Suma = 0
    For i = 0 To 6
        If Arr(i) <> "" Then Suma = Suma + Arr(i) * IIf(i = 0, 10, 1)
    Next i
 End Function

如果数据在A1,在B1可以输入公式:=Suma(A1)  就可以得到和,82


问题2:  也可以用VBA循环得到,但是建议将数据先单独取出来再计算。用VBA:

Function EachData(Rng As Range, n) As Integer
    Dim Tmp As String, Arr
    Tmp = Rng.Text
    Tmp = Replace(Tmp, "空粒(板、袋、装量不足)(", "")
    Tmp = Replace(Tmp, ") 残(半)片(粒)(", ",")
    Tmp = Replace(Tmp, ")双(多)片(粒)(", ",")
    Tmp = Replace(Tmp, ")漏粉(液)(", ",")
    Tmp = Replace(Tmp, ")异物(", ",")
    Tmp = Replace(Tmp, ")空胶囊(", ",")
    Tmp = Replace(Tmp, ")板面不净(", ",")
    Tmp = Replace(Tmp, ")双帽(", ",")
    Tmp = Replace(Tmp, ")", "")
    Arr = Split(Tmp, ",")

    EachData = IIf(Arr(n - 1) = "", 0, Arr(n - 1))
    

End Function

使用方法:

如果这样,其实问题一的求和不用单独写一个VBA。得到每个项的数字,在后面直接计算就行。纵向计算也方便。

问题3:没看懂

追问

第一个问题就是我要的意思,请问看我的追加图片后,这两项要求有没有好的实现方法,谢谢。第二项不管在一个单元格还是多个,只要能计算出每个相同项目对应的和值就可以了

追答

你实际的单元格内容里面没有数量的项都不显示?

如果那样的话建议用公式吧,虽然比较麻烦,并且不容易看懂:

首先B1~I1复制上各项内容,【括号、标点、空格要与A列的完全一样】

B2输入公式:

=INT(IF(ISERR(FIND(B$1,$A2)),0,MID($A2,FIND(B$1,$A2)+LEN(B$1)+1,FIND(")",$A2,FIND(B$1,$A2)+LEN(B$1)+1)-FIND(B$1,$A2)-LEN(B$1)-1)))

注意:$符号的运用

将公式向后拖到I列,向下拖到行尾。

得到了每种的数量,后面的横向、纵向求和 比较简单,自己写公式吧

追问

试了一下,真大神也,但分出的列我不需要打印,可以放在打印外的部分就是换到别的列吗

温馨提示:内容为网友见解,仅供参考
第1个回答  2017-03-24
这种写法的格式,造成了写函数的复杂性
第2个回答  2017-03-24
格式一致,最好分列,然后处理数据。追问

分列是简单,但怕不利于打印呀

追答

使用函数也很简单,无非复杂一些。把带数据的内容发上来,结果如何显示也说清楚。

第3个回答  2017-03-24
可以用正则提取出数字,再进行计算。
但是需要确定表格中的文本的格式是否规律、一致。
例如:是否每个单元格都有这几项,数量是否都在括号中,数量括号中是否一定有数字,文本是半角还是全角输入的等等,最好上传一部分数据。
相似回答