【发布时间】:2011-03-05 13:41:10
【问题描述】:
我想获取多行中的名称列表并将它们组合成一个单元格,如下所示:
乔
鲍勃
乔治
并将其转换为具有以下内容的单元格:
“乔”、“鲍勃”、“乔治”
【问题讨论】:
标签: excel concatenation
我想获取多行中的名称列表并将它们组合成一个单元格,如下所示:
乔
鲍勃
乔治
并将其转换为具有以下内容的单元格:
“乔”、“鲍勃”、“乔治”
【问题讨论】:
标签: excel concatenation
尝试使用TRANSPOSE功能并按F9:
+---+--------+
| | A |
+---+--------+
| 1 | Joe |
| 2 | Bob |
| 3 | George |
+---+--------+
B1:(在功能栏中输入)
=TRANSPOSE(A1:A3)
突出显示 TRANSPOSE(A1:A3),然后按 F9。
它会给你:
{"Joe","Bob","George"}
复制并粘贴该列表。就是这样。
要连接单词,您只需:
=CONCATENATE(TRANSPOSE(A1:A3))
高亮TRANSPOSE(A1:A3),按F9,然后去掉括号:
=CONCATENATE("Joe","Bob","George")
【讨论】:
我知道有两种基本方法。
最快的方法-
更好的方法 -
制作您自己的 vb 函数来迭代一系列单元格,而不是像 sum 那样对它们求和,而是将它们连接起来。
我一直这样做,所以如果有人知道隐藏在 MS 文档中某处连接范围的实际内置 Excel 函数,您将节省一天的时间。
【讨论】:
将此作为宏添加到 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
【讨论】:
如果Excel CONCATENATE() function 不能满足您的要求,this link 可能会有所帮助。
【讨论】:
就这么简单。您可能希望与 trim、left、right 和 find 结合使用。享受吧!
= A1 & " " & B1
【讨论】:
您可以将 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
【讨论】: