怎样在Excel单元格中对数字求和啊?(单元格包括文字、字符和数字),求高手帮忙了,非常感谢!!!

如下表,求面膜、贵度(商务紫)、魔影的数量。
面膜*1/贵度(商务紫)*2
面膜*1/贵度(商务紫)*2/魔影*1
面膜*1/贵度(商务紫)*2/魔影*2
面膜*1/贵度(商务紫)*2/魔影*3
面膜*1/贵度(商务紫)*2/魔影*4
需要的结果
面膜 5
贵度(商务紫) 10
魔影 10

另我要计算的是个导出的表哦!

非常感谢大家,我刚才研究了一下,用“分列”是可以办到的,就是麻烦了一点,要分很多次。分完再后用sumif就统计出来了,这样有点麻烦,还是希望能找到更好的方法!!

以这个表为准

面膜*1/贵度(商务紫)*2/龙凤吊坠*1
贵度(商务紫)*2/面膜*1/魔影*4
面膜*1/贵度(商务紫)*2/魔影适用装*2
肤如雪立激白*1/贵度(商务紫)*2/手续费*1

回答8楼
1一行最多也就六、七个产品名称。
2最多处理几百个数据。
3 同一种商品,不论在什么位置名字都会完全一样!(包手其中的括号,空格位置)

您看了我想的办法吗,我用的是分列。难道您还有更好的方法?真是很感谢您关注我的问题!!

一楼二楼三楼的回答,等于没说.
四楼七楼的回答,看样子很务实,但帮得一时帮不了一世。授人予鱼不如授人予渔!
五楼的VBA做了一个跟MID差不多的函数,缺省不缺省输入是解决这个问题的办法么?
六楼的副总, 说实话您就没看懂题。这样的数据绝对不是楼主亲手输入的!

楼主,八楼的我想给您写个程序专门处理这个内容,您看可以不?

为了使解决办法更贴近您的实际, 我想知道...
1. 一行冒似"最多"三个商品,是这样吗? 如果不是,请告知一行最多多少个
2. 您的数据量有多大? 也就是问您数据最多有多少行? 几百?千?万?十万?
3. 同一种商品,不论在什么位置您是否确定名字都会完全一样?(包手其中的括号,空格位置), 因为这个关系到最后的按品种求和的问题。

请补充答案,或者Hi我。我再来回答此题

回答者: lxlzmh2002 - 魔导师 十一级 2009-9-10 21:07
==============================================================
我现在变成九楼,再来回复此贴:

再来回复您:
您看了我想的办法吗,我用的是分列。难道您还有更好的方法?真是很感谢您关注我的问题!!

答: 有。今天有点晚了没时间做, 明天再来更新此贴,我有更好的办法。 等我做好之后您只需要轻抬玉指在键盘上轻轻一按,结果就全部出来了。您要做的就是先别急着给分,我定会再复本贴。
回答者: lxlzmh2002 - 魔导师 十一级 2009-9-12 02:05
=================================================================
再复本贴:

Dim sht As Worksheet
Dim rs As Long
Dim cs As Long
Dim jrs As Long

Dim i As Long
Dim j As Long
Dim p As Long
Dim st As String

rs = Range("A65536").End(xlUp).Row

For i = 2 To rs
cs = 2
If Right(Cells(i, 1), 1) <> "/" Then
Cells(i, 1) = Cells(i, 1) & "/"
End If
p = 1
Do While p <= Len(Cells(i, 1))
If InStr(p, Cells(i, 1), "/") <> 0 Then
If Cells(1, cs) = "" Then
Cells(1, cs) = "品名"
Cells(1, cs + 1) = "数量"
End If

st = Mid(Cells(i, 1), p, InStr(p, Cells(i, 1), "/") - p)
Cells(i, cs) = Mid(st, 1, InStr(1, st, "*") - 1)
Cells(i, cs + 1) = CLng(Mid(st, InStr(1, st, "*") + 1, Len(st)))
cs = cs + 2
End If
p = InStr(p, Cells(i, 1), "/") + 1
Loop
Next

