【发布时间】:2015-01-10 23:08:12
【问题描述】:
我正在寻找从列列表中创建一个由逗号分隔的值,我有一个条件,即 not_simple 单元格不连接,有没有办法,一个公式来创建一个带有逗号分隔列表的新单元格列数组?
下面显示了一个excel表格的例子和我需要的结果。
http://postimg.org/image/ql7gi4z59/
非常感谢任何帮助!
【问题讨论】:
标签: excel
我正在寻找从列列表中创建一个由逗号分隔的值,我有一个条件,即 not_simple 单元格不连接,有没有办法,一个公式来创建一个带有逗号分隔列表的新单元格列数组?
下面显示了一个excel表格的例子和我需要的结果。
http://postimg.org/image/ql7gi4z59/
非常感谢任何帮助!
【问题讨论】:
标签: excel
在B9中输入:
=B2 & "," & B3 & "," & B4 & ","& B5 & ","&B6 & ","&B7 & "," & B8
您的其他单元格也是如此。
编辑#1
对于更通用的方法,请使用以下 UDF
Public Function KonKatenate(rIn As Range) As String
For Each r In rIn
KonKatenate = KonKatenate & "," & r.Text
Next r
KonKatenate = Mid(KonKatenate, 2)
End Function
用户定义函数 (UDF) 非常易于安装和使用:
如果您保存工作簿,UDF 将与它一起保存。 如果您使用的是 2003 年以后的 Excel 版本,则必须保存 文件为 .xlsm 而不是 .xlsx
要删除 UDF:
使用 Excel 中的 UDF:
=KonKatenate(B2:B8)
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
有关 UDF 的详细信息,请参阅:
http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx
必须启用宏才能正常工作!
【讨论】:
如果您从this thread 获取我的用户定义函数,您应该能够在工作表中使用它来收集正确的连接。首先按照该页面上的说明获取该 UDF 并将其放入模块中。
接下来应用数据 ► 排序和过滤 ► 过滤您的数据并过滤 A 列,不简单。
接下来,您需要切换到 R1C1 单元格寻址,因为公式对于 R1C1 中的所有单元格都相同,但 A1 单元格寻址的相对单元格地址不同。对于 Excel 2010,这是在 Excel 选项 ► 公式 ► R1C1 参考样式(Alt+F,T 然后 F然后 Alt+R 然后 OK)。
将以下公式粘贴到过滤范围内的数据单元格中。根据您的示例,这将是 R9C2 或 B9。
=udf_stitch_Together(INDEX(C,MAX(INDEX(ROW(R1:R[-1])*(R1C1:R[-1]C1="not simple"),,),1)+1):INDEX(C, ROW(R[-1])), ",")
由于您处于 R1C1 模式,因此可以对 B 列中的每个单元格使用相同的公式,其中 A 列 不简单。向下填写,然后向右填写到 C4 或 D 列。删除过滤器以获取上述结果。
另一种填写公式的方法可能是选择您的范围,然后使用 GoTo ► Special ► Blanks。将公式放入第一个单元格,然后按 Ctrl+Enter。
使用与进入 R1C1 模式相同的方法返回 A1 单元寻址。
编辑:可以将公式放入第一个单元格,然后在过滤后的数据上向下和向右填充。
【讨论】: