我怎样才能使这个代码更短的Excel?
是否有可能使这个代码更短,更简单的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
如果你能告诉我一个可能的方法来缩短这个,我将不胜感激。
您可以使用像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
在标准模块中,input以下用户定义的function:
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)非常易于安装和使用:
- ALT-F11调出VBE窗口
- ALT-I ALT-M打开一个新的模块
- 粘贴东西,closuresVBE窗口
如果保存工作簿,则UDF将随之保存。 如果您在2003年以后使用的是Excel版本,则必须将该文件另存为.xlsm而不是.xlsx
要删除UDF:
- 如上所示调出VBE窗口
- 清除代码
- closuresVBE窗口
从Excel中使用UDF:
=KonKat(A1:D7)
要了解有关macros的更多信息,请参阅:
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的细节
macros必须启用这个工作!
如果你想要一个非macros/脚本选项,那么…
= 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)
略短而简单
不知道这是你以后? 🙂
使用variables数组是避免潜在的昂贵范围循环的一种快速方法
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