有没有办法在Excel中取出一列并将其转换为连接string

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


短发
乔治

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

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

如果Excel CONCATENATE()函数不能做你想要的, 这个链接可能会有所帮助。

尝试使用TRANSPOSEfunction并按下F9键:

A1:

短发

乔治

B1:(inputfunction栏)

= TRANSPOSE(A1:A3)

突出显示TRANSPOSE(A1:A3),然后按F9。

它会给你:

{ “乔”, “鲍勃”, “乔治”}

复制并粘贴该列表。 而已。

要连接的话,你只需要做:

= CONCATENATE(移调(A1:A3))

突出显示TRANSPOSE(A1:A3),按下F9,然后删除括号:

= CONCATENATE( “乔”, “鲍勃”, “乔治”)

我知道有两个基本的方法。

最快的方式 –

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

更好的方法 –
使自己的vb函数遍历一个单元格范围,而不是总结他们像sum ,只是连接它们。

我一直这样做,所以如果有人知道一个实际的内置的Excel函数埋在MS文档中连接范围的地方,您将节省一天的时间。

这是容易的。 您可能想要与修剪,左,右和查找结合使用。 请享用!

= A1 & " " & B1

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

 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 

您可以使用GetString与ADOlogging集。

 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