ARRAYFORMULA FILTER VLOOKUP 多条件公式谷歌表解决方案

时间:2021-07-19 06:40:47

标签: google-sheets google-sheets-formula

我需要 K7 中的 ARRAYFORMULA、VLOOKUP 或 FILTER 公式:

如果 J7:J 中的值为 >= E7:E AND <= F7:F AND D7:D = "Traverse",则从 A7:A 中输入日期

我有多种解决方案可以处理各个行,但没有一个可以作为数组公式来影响整列。

=IF(AND(J7>=E7:E,J7<=F7:F,D7:D="Traverse"),OFFSET(J7,0,-9),"")

=IFERROR(FILTER(A:A,E:E<=J7,F:F>=J7,D:D="Traverse"))

=ArrayFormula(IFNA(vlookup(J7:J2064,Query(sort(filter({date("20"&left(A7:A,2),mid(A7:A,3,2),right(A7:A,2)),A7:G},D7:D="Traverse"),6,1,1,0),"Select Col6,Col2",0),2,1)))

这里有一个示例表,如果有人可以提供任何线索:)

https://docs.google.com/spreadsheets/d/1SYbhfyIA2KoZF0k-TuIqm-Kn9L9o0I16EGbSXDaTABU/edit?usp=sharing

enter image description here

2 个答案:

答案 0 :(得分:0)

使用:

=ARRAYFORMULA(IF((J7:J>=E7:E)*(J7:J<=F7:F)*(D7:D="Traverse"), A7:A, ))

enter image description here

更新:

=ARRAYFORMULA(IFNA(VLOOKUP(J7:J, SORT({
 FILTER({E7:E,  A7:A}, D7:D="Traverse"); 
 FILTER({F7:F+1,H7:H}, D7:D="Traverse")}), 2, 1)))

答案 1 :(得分:0)

感谢您的帮助,最后我设法从 Google 帮助论坛上的某个人那里获得了一个公式。如果您有兴趣,这是一个可行的解决方案:

=ArrayFormula(IFNA(vlookup(J7:J,sort({filter({Register!E7:F,Register!A7:A},Register!D7:D="Traverse")
;if({index(sort(filter({Register!A7:A,Register!E7:E,Register!F7:F},Register!D7:D="Traverse"),2,1),0,2);""}
>{"";index(sort(filter({Register!A7:A,Register!E7:E,Register!F7:F},Register!D7:D="Traverse"),2,1),0,3)},
{{"";index(sort(filter({Register!A7:A,Register!E7:E,Register!F7:F},Register!D7:D="Traverse"),2,1),0,3)}+1,
{index(sort(filter({Register!A7:A,Register!E7:E,Register!F7:F},Register!D7:D="Traverse"),2,1),0,2);""},
iferror({index(sort(filter({Register!A7:A,Register!E7:E,Register!F7:F},Register!D7:D="Traverse"),2,1),0,2)
;""}/0,"")},)},1,1),3,1)))