在Excel中批量字符串连接(Batch string concatenation in Excel

2019-07-20 18:19发布

我在Excel单元格的几百,我想连接成一个字符串。 是否有这样做不是手动,以便将它们输入到通过逐一去的一个简单的方法CONCATENATE(A1, A2, ....)

CONCATENATE(A1:A255)不起作用。

Answer 1:

*在一个新的选项卡,类型A1在单元格A1,

*类型A2单元格A2

*使用填充序列,完成在A列中的值

* A1型细胞B1

  • 使用此forumal在单元格B2

    = B1& “” &A2

  • 向下复制公式。

复制和粘贴值收获价值创建的字符串。

A1  A1
A2  A1,A2
A3  A1,A2,A3
A4  A1,A2,A3,A4
A5  A1,A2,A3,A4,A5
A6  A1,A2,A3,A4,A5,A6
A7  A1,A2,A3,A4,A5,A6,A7
A8  A1,A2,A3,A4,A5,A6,A7,A8
A9  A1,A2,A3,A4,A5,A6,A7,A8,A9
A10 A1,A2,A3,A4,A5,A6,A7,A8,A9,A10


Answer 2:

按下Alt-F11 ,插入新的模块,粘贴代码波纹管。

Public Function concatRange(data As Range, Optional sep As String = "") As String
    Dim ret As String
    Dim sep2 As String
    ret = ""
    sep2 = ""

    For Each cell In data
        ret = ret & sep2 & cell.Value
        sep2 = sep
    Next cell

    concatRange = ret
End Function

用法:

=concatRange(A8:D11;", ")    'OS with ; list separator
=concatRange(A8:D11,", ")    'OS with , list separator or in a macro code

要么

=concatRange(A8:D11)


Answer 3:

在这里看到这篇博客: http://www.dullsharpness.com/2011/11/14/excel-vba-range-to-csv-range2csv-function/

您可以使用它像这样,例如与管道分隔符:

=Range2Csv(A1:A255,"|")

使用访问您的VBA编辑器Alt+F11 ,并把它放到一个模块。

摘录的代码是在这里:

Option Explicit
'**********************************************
'* PURPOSE: Concatenates range contents into a
'*          delimited text string
'*
'* FUNCTION SIGNATURE: Range2Csv(Range, String)
'*
'* PARAMETERS:
'*    Range  - the range of cells whose contents
'*             will be included in the CSV result
'*    String - delimiter used to separate values
'*             (Optional, defaults to a comma)
'*
'* AUTHOR: www.dullsharpness.com
'*
'* NOTES: [add'l notes removed for brevity]
'*
'**********************************************
Public Function Range2Csv(inputRange As Range, Optional delimiter As String)
  Dim concattedList As String 'holder for the concatted CSVs
  Dim rangeCell As Range      'holder cell used in For-Each loop
  Dim rangeText As String     'holder for rangeCell's text

  'default to a comma delimiter if none is provided
  If delimiter = "" Then delimiter = ","

  concattedList = ""          'start with an empty string

  'Loop through each cell in the range to append valid contents
  For Each rangeCell In inputRange.Cells

    rangeText = rangeCell.Value 'capture the working value

    'Only operate on non-blank cells (i.e. Length > 0)
    If Len(rangeText) > 0 Then
      'Strip any delimiters contained w/in the value itself
      rangeText = WorksheetFunction.Substitute(rangeText, delimiter, "")

      If (Len(concattedList) > 0) Then
        'prepend a delimiter to the new value if we
        'already have some list items
        concattedList = concattedList + delimiter + rangeText
      Else
        'else if the list is blank so far,
        'just set the first value
        concattedList = rangeText
      End If
    End If

  Next rangeCell

  'Set the return value
  Range2Csv = concattedList

End Function


Answer 4:

级联(A1,A2,A3,A4,A5,A6,A7,A8,A9,A10,A11,A12,A13,A14,A15,A16,A17,A18,A19,A20,A21,A22,A23,A24, A25,A26,A27,A28,A29,A30,A31,A32,A33,A34,A35,A36,A37,A38,A39,A40,A41,A42,A43,A44,A45,A46,A47,A48,A49, A50,A51,A52,A53,A54,A55,A56,A57,A58,A59,A60,A61,A62,A63,A64,A65,A66,A67,A68,A69,A70,A71,A72,A73,A74, A75,A76,A77,A78,A79,A80,A81,A82,A83,A84,A85,A86,A87,A88,A89,A90,A91,A92,A93,A94,A95,A96,A97,A98,A99, A100,A101,A102,A103,A104,A105,A106,A107,A108,A109,A110,A111,A112,A113,A114,A115,A116,A117,A118,A119,A120,A121,A122,A123,A124, A125,A126,A127,A128,A129,A130,A131,A132,A133,A134,A135,A136,A137,A138,A139,A140,A141,A142,A143,A144,A145,A146,A147,A148,A149, A150,A151,A152,A153,A154,A155,A156,A157,A158,A159,A160,A161,A162,A163,A164,A165,A166,A167,A168,A169,A170,A171,A172,A173,A174, A175,A176,A177,A178,A179,A180,A181,A182,A183 ,A184,A185,A186,A187,A188,A189,A190,A191,A192,A193,A194,A195,A196,A197,A198,A199,A200,A201,A202,A203,A204,A205,A206,A207,A208 ,A209,A210,A211,A212,A213,A214,A215,A216,A217,A218,A219,A220,A221,A222,A223,A224,A225,A226,A227,A228,A229,A230,A231,A232,A233 ,A234,A235,A236,A237,A238,A239,A240,A241,A242,A243,A244,A245,A246,A247,A248,A249,A250,A251,A252,A253,A254,A255)

