我有一张包含大量列的表格,这些列以分层方式排序并合并了单元格:
我想将这些列(例如:第5行)命名为:MainGroupA-SubGroupA-SubSubGroupA
。
只需以经典方式引用上面的列就行不通,因为上面的字段不再可用。 (在示例中:字段B1到F1)(即,我无法输入A1&A2&A3
/ R[-4]C&R[-3]C&R[-2]C
,因为此公式尝试从“隐藏”单元格中读取。)
有没有办法在没有手动工作或需要取消合并父单元格的情况下执行此操作?我可以使用一些外部文本编辑器甚至VBA来执行此操作,但更喜欢“Excel公式解决方案”,因为它会保持更新以适应新的组和列。
要澄清:我希望第5行中的所有列都有像A5中的文本
答案 0 :(得分:1)
如果你想:
MainGroupA-SubGroupA-SubSubGroupA
在A5然后这应该工作:
=A1&"-"&A2&"-"&A3
编辑然后尝试:
=OFFSET(A1,0,1-MOD(COLUMN(),6))&"-"&OFFSET(A2,0,MOD(COLUMN(),2)-1)&"-"&A3
虽然这不会给整个行中的A5提供相同的文本。
答案 1 :(得分:0)
pnuts的答案很棒,帮我解决了一些测试用例。然而,为最后一列调整和生成空字符串有点困难,所以我还编写了一个VBA函数来完全按照我的需要进行操作。
打开VBA编辑器(ALT + F11)并在新模块中输入以下代码:
Public Function checkLeftIfEmpty(start As range) As String
If start.Cells.Count > 1 Then
checkLeftIfEmpty = "Only a single cell allowed as parameter"
Exit Function
End If
Dim currentRange As range
Set currentRange = start
Do While currentRange.Column >= 1
If currentRange.Value <> "" Then
checkLeftIfEmpty = currentRange.Value
Exit Function
Else
Set currentRange = currentRange.Offset(0, -1)
End If
Loop
End Function
您现在可以使用函数checkLeftIfEmpty
从参数中找到包含文本的第一个单元格左侧:(这将是合并单元格本身的文本,如果应用于&#34;隐藏通过合并&#34; cell)
还可以组合连接字符串: