Google Sheet 在冻结的标题栏中隐藏公式

Google Sheet hide formula in frozen title bar

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

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

编辑:

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

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

基本上,你要求这个:

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

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


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

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