PowerShell的吧!

"concatenate(a$((1..255) -join ', a'))" | clip

打开文本文件复制粘贴

“要快速选择,你可以按CTRL细胞,然后单击要包含在串连功能的细胞。例如,选择一个单元格中键入=串连(在公式编辑栏中按住CTRL键并单击单元被包括在内。松开Ctrl键在公式栏中,然后按Enter”类型)



Answer 5:

如果需要这个VBA函数将串联单元格的内容,一个可选的分隔符。 它复制到一个标准模块:

  Option Explicit

  Function Concat(CellRange As Range, Optional Delimiter As String) As String 
 ' this function will concatenate a range of cells and return the result as a single string
 ' useful when you have a large range of cells that you need to concatenate
 ' source: http://chandoo.org/wp/2008/05/28/how-to-add-a-range-of-cells-in-excel-concat/

  Dim retVal As String, dlm As String, cell As Range
  retVal = ""
  If Delimiter = Null Then
      dlm = ""
  Else
    dlm = Delimiter
  End If
  For Each cell In CellRange
      If CStr(cell.Value) <> "" And CStr(cell.Value) <> " " Then
          retVal = retVal & CStr(cell.Value) & dlm
      End If
  Next
  If dlm <> "" Then
      retVal = Left(retVal, Len(retVal) - Len(dlm))
  End If
  Concat = retVal
End Function


Answer 6:

如果您寻找一个纯粹的Excel的方法(即没有VBA),然后由詹姆斯·詹金斯提出的方法是最好的。 如果您在使用VBA然后打开VBA编辑器很高兴,添加一个新的模块,并添加以下代码:

Option Explicit

Public Function JoinText(cells As Variant,Optional delim_str As String) As String
    If cells.Columns.count < cells.Rows.count Then
       JoinText = Join(WorksheetFunction.Transpose(cells), delim_str)
    Else
       JoinText = Join(WorksheetFunction.Transpose(WorksheetFunction.Transpose(cells)), delim_str)
    End If
End Function

要打开VBA编辑器轻松按下Alt-F11。 要插入模块上的“项目”窗口中列出的工作簿时单击鼠标右键。

该函数从Excel称为如下:

=JoinText(A1:C1)

如果你想添加一个分隔符(如逗号):

=JoinText(A1:C1,",")

使用转置函数的目的是把2D阵列,“细胞”,到一维数组。 这样做的振振有辞的是,VBA函数加入只接受一维数组。 之所以使用其中的两个是如果JoinText正在看一单元行(其仍然只是一个二维数组),那么所述第一呼叫转置,调换本2D行阵列划分为2D列阵列,第二呼叫把它变成一维数组。



Answer 7:

我的首选方法是剪切和粘贴值到一个编辑器,允许正则表达式,那么我只是删除了查找选项卡(或空格),并在我的当前选择替换。

你也可以用它来插入逗号,空格,或任何你想要的。

这是一个比打字快=concatenate(A1,",","A2",",",......)



Answer 8:

它不是纯粹的Excel,但有一个简单的方法与Word做到这一点。

  1. 选择要连接和复制/粘贴它们到Word中的细胞。 这将创建一个表。
  2. 选择整个表格。
  3. 将表格转换成文本。 使用段落标记(或别的东西,不会出现在你的文字)作为分隔符。
  4. 选择所有的文字。
  5. 使用替换删除段落标记。 (在“查找内容”框中,输入^ P。不要填写“替换”。)


Answer 9:

如果您有Excel 2016年,您可以使用数组公式:

输入

= CONCAT(A1:A255)

进入细胞内,然后按

[CTRL] + [SHIFT] + [输入]



Answer 10:

在那里,你想concantenate行开始您的工作表的第2列3的值

Sub GOWN()
roww = 2
Do While cells(roww, 2) <> ""
    aa = cells(roww, 3)
    dd = dd & aa & ","
    roww = roww + 1
Loop
cells(roww + 1, 3) = dd
End Sub


Answer 11:

只需添加您deliminator在一个串联:

=concatenate(A1, ",")

然后复制所有的串连,将其粘贴为值。 然后复制这些值,并将其粘贴到换位。 然后复制换位值,并将其粘贴到文字编辑器。 做了deliminator和值之前的空间查找并做只是deliminator一个替代。 这应该给大家一个deliminator值的连接字符串。 这是比其他方案要容易得多。



Answer 12:

从无耻地复制这个网站 :

  1. 选择您所需要的结果的单元格。
  2. 转到公式栏,输入......“= A1:A5”
  3. 选择整个公式,并按F9(这个转换式成值)。
  4. 从两端取下大括号。
  5. = CONCATENATE添加(到文本的开头,并用圆托架结束它)。
  6. 按Enter键。

什么是特别的启示这里是编辑公式时,按下F9键替换与公式的结果公式。 当这是一个范围,它与该范围的内容列表来替换它。



文章来源: Batch string concatenation in Excel