每列占一行,每个数据都放在括号中

每列占一行,每个数据都放在括号中

我需要帮助来完成以下转换。

我想要同样的东西: 在此处输入图片描述7151 7152 7153 7154到单行 -->(7151)|(7152)|(7153)|(7154)

答案1

="("&A1&")|("&A2&")|("&A3&")|("&A4&")"

如果 A 列中使用的范围包含大量数据(或有时会发生变化),您应该使用 vba 代码来生成结果。

答案2

您可以使用 VBA 代码自定义函数来实现这一点。

在 Excel 表中按 ALT+F11 打开 VBA 编辑器。从文件菜单中插入一个模块,然后双击左窗格中的模块名称(如果需要)以打开源代码编辑器。将以下代码粘贴到其中。

 Function TXTJOIN(argument1 As Range)      'Accept input range

   rowcounter = argument1.Rows.Count
   If rowcounter > 255 Then
        TXTJOIN = CVErr(xlErrValue)  'If row counter > 255 return #VALUE! Error
        Exit Function
   End If
   colcounter = argument1.Columns.Count ' Check the number of columns in the input range

   If colcounter = 1 Then  'Process if it's a single column range

        For Each element In argument1
            result = result & "(" & element & ")" & "|"
        Next element

        TXTJOIN = Left(result, Len(result) - 1)
   Else

        TXTJOIN = CVErr(xlErrValue)  'If it's a multicolumn range, return #VALUE! Error
   End If


End Function

保存代码并退出。如果您使用的是 Office 2007 及更高版本,则需要将 Excel 工作簿保存为启用宏的 .xlsm Excel 工作簿。

这样,我们就创建了一个名为 TXTJOIN 的自定义函数。

现在在您的工作表中使用它,如下图所示。

在此处输入图片描述

请注意,此自定义函数已简化为仅适用于单列。向其传递多列范围将返回 #VALUE!错误。这仅适用于此工作簿,因为此工作簿中存在代码。此外,为了避免将 A:A 传递给它,它限制最多连接 255 个单元格。

相关内容