答案1
这是您的解决方案。在此示例中,示例数据位于单元格 B2:B17 中。要使此解决方案有效,您应该在数据之前和数据之后留出一个空白单元格,即本例中的 B1 和 B18。假设范围之间只有一个空白单元格,否则解决方案可能无法正常工作。
如果您的 Excel 版本没有 TEXTJOIN 函数,请使用 VBA 中的以下 UDF 创建一个。按 ALT + F11 访问 VBA 编辑器。从插入菜单插入模块。双击左侧窗格中的模块名称以访问其代码编辑器。
将以下代码粘贴到其中。
Function TEXTJOIN1(delimiter As String, ignore_empty As Boolean, ParamArray cell_ar() As Variant)
For Each cellrng In cell_ar
For Each cell In cellrng
If ignore_empty = False Then
result = result & cell & delimiter
Else
If cell <> "" Then
result = result & cell & delimiter
End If
End If
Next cell
Next cellrng
TEXTJOIN1 = Left(result, Len(result) - Len(delimiter))
End Function
如果您拥有 Excel 2007 及更高版本,请将文件保存为启用宏的工作簿 XLSM。
在单元格 C1 中输入以下公式,并将其向下拖动到列数据的长度。如上所述,第一个单元格和最后一个单元格应为空白。
=IF(ISBLANK(B1),TEXTJOIN1(",",FALSE,OFFSET(B1,1,0):OFFSET(B1,MIN(IF(ISBLANK(B2:$B$18),ROW(B2:$B$18)-ROW(B2),9^99)),0)),"")
在公式栏中按 CTRL + SHIFT + ENTER 创建数组公式。公式应括在花括号中,以表明它是数组公式。
现在将其沿着柱子的长度向下拖动。