google-sheets - 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 行,以便结果保持不变,但公式与冻结条相关联。
解决方案
基本上,你要求这个:
={"header for A", "header for B"; ARRAYFORMULA(A2:B)}
请注意,为避免数组错误,即使为空,您也需要为每列定义一个标题""
={""; 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))), " "), "♦", " ")))}
注意:如果你得到ARRAY LITERAL error
你将需要添加更多""
像:={"", "", "", ""; ARRAYF....
推荐阅读
- python - 如何在 Python 会话中打开带有重定向的登录页面?
- html - 将html特定表中句子的第一个单词大写
- spring - STS 中的调试错误
- javascript - minikube 集群上的 Vanilla JS ERR_NAME_NOT_RESOLVED
- node.js - 在 forEach nodeJS 之后发送响应
- c# - 是否可以仅使用 Odata 或其他 nuget 包中的查询选项?
- javascript - useState如何设置初始long值
- ruby-on-rails - 为每个 S3 文档设置文档 ID
- ios - 如何检查用户是否通过 SKOverlay 下载了应用程序?
- arrays - 从动态数组中删除此操作是否正确?如何修复内存?