如何使用 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

不同,请不要忘记更改它