需要将EXCEL表格的每一行中各列数据合并成一列显示,之间用逗号空格隔开,有什么宏或公式么?

如图,abc所在列是主列,a,b对应行中数据的个数不一定相同。合并后,数据从小到大排列。。

给你做个自定义函数吧.用法跟excel的函数一样,
按ALT+F11进入VBA编辑窗口在左边的列表里单击鼠标右键选插入模块,粘贴以下代码到右边的窗口并保存.回到工作表.该函数就可以使用了.具体用法,例如:=HBPX(B2:F2)
另外需要注意的是该函数只能选一行单元格,如果要进行列向的单元格合并排序,要修改函数.
代码:
Function HBPX(rng As Range)
Dim Myarr, Tmp

Myarr = rng
For i = UBound(Myarr, 2) To LBound(Myarr, 2) + 1 Step -1
For ii = LBound(Myarr, 2) To i - 1
If Myarr(1, ii) > Myarr(1, ii + 1) Then
Tmp = Myarr(1, ii)
Myarr(1, ii) = Myarr(1, ii + 1)
Myarr(1, ii + 1) = Tmp
End If
Next ii
Next i
For n = LBound(Myarr, 2) To UBound(Myarr, 2)
If Myarr(1, n) <> "" Then
If HBPX = "" Then
HBPX = Myarr(1, n)
Else
HBPX = HBPX & "," & Myarr(1, n)
End If
End If
Next n
End Function追问

公式粘贴不进去

追答

这个不是公式,是宏代码.是一个自定义函数.按我上面说的方法操作后.就可以使用 用法上面也说明了 也举了例子
第一步
按ALT+F11进入VBA编辑窗口在左边的列表里单击鼠标右键选插入模块,粘贴上面的代码到右边的窗口并保存.回到工作表.该函数就可以使用了.
第二步
函数的具体用法和EXCEL的内置函数类似,在单元格里输入 例如:=HBPX(B2:F2)
另外需要注意的是该函数只能选一行单元格,如果要进行列向的单元格合并排序,要修改函数.

追问

呵呵,我是按照你的方法在VBA窗口粘贴,保存的时候会提示如同所示的文字。在单元格内输入函数的时候无效。

追答

1.把你的这表格的宏安全级别降低到低.让他可以使用宏.
2.看你的贴图你的代码粘贴错位置了.应该在左边的列表里点鼠标右键插入一个模块.然后粘贴代码到右边窗口

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-21
如果你的数据都是两位数的话,可以用公式==TEXT(A1&B1&C1&D1,REPT("00\,",COUNT(A1:D1)-1)&"00")

忘了从小到大!!
=TEXT(IF(ISNUMBER(SMALL(A1:D1,1)),SMALL(A1:D1,1),"")&IF(ISNUMBER(SMALL(A1:D1,2)),SMALL(A1:D1,2),"")&IF(ISNUMBER(SMALL(A1:D1,3)),SMALL(A1:D1,3),"")&IF(ISNUMBER(SMALL(A1:D1,4)),SMALL(A1:D1,4),""),REPT("00\,",COUNT(A1:D1)-1)&"00")追问

非常感谢,不过还要麻烦下,数字有3位数的,而且每一行对应列中存在数字的列数不一定都是一样的。具体情况如图。

第2个回答  2012-03-21
这个要用到VBA了,按照你的数据,用冒泡法排序,之后输入到一个单元格。难度不是很大。
相似回答