是否有可能在excel 2010中使此代码更短更简单。
=A1&B1&C1&D1&A2&B2&C2&D2&A3&B3&C3&D3&A4&B4&C4&D4&A5&B5&C5&D5&A6&B6&C6&D6&A7&B7&C7&D7
如果你能告诉我缩短这个的可能方法,我将不胜感激。
答案 0 :(得分:1)
您可以使用MultiCat之类的UDF:
'Purpose: Concatenate all cells in a range
'Inputs: rRng - range to be concatenated
' sDelimiter - optional delimiter
' to insert between cell Texts
'Returns: concatenated string
'*****************************************
Public Function MultiCat( _
ByRef rRng As Excel.Range, _
Optional ByVal sDelim As String = "") _
As String
Dim rCell As Range
For Each rCell In rRng
If rCell.Value <> "" Then
MultiCat = MultiCat & sDelim & rCell.Text
End If
Next rCell
MultiCat = Mid(MultiCat, Len(sDelim) + 1)
End Function
答案 1 :(得分:1)
在标准模块中,输入以下用户定义函数:
Public Function KonKat(Rin As Range) As String
Dim r As Range
For Each r In Rin
KonKat = KonKat & r.Value
Next r
End Function
用户定义函数(UDF)非常易于安装和使用:
如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx
删除UDF:
从Excel使用UDF:
=KonKat(A1:D7)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
和
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
有关UDF的详细信息
必须启用宏才能使其生效!
答案 2 :(得分:0)
如果你想要一个非宏/脚本选项,那么......
= CONCATENATE(A1,B1,C1,D1,A2,B2,C2,D2,A3,B3,C3,D3,A4,B4,C4,D4,A5,B5,C5,D5,A6,B6, C5,D6,A7,B7,C7,D7)
略短且更简单
不确定这是不是你的追求? :)
答案 3 :(得分:0)
使用变量数组是避免可能昂贵的范围循环的快速方法
Sub Moved()
Dim X
Dim lngCnt As Long
Dim StrIn As String
X = Range("A1:D7")
For lngCnt = 1 To UBound(X, 1)
StrIn = StrIn & Join(Application.Index(X, lngCnt))
Next
End Sub