如何使用 ARRAYFORMULA 向后搜索 HYPERLINK
how to search backwards the HYPERLINK with ARRAYFORMULA
tabla de ejemplo
“顺便说一句,我已经到处读到 arrayformula
不能与我使用过的其他功能一起使用,尽管我尝试了无限组合,但我仍然有希望......”
我需要找到一种方法来复制图片中的内容,但使用 ARRAYFORMULA
因为如果他们插入行,我发现并制作的当前表格将停止工作,因为我需要复制公式到新的单元格。
对于“下一个”超链接,它很“简单”,因为我使用了以下公式,其中 MATCH
函数的第二个参数是相对的,并搜索当前单元格的较低范围。
D 列:
=IF( ISERROR( MATCH( $A2; $A3:$A; 0)); "-"; HYPERLINK( "#gid=772477244&range="&ADDRESS( ROW()+MATCH($A2;$A3:$A;0); 1; 4); "Next"))
对于“上一个”超链接……嗯……有点复杂。
第一:我需要两个辅助列,一个用于对行进行编号(使用 arrayformula
),另一个用于获取它出现的前一行(为此我找到了 3 种不同的方式:query()
、maxif()
或 max(filter())
的组合,尽管 none 对我来说 ARRAYFORMULA
).
C 列:
=IF(ISERROR(F2);"-"; HYPERLINK("#gid=772477244&range="&ADDRESS(F2;1;4); "Previous"))
E 列:
=ARRAYFORMULA( SI( A:A="";; FILA(A:A)))
F栏(真不知道哪个最好)
选项 1:
=QUERY( A:E; "SELECT E WHERE E < "&E2&" AND A = '"& A2&"' ORDER BY E DESC LIMIT 1")
选项 2:
=MAX( FILTER( E:E; A:A=A2; E:E<E2))
选项 3:
=MAXIFS( $E:$E; $A:$A; $A2; $E:$E; "<"&FILA($E2))
注意:如果您发现,
和;
不一致,那是因为它是另一种语言。
希望我说清楚了,谢谢。
尝试:
=INDEX(IF(A2:A="",,IF(ISERROR(VLOOKUP(A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A))+{-1, 1}, {A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A)), ROW(A2:A)}, 2, )),
"---", HYPERLINK("#gid=0&range=A"&VLOOKUP(A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A))+{-1, 1}, {A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A)), ROW(A2:A)}, 2, ),
{"previous", "next"}))))
或在您的语言环境中:
=INDEX(IF(A2:A="";;IF(ISERROR(VLOOKUP(A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+{-1\ 1}; {A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\ ROW(A2:A)}; 2; ));
"---"; HYPERLINK("#gid=0&range=A"&VLOOKUP(A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+{-1\ 1}; {A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\ ROW(A2:A)}; 2; );
{"previous"\ "next"}))))
demo sheet
注意:在您的真实电子表格中,如果 gid 与 0
不同,请不要忘记更改它
tabla de ejemplo
“顺便说一句,我已经到处读到 arrayformula
不能与我使用过的其他功能一起使用,尽管我尝试了无限组合,但我仍然有希望......”
我需要找到一种方法来复制图片中的内容,但使用 ARRAYFORMULA
因为如果他们插入行,我发现并制作的当前表格将停止工作,因为我需要复制公式到新的单元格。
对于“下一个”超链接,它很“简单”,因为我使用了以下公式,其中 MATCH
函数的第二个参数是相对的,并搜索当前单元格的较低范围。
D 列:
=IF( ISERROR( MATCH( $A2; $A3:$A; 0)); "-"; HYPERLINK( "#gid=772477244&range="&ADDRESS( ROW()+MATCH($A2;$A3:$A;0); 1; 4); "Next"))
对于“上一个”超链接……嗯……有点复杂。
第一:我需要两个辅助列,一个用于对行进行编号(使用 arrayformula
),另一个用于获取它出现的前一行(为此我找到了 3 种不同的方式:query()
、maxif()
或 max(filter())
的组合,尽管 none 对我来说 ARRAYFORMULA
).
C 列:
=IF(ISERROR(F2);"-"; HYPERLINK("#gid=772477244&range="&ADDRESS(F2;1;4); "Previous"))
E 列:
=ARRAYFORMULA( SI( A:A="";; FILA(A:A)))
F栏(真不知道哪个最好)
选项 1:
=QUERY( A:E; "SELECT E WHERE E < "&E2&" AND A = '"& A2&"' ORDER BY E DESC LIMIT 1")
选项 2:
=MAX( FILTER( E:E; A:A=A2; E:E<E2))
选项 3:
=MAXIFS( $E:$E; $A:$A; $A2; $E:$E; "<"&FILA($E2))
注意:如果您发现,
和;
不一致,那是因为它是另一种语言。
希望我说清楚了,谢谢。
尝试:
=INDEX(IF(A2:A="",,IF(ISERROR(VLOOKUP(A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A))+{-1, 1}, {A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A)), ROW(A2:A)}, 2, )),
"---", HYPERLINK("#gid=0&range=A"&VLOOKUP(A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A))+{-1, 1}, {A2:A&
COUNTIFS(A2:A, A2:A, ROW(A2:A), "<="&ROW(A2:A)), ROW(A2:A)}, 2, ),
{"previous", "next"}))))
或在您的语言环境中:
=INDEX(IF(A2:A="";;IF(ISERROR(VLOOKUP(A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+{-1\ 1}; {A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\ ROW(A2:A)}; 2; ));
"---"; HYPERLINK("#gid=0&range=A"&VLOOKUP(A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+{-1\ 1}; {A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\ ROW(A2:A)}; 2; );
{"previous"\ "next"}))))
demo sheet
注意:在您的真实电子表格中,如果 gid 与 0
不同,请不要忘记更改它