0

两列在这张图片上看起来像。

当我只想显示包含字母“b”的单元格时,我无法再看到通常在 B 列中可见的文本“Title1”和“Title2”。

我猜虽然B列中的单元格被合并了,但文本仍然绑定到A3,分别绑定到A7。

那么我怎样才能同时过滤可见内容并保留合并的文本呢?简而言之,我想按字母“b”过滤内容,但我仍然想在 B 列中看到文本“title 1/2”。

4

2 回答 2

1

您标记了 excel,所以这是 excel 中的一个解决方案:

您需要单击包含合并单元格的列并取消合并所有单元格。

然后你需要把这个公式放在你的列表的顶部,并用 ctrl+shift+enter 输入它(这将作为一个数组公式输入):

=OFFSET(C3,MAX(IF(NOT(ISBLANK(C$3:C3)),ROW(C$3:C3),0))-ROW(C3),0)

然后你需要自动填充它。(这个函数看起来有点冗长,但我刚上网 - 可能有一种更简单的方法可以做到这一点 - 但它会找到一个范围内的最后一个非空白单元格)。

取消合并单元格解决方案

我认为 openoffice 具有类似的功能,因此您应该能够在 openoffice 中执行相同或类似的操作。

或者,如果您使用的是 excel,您可以单击要取消合并的列并运行此宏:

Sub UnMergeSelectedColumn()

    Dim C As Range, CC As Range 
    Dim MA As Range, RepeatVal As Variant 


    For Each C In Range(ActiveCell, Cells(Rows.Count, ActiveCell.Column).End(xlUp)) 
        If C.MergeCells = True Then 
            Set MA = C.MergeArea 
            If RepeatVal = "" Then RepeatVal = C.Value 
            MA.MergeCells = False 
            For Each CC In MA 
                CC.Value = RepeatVal 
            Next 
        End If 
        RepeatVal = "" 
    Next

End Sub 

祝你好运。

编辑:

我找到了一个非 VBA 解决方案,它可以在 excel 和 openoffice 中使用,并且不需要您将其作为数组公式输入(使用 ctrl+shift+enter):

=INDEX(B:B,ROUND(SUMPRODUCT(MAX((B$1:B1<>"")*(ROW(B$1:B1)))),0),1)

在开放式办公室中,我认为您想像这样输入它:

=INDEX(B:B;ROUND(SUMPRODUCT(MAX((B$1:B2<>"")*(ROW(B$1:B2)))),0),1)

或者可能是这样的:

=INDEX(B:B;ROUND(SUMPRODUCT(MAX((B$1:B2<>"")*(ROW(B$1:B2)))),0))

您只需要自动填充该公式即可:

OpenOffice 兼容解决方案

于 2012-08-22T22:07:15.027 回答
0

您的主要问题似乎是您在过滤器字段之后留下的一个“空白行”。

删除它,它会正常工作。

于 2012-09-05T16:21:56.453 回答