如何在excel上缩短此代码?

时间:2014-05-13 13:41:10

标签: 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

如果你能告诉我缩短这个的可能方法,我将不胜感激。

4 个答案:

答案 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)非常易于安装和使用:

  1. ALT-F11调出VBE窗口
  2. ALT-I ALT-M打开了一个新模块
  3. 粘贴内容并关闭VBE窗口
  4. 如果保存工作簿,UDF将随之保存。 如果您在2003年之后使用的是Excel版本,则必须保存 该文件为.xlsm而不是.xlsx

    删除UDF:

    1. 按上述方式调出VBE窗口
    2. 清除代码
    3. 关闭VBE窗口
    4. 从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