EXCEL中,如何实现一对多的条件合并?具体问题如图片显示:

通过公式,一定要支持格式刷,不要说手动合并,那样子数据量大了很费时间,易出错合并后结果为A列是B列元素的个数,C是具体的元素请问如何设计公式完成该操作... 通过公式,一定要支持格式刷,不要说手动合并,那样子数据量大了很费时间,易出错
合并后结果为

A列是B列元素的个数,C是具体的元素
请问如何设计公式完成该操作
展开
 我来答
百度网友0123698767
2012-11-14 · TA获得超过752个赞
知道小有建树答主
回答量:201
采纳率:100%
帮助的人:119万
展开全部
有个简单的办法:
可以发现,你所有要合并的文本之间都是在逗号后面分行的,而其他任何单元格末尾是没有逗号的。那么,将所有数据复制到文本文档中(将表格换成制表位),再将所有内容复制到word中(可以编辑回车符),所有行结束的地方都有一个回车符,而你要合并的文本之间的回车符之前必定有个逗号,后面有个制表位。这时你可以使用word文档中的替换功能(Ctrl+F),将“逗号 回车符 制表位”全替换成“逗号”(回车符和制表位需要使用代码),再将整个文档复制到文本文档中,在复制到Excel中就行了(也可以在word中制成表格再复制到excel,但不能在制成表格前直接从word复制到excel)。
注:上述替换中,“逗号 回车符 制表位”的代码为“,^p^t”。
E侠兔7502
2012-11-13 · TA获得超过3154个赞
知道大有可为答主
回答量:3205
采纳率:53%
帮助的人:2190万
展开全部
Public Sub zhl()
Dim MyM()
Dim LRow As Long
Dim i As Long
Dim t As Long
Dim Bk As Long
Dim TempS As String

LRow = Range("B65536").End(xlUp).RowBk = 0
For i = LRow To 2 Step -1
If Cells(i, 1) = "" And Cells(i - 1, 1) <> "" Then
Bk = Bk + 1
End If
Next i
ReDim MyM(Bk, 2)

Bk = 0
For i = 2 To LRow - 1
If Cells(i, 1) <> "" And Cells(i + 1, 1) = "" Then
Bk = Bk + 1
MyM(Bk, 1) = i
End If

If Cells(i, 1) = "" And Cells(i + 1, 1) <> "" Then
MyM(Bk, 2) = i
End If
Next i

If Cells(LRow, 1) = "" Then MyM(Bk, 2) = LRow
For i = 1 To Bk
For t = MyM(i, 1) To MyM(i, 2)
TempS = TempS & Chr(10) & Cells(t, 2)
Next t
Range("B" & MyM(i, 1) & ":B" & MyM(i, 2)).Clear
TempS = Right(TempS, Len(TempS) - 1)
Range("B" & MyM(i, 1)) = TempS
Range("A" & MyM(i, 1) & ":A" & MyM(i, 2)).Merge
Range("B" & MyM(i, 1) & ":B" & MyM(i, 2)).Merge
TempS = ""
Next i

此代码可以实现合并A列单元格的目的,如果B列同类字符太多,可能有会受到单元格内字符数的限制。最好还是合并A列的单元格好吧?
更多追问追答
追问
请问,您写的代码如何操作,能给出具体点的步骤么?简单的实例也可以
追答
点工作表标签,查看代码,随便点一个工作表名、插入模块、双击模块,把代码复制到右边代码区。想要操作的工作表为当前工作表时,光标在代码区的任何一个位置按F5键运行。

请到hblnext的163邮箱密码:135790看附件。
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dayday_lu
2012-11-14
知道答主
回答量:42
采纳率:0%
帮助的人:16万
展开全部
你用宏试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式