我知道text-to-columns按钮。可以通过选择列,可能运行宏或使用类似按钮来完成相反的工作吗?
答案 0 :(得分:11)
通常我会说“请发布您的代码”以获取帮助/协助编写宏,但这个非常非常简单。
Public Function ColumnsToText(rng As Range, Optional DelimitBy As String = " ") As String
'Applies on a row/partial row of data. Must be continuous cells, e.g., A1:D1.
Dim var As Variant
var = Application.Transpose(Application.Transpose(rng.Value))
ColumnsToText = Join(var, DelimitBy)
End Function
在工作表单元格中输入:
=ColumnsToText(A1:F1)
或者您可以指定一个可选的分隔符,默认情况下它是一个空格,但您可以使用任何字符串字符:
=ColumnsToText(A1:F1,"%")
等
答案 1 :(得分:4)
我对@David Zemens使用双转置给出的答案很感兴趣。他的回答很有效。我确实找到了另一种将单行放入一维数组的方法。我还想要一个可以处理列的函数。所以这是我的替代答案。
Public Function ColumnOrRowToText(rng As Range, Optional DelimitBy As String = " ") As String
'rng must be a single row or a single column; cannot handle multiple columns or rows
Dim var As Variant
If rng.Rows.Count = 1 Then
var = Application.WorksheetFunction.Index(rng.Value, 1, 0) 'for a single row
Else
var = Application.Transpose(rng.Value) 'for a single column
End If
'var must be a 1 dimensional array
ColumnOrRowToText = Join(var, DelimitBy)
End Function
答案 2 :(得分:2)
答案 3 :(得分:1)
如果你感兴趣的是" univoting"你的列在它们自己的列中是值,那么基本上你需要创建一个平面文件。
这最好用R' "收集"功能或Python熊猫' "熔融"功能。它也可以通过Excel中的宏来完成。如果你不了解宏,那么更基本的方法是:
以下是一个例子:
答案 4 :(得分:0)
Excel帮助提供了这种技术:
鉴于您正在组合单元格A1和B1
在新单元格中,输入
=(A1&" "&B1)
{{注意撇号之间的空格}}
我也用它来插入填充文本,所以我读了=(P2&", also"&Q2)
。