【发布时间】:2020-09-15 21:12:18
【问题描述】:
所以我正在开发一个签到系统,其中一个人的位置被签入到一张表(GPS 坐标)中,并且可接受的位置列表在另一张表上。它使用边界并测试以查看人在哪个边界内。现在,该过程适用于每个单元格中的单个方程,但当我添加 Arrayformula 时不会自动填充列。因为我需要它是自动的,所以我需要自动填充位置功能才能工作。
我尝试了一些不同的选项,但它们似乎都锁定了 1 个单元格的值或输出错误,或者不自动填充。我假设这是因为我在不同的页面上使用了 2 个不同的数组,但我不知道如何使用或分离 ArrayFormula 以达到我的目的。
//Using Specific Cell Values//
=ARRAYFORMULA(
IF(B2="",,IF(TEXTJOIN(", ", 1,
IF((E2*1>=Locations!D$2:D)*
(E2*1<=Locations!E$2:E)*
(F2*1>=Locations!F$2:F)*
(F2*1<=Locations!G$2:G),
Locations!C$2:C, ))="", "out of range", TEXTJOIN(", ", 1,
IF((E2*1>=Locations!D$2:D)*
(E2*1<=Locations!E$2:E)*
(F2*1>=Locations!F$2:F)*
(F2*1<=Locations!G$2:G),
Locations!C$2:C, )))))
//Using a definite range...//
=ARRAYFORMULA(
IF(B2:B100="",,IF(TEXTJOIN(", ", 1,
IF((E2:E100*1>=Locations!D$2:D)*
(E2:E100*1<=Locations!E$2:E)*
(F2:F100*1>=Locations!F$2:F)*
(F2:F100*1<=Locations!G$2:G),
Locations!C$2:C, ))="", "out of range", TEXTJOIN(", ", 1,
IF((E2:E100*1>=Locations!D$2:D)*
(E2:E100*1<=Locations!E$2:E)*
(F2:F100*1>=Locations!F$2:F)*
(F2:F100*1<Locations!G$2:G),
Locations!C$2:C, )))))
//Using Infinite Range//
=ARRAYFORMULA(
IF(B2:B="",,IF(TEXTJOIN(", ", 1,
IF((E2:E*1>=Locations!D$2:D)*
(E2:E*1<=Locations!E$2:E)*
(F2:F*1>=Locations!F$2:F)*
(F2:F*1<=Locations!G$2:G),
Locations!C$2:C, ))="", "out of range", TEXTJOIN(", ", 1,
IF((E2:E*1>=Locations!D$2:D)*
(E2:E*1<=Locations!E$2:E)*
(F2:F*1>=Locations!F$2:F)*
(F2:F*1<Locations!G$2:G),
Locations!C$2:C, )))))
也是一个旁注。据我记得,在我创建“IF”函数之前一切正常.
这是工作表的链接。 https://docs.google.com/spreadsheets/d/1OZSDju3hRyGyRfFhHJT2PLQ3DBvcfOAT1ZvNxB-J0DQ/edit?usp=sharing
【问题讨论】:
-
所以你想要一个 ArrayFormula 来填充主工作表中的位置列,对吧?
-
您会采用公式脚本混合解决方案吗?我有一种感觉,否则这将是一个非常复杂的公式。
-
我想出了一些看起来不错的东西(见下文),但我仍在尝试更好地了解 arrayformulas 中的 arrayformulas 是如何工作的,或者不工作......
-
请记住,根据site guidelines,当答案解决您的问题时,accept 甚至upvote 它也可以让其他人受益。
标签: arrays google-sheets google-sheets-formula array-formulas