一楼二楼三楼的回答,等于没说.
四楼七楼的回答,看样子很务实,但帮得一时帮不了一世。授人予鱼不如授人予渔!
五楼的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)-->窗口上选宏名, 按"执行"按钮执行宏。
温馨提示:答案为网友推荐,仅供参考