我知道文本到列按钮。可以通过选择列并可能运行宏或使用类似按钮来完成相反的操作吗?
问问题
47367 次
5 回答
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,"%")
等等。
于 2013-10-05T00:44:21.763 回答
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
于 2013-10-05T06:28:07.070 回答
1
相反,如果您感兴趣的是将您的列“还原”为它们自己列中的值,那么基本上您需要创建一个平面文件。
这最好通过 R 的“收集”函数或 Python Pandas 的“融化”函数来完成。也可以通过 Excel 中的宏来完成。如果您不了解宏,则更基本的方法是:
- 创建一个新工作表并将第一列的所有值(假设这是您要保留的列)粘贴为新工作表中的第一列(A 列)。现在,在 B 列中,粘贴您希望在列中作为值的 ***first 列标题的名称。例如,在下面,您希望列标题“红色”位于它自己的列中 - 可能是“颜色”列。对于在 A 列中有唯一记录的每一行,将“红色”拖到 B 列。
- 然后,在此下方 - 再次粘贴 A 列中的所有值,同时在 B列中粘贴您要对其执行“列到文本”的第二列(下例中的“橙色”)。
- 重复您需要列为“文本”的许多列。
- 最后,在 C 列中,使用 A 列和 B 列中的值并创建一个 index(match(match()) 来找出 A 列和 B 列中的两个值的交集处的值.
这是一个例子:
于 2016-01-23T01:59:27.960 回答
0
Excel 帮助提供了这种技术:
鉴于您正在组合单元格 A1 和 B1
在新单元格中,输入
=(A1&" "&B1)
{{注意撇号之间的空格}}
我也用它来插入填充文本,所以我的 read =(P2&", also"&Q2)
.
于 2016-03-03T16:24:39.467 回答