10

我知道文本到列按钮。可以通过选择列并可能运行宏或使用类似按钮来完成相反的操作吗?

4

5 回答 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 回答
2

我相信 Text-to-Columns 的真正反面是公式 TEXTJOIN。它会将您选择的列条目返回到一个长字符串中的一个单元格中,该字符串由您可以自己设置的分隔符分隔。

文本连接示例

于 2017-06-30T18:21:43.377 回答
1

相反,如果您感兴趣的是将您的列“还原”为它们自己列中的值,那么基本上您需要创建一个平面文件。

这最好通过 R 的“收集”函数或 Python Pandas 的“融化”函数来完成。也可以通过 Excel 中的宏来完成。如果您不了解宏,则更基本的方法是:

  1. 创建一个新工作表并将第一列的所有值(假设这是您要保留的列)粘贴为新工作表中的第一列(A 列)。现在,在 B 列中,粘贴您希望在列中作为值的 ***first 列标题的名称。例如,在下面,您希望列标题“红色”位于它自己的列中 - 可能是“颜色”列。对于在 A 列中有唯一记录的每一行,将“红色”拖到 B 列。
  2. 然后,在此下方 - 再次粘贴 A 列中的所有值,同时在 B列中粘贴您要对其执行“列到文本”的第二列(下例中的“橙色”)。
  3. 重复您需要列为“文本”的许多列。
  4. 最后,在 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 回答