On Error Resume Next
Set sht = Sheets("汇总")
If Err.Number <> 0 Then
Sheets.Add after:=Sheets(Sheets.Count)
ActiveSheet.Name = "汇总"
Sheets(1).Select
End If

Sheets("汇总").Range("A2:B65536").ClearContents
Sheets("汇总").Cells(1, 1) = "品名"
Sheets("汇总").Cells(1, 2) = "数量"

cs = Range("IV1").End(xlToLeft).Column

With Range(Cells(2, 2), Cells(rs, cs))
For i = 1 To .Cells.Count Step 2
jrs = Sheets("汇总").Range("A65536").End(xlUp).Row
For j = 2 To jrs
If .Cells(i) = Sheets("汇总").Cells(j, 1) Then
Sheets("汇总").Cells(j, 2) = Sheets("汇总").Cells(j, 2) + .Cells(i + 1)
GoTo ni
End If
Next
Sheets("汇总").Cells(jrs + 1, 1) = .Cells(i)
Sheets("汇总").Cells(jrs + 1, 2) = .Cells(i + 1)
jrs = jrs + 1
ni:
Next

End With

Sheets("汇总").Columns.AutoFit
====================================================================
上述代码使用方法如下:
1.将文本数据放在A列(A2开始向下)

2. 录制宏: "工具"菜单-->宏-->录制宏)--> 窗口上"快捷键(K)"下面Ctrl的右侧格内输入一个字母(作为快捷键)-->确定-->开始录制宏。

3. 编辑宏: 开始录制后即可直接按"停止"停止录制, 然后"工具"菜单-->宏-->宏(M)-->选择刚建那个宏-->点右边"编辑"按钮-->进入宏编辑界面-->删除Sub XXX 至 End Sub之间内容-->然后将上述VBA代码复制并粘贴到 Sub XXX 至 End Sub之间-->按工具栏上的"保存"按钮-->"文件"菜单-->关闭并反回MicorSoft Excel

4. 执行宏: 用快捷键(按住Ctrl不放, 再按那个录制宏时输入的字母)执行宏。也可以通过菜单"工具"-->宏-->宏(M)-->窗口上选宏名, 按"执行"按钮执行宏。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-09-11
这 面膜*1/贵度(商务紫)*2 是在一个单元格里还是在多个的啊?多个的话容易解决,如果的是单个的话稍微麻烦点,你HI我好了,帮你解决
加辅助列
1、计算面膜的=MID(A1,FIND("面膜*",A1)+3,1)
贵都商务紫=MID(A1,FIND("贵度(商务紫)",A1)+8,1)
魔影=MID(A1,FIND("魔影*",A1)+3,1)
龙凤吊坠=MID(A1,FIND("龙凤吊坠*",A1)+5,1)
下面自己修改吧,你的“龙凤吊坠*”是5个字符,后面+5,
……无论哪个位置都可以计算出来
2、分别自动求和
第2个回答  2009-09-10
你可以直接把EXCEL文档发给我,我帮你搞定后再发给你。你若有意,直接hi我。
第3个回答  2009-09-10
语法:myget(srg,n,start_num )
=myget(srg,1,3) '从第3位开始取出中文字符
=myget(srg,2) '从第1位开始取出英文字母,第3个参数省略默认为1
=myget(srg,,5) '从第5位开始取出数字,第2个参数省略默认为0
=myget(srg) '第2、3个参数都省略,默认为从第1位取出所有数字

Function MyGet(Srg As String, Optional n As Integer = False, Optional start_num As Integer = 1)

Dim i As Integer
Dim s, MyString As String
Dim Bol As Boolean

For i = start_num To Len(Srg)
s = Mid(Srg, i, 1)
If n = 1 Then
Bol = Asc(s) < 0
ElseIf n = 2 Then
Bol = s Like "[a-z,A-Z]"
ElseIf n = 0 Then
Bol = s Like "#"
End If
If Bol Then MyString = MyString & s
Next

MyGet = IIf(n = 1 Or n = 2, MyString, Val(MyString))

End Function
第4个回答  2009-09-10
文字*数字=什么呢?无法计算。建议,数字与文字分格输入,只计算数字格。