Excel中是否有一种方法可以获取列并将其转换为连接字符串

时间:2010-06-18 18:22:57

标签: excel concatenation

我想获取多行名称列表并将它们合并为一个单元格,如下所示:


鲍勃
乔治

并将其转换为具有以下内容的单元格:

“乔”,“鲍勃”,“乔治”

6 个答案:

答案 0 :(得分:7)

尝试使用TRANSPOSE功能并按下F9:

A1:

鲍勃

乔治

B1 :(输入功能栏)

= TRANSPOSE(A1:A3)

高亮显示TRANSPOSE(A1:A3),然后按F9。

它会给你:

{"乔""鲍勃""乔治"}

复制并粘贴该列表。那就是它。

要连接单词,您只需要执行以下操作:

= CONCATENATE(移调(A1:A3))

高亮显示TRANSPOSE(A1:A3),按F9,然后删除括号:

= CONCATENATE("乔""鲍勃""乔治&#34)

答案 1 :(得分:3)

我知道有两种基本方法。

最快的方式 -

  1. A列列出了您的名字
  2. 将A1的值复制到B1 - “Joe”
  3. 在B2中,输入公式`= B1& “,”& A2`
  4. 选择B2,复制公式,然后在列A的整个长度上粘贴B列的其余部分.B列中的最后一个单元格将包含A列中逗号分隔的值列表。

更好的方式 -
制作你自己的vb函数,迭代一系列单元格,而不是像sum那样对它们求和,只需将它们连接起来。

我一直这样做,所以如果有人知道实际的内置Excel函数隐藏在连接范围的MS文档中,那么你将节省一天。

答案 2 :(得分:1)

如果Excel CONCATENATE() function无法满足要求,this link可能有所帮助。

答案 3 :(得分:1)

这很容易。您可能希望与trim,left,right和find结合使用。享受!

= A1 & " " & B1

答案 4 :(得分:1)

将此作为宏添加到Excel工作表中,并将其用作自定义函数,并将范围和分隔符作为输入

Function Concat(myRange As Range, Optional myDelimiter As String) As String
  Dim r As Range
  Application.Volatile
  For Each r In myRange
    If Len(r.Text) Then
      Concat = Concat & IIf(Concat <> "", myDelimiter, "") & r.Text
    End If
  Next
End Function

答案 5 :(得分:0)

您可以将GetString与ADO记录集一起使用。

Dim cn As Object
Dim rs As Object
Dim strFile As String
Dim strCon As String
Dim strSQL As String
Dim s As String

''This is not the best way to refer to the workbook
''you want, but it is very conveient for notes
''It is probably best to use the name of the workbook.

strFile = ActiveWorkbook.FullName

strCon = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strFile _
    & ";Extended Properties=""Excel 8.0;HDR=No;IMEX=1"";"

Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")

cn.Open strCon

strSQL = "SELECT * " _
       & "FROM [Sheet1$A:A] "

rs.Open strSQL, cn, 3, 3

''http://www.w3schools.com/ado/ado_getstring.asp
''str = rs.GetString(format,rows,coldel,rowdel,nullexpr)
s = rs.GetString(, , , ", ")
ActiveSheet.Range("B1") = s

''Tidy up
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing