Sheets header 行 ARRAYFORMULA,用于根据作业的周转时间和日期范围内收到的日期查找费率
Sheets header row ARRAYFORMULA to look up rate based on the job's turnaround AND date received within a range of dates
我有一个包含两张纸的 Google 表格工作簿:Jobs
A
B
C
D
E
1
Turnaround
Received
Rate
Pages
Total
2
Standard
12/2/2021
[=12=].40
204
.60
3
Rush
12/9/2021
[=12=].60
79
.40
4
Rush
12/29/2021
[=12=].60
24
.40
5
Standard
1/1/2022
[=12=].45
81
.45
6
Standard
1/2/2022
[=12=].45
137
.65
7
Standard
1/5/2022
[=12=].45
95
.75
8
Standard
1/15/2022
[=12=].45
162
.90
Rates
A
B
C
D
1
Turnaround
Base Rate
Start Date
End Date
2
Standard
[=13=].40
9/1/2021
12/31/2021
3
Rush
[=13=].60
8/17/2018
6/10/2022
4
Expedited
[=13=].80
8/17/2018
6/10/2022
5
Daily
.00
8/17/2018
6/10/2022
6
Standard
[=13=].45
1/1/2022
6/10/2022
我正在尝试在 Jobs!C1 中使用 ARRAYFORMULA 来查找 Rates!B:B 中的值,其中 Jobs!A:A 中的 Turnaround 与 Rates!A:A 中的 Turnaround 和 Received Date 相匹配在 Jobs!B:B 中或介于 Rates!C:C 中的开始日期和 Rates!D:D 中的结束日期之间。
想法是费率可能会随着时间的推移而变化,但工作总数仍将使用每个工作进入时的正确费率进行计算。
我知道我不能将 SUMIFS 与 ARRAYFORMULA 一起使用,所以我尝试使用 QUERY,但这只会填充第一份工作的费率。
={"Rate";
ARRAYFORMULA(QUERY(Rates!A:D,
"select B where A contains '"&Jobs!A2:A
&"' and C < date'"&TEXT(Jobs!B2:B, "YYYY-MM-DD")
&"' and D > date'"&TEXT(Jobs!B2:B, "YYYY-MM-DD")&"'",0))}
如果需要,我可以添加辅助列。我试图避免在添加作业时必须在列中手动填写公式。
这是工作簿的 link:
Job Rate Lookup By Turnaround + Date Range
感谢任何帮助。
尝试:
={"Rate"; ARRAYFORMULA(IFNA(VLOOKUP(A2:A&B2:B, SORT({
FILTER(Rates!A2:A, Rates!A2:A<>"")&Rates!C2:C, Rates!B2:B}, Rates!C2:C, 1, Rates!A2:A, 1), 2, 1)))}
当使用 ARRAYFORMULA
时,您将无法使用 QUERY
来获取整个值数组,因为它只会 return 找到的第一个值。
我使用 VLOOKUP
创建了一个匹配值的公式,但是我不得不将 Jobs
中的名称从 Standard
修改为 Standard 2
。
这是公式:
=IFERROR(ARRAYFORMULA(VLOOKUP(A2:A,Rates!A2:D6,2,0)))
这些是结果:
我有一个包含两张纸的 Google 表格工作簿:Jobs
A | B | C | D | E | |
---|---|---|---|---|---|
1 | Turnaround | Received | Rate | Pages | Total |
2 | Standard | 12/2/2021 | [=12=].40 | 204 | .60 |
3 | Rush | 12/9/2021 | [=12=].60 | 79 | .40 |
4 | Rush | 12/29/2021 | [=12=].60 | 24 | .40 |
5 | Standard | 1/1/2022 | [=12=].45 | 81 | .45 |
6 | Standard | 1/2/2022 | [=12=].45 | 137 | .65 |
7 | Standard | 1/5/2022 | [=12=].45 | 95 | .75 |
8 | Standard | 1/15/2022 | [=12=].45 | 162 | .90 |
Rates
A | B | C | D | |
---|---|---|---|---|
1 | Turnaround | Base Rate | Start Date | End Date |
2 | Standard | [=13=].40 | 9/1/2021 | 12/31/2021 |
3 | Rush | [=13=].60 | 8/17/2018 | 6/10/2022 |
4 | Expedited | [=13=].80 | 8/17/2018 | 6/10/2022 |
5 | Daily | .00 | 8/17/2018 | 6/10/2022 |
6 | Standard | [=13=].45 | 1/1/2022 | 6/10/2022 |
我正在尝试在 Jobs!C1 中使用 ARRAYFORMULA 来查找 Rates!B:B 中的值,其中 Jobs!A:A 中的 Turnaround 与 Rates!A:A 中的 Turnaround 和 Received Date 相匹配在 Jobs!B:B 中或介于 Rates!C:C 中的开始日期和 Rates!D:D 中的结束日期之间。
想法是费率可能会随着时间的推移而变化,但工作总数仍将使用每个工作进入时的正确费率进行计算。
我知道我不能将 SUMIFS 与 ARRAYFORMULA 一起使用,所以我尝试使用 QUERY,但这只会填充第一份工作的费率。
={"Rate";
ARRAYFORMULA(QUERY(Rates!A:D,
"select B where A contains '"&Jobs!A2:A
&"' and C < date'"&TEXT(Jobs!B2:B, "YYYY-MM-DD")
&"' and D > date'"&TEXT(Jobs!B2:B, "YYYY-MM-DD")&"'",0))}
如果需要,我可以添加辅助列。我试图避免在添加作业时必须在列中手动填写公式。
这是工作簿的 link: Job Rate Lookup By Turnaround + Date Range
感谢任何帮助。
尝试:
={"Rate"; ARRAYFORMULA(IFNA(VLOOKUP(A2:A&B2:B, SORT({
FILTER(Rates!A2:A, Rates!A2:A<>"")&Rates!C2:C, Rates!B2:B}, Rates!C2:C, 1, Rates!A2:A, 1), 2, 1)))}
当使用 ARRAYFORMULA
时,您将无法使用 QUERY
来获取整个值数组,因为它只会 return 找到的第一个值。
我使用 VLOOKUP
创建了一个匹配值的公式,但是我不得不将 Jobs
中的名称从 Standard
修改为 Standard 2
。
这是公式:
=IFERROR(ARRAYFORMULA(VLOOKUP(A2:A,Rates!A2:D6,2,0)))
这些是结果: