首页 > 解决方案 > Google Sheet 在冻结的标题栏中隐藏公式

问题描述

有没有办法将公式定位到它下面的单元格?我有一个复杂的公式,可以跨多列和多行转置和构建结果。我喜欢在数据中进行排序和过滤,因此公式最终会四处移动,因为它位于数据的第一个单元格中。

例如,第 1 行被冻结并具有每列的标题。我在 A2 中有公式,并且数据一直填充到 A 和 B、C 和 D 中。如果我对 A 列进行排序或过滤,公式会移动。我想将公式向上移动到标题栏(A1)中,这样它就保持在同一个地方并且永远不会移动。但我希望它仍然从 A2 开始填充数据。然后我还希望标题单元格(A1)仍然显示列标题的文本而不是公式......所以基本上将公式隐藏在单元格的背景中。这可能吗?

编辑:

https://docs.google.com/spreadsheets/d/1MbvMGhrVNhXGfMi4Q5VjwODLgDpKtXtMj0PtKre3Q2U/edit?usp=sharing

添加了一个示例以获得更好的视觉效果,以使我的问题更清晰。基本上我现在拥有的是填充 A2:C 的单元格 A2“Data1”中的公式。它将根据需要在垂直和水平方向填充和转置以显示数据。这会自动填充单元格。我想将公式本身向上移动到 A1(“标题 1”),但仍然让单元格读取“标题 1”。当我这样做时,我会丢失 Data1、Data2、Data3,因为它将公式的整个结果向上移动了 1 行。我想强制将结果向下推 1 行,以便结果保持不变,但公式与冻结条相关联。

标签: google-sheetsarray-formulasgoogle-sheets-formulagoogle-sheets-query

解决方案


基本上,你要求这个:

={"header for A", "header for B"; ARRAYFORMULA(A2:B)}

请注意,为避免数组错误,即使为空,您也需要为每列定义一个标题""

0


={""; ARRAYFORMULA(IFERROR(SUBSTITUTE(SPLIT(TRIM(
    TRANSPOSE(QUERY(TRANSPOSE(SUBSTITUTE(IF(LEN($A$3:$L), {
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('T1'!$A$3:$L),,999^99)),1,0)), "T1", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('B1'!$A$3:$L),,999^99)),1,0)), "B1", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('T2'!$A$3:$L),,999^99)),1,0)), "T2", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('B2'!$A$3:$L),,999^99)),1,0)), "B2", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('M1'!$A$3:$L),,999^99)),1,0)), "M1", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('B3'!$A$3:$L),,999^99)),1,0)), "B3", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('M2'!$A$3:$L),,999^99)),1,0)), "M2", ),
 IF(TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99))=IFERROR(VLOOKUP(
    TRANSPOSE(QUERY(TRANSPOSE($A$3:$L),,999^99)),
    TRANSPOSE(QUERY(TRANSPOSE('B4'!$A$3:$L),,999^99)),1,0)), "B4", )}, ),
 " ", "♦")),,999^99))), " "), "♦", " ")))}

0

注意:如果你得到ARRAY LITERAL error你将需要添加更多""
像:={"", "", "", ""; ARRAYF....


推荐阅读