假设我在第 6 列,第 10 行。
第 4 列数据每个单元格一个字母,如下所示:a、b、a、c、d、e、b、c、f、d
我想要一个公式来查找第 4 列、第 10 行的值...得到 d。
然后检查先前的单元格是否包含 d ...在本例中是的,在第 5 行。
然后转到第 2 列、第 10 行并获取那里的值...比如说 15。
然后转到第 2 列、第 5 行并获取那里的值...比如说 5。
然后进行计算(15-5)并在第 6 列、第 10 行插入值 10。
这在 Excel 中可以实现吗?
如果能做到的话就太好了。
谢谢。
答案1
对于该解决方案,添加了一个虚拟列(G:G)。
公式:
G1
包含=B1
将值复制到 D 列的右侧(对于vlookup
)。将其复制到G2:G10
F1
包含=B1-VLOOKUP(D1,D:G,4,FALSE)
。将其复制到F2:F10
。它从 B1 中减去第一个匹配行的值。
(注意:4
表示 G 列是范围内的第 4 列D:G
)
| A | B | C | D | E | F | G
---+-------+-------+-------+-------+-------+-------+-------
1 | | | | a | | 0 | 0
2 | | | | b | | 0 | 0
3 | | | | a | | 0 | 0
4 | | | | c | | 0 | 0
5 | | 5 | | d | | 0 | 5
6 | | | | e | | 0 | 0
7 | | | | b | | 0 | 0
8 | | | | c | | 0 | 0
9 | | | | f | | 0 | 0
10 | | 15 | | d | | 10 | 15
上述方法可以计算Value of current row - Value of the FIRST MATCHING ROW
无论是 1 个“d”,2 个“d”,3 个“d”或更多。
正如@hyperslug所说,请澄清:
- 如果有 3 个“d”怎么办?
- 如果只有 1 个“d”怎么办?
答案2
因此,只是想澄清一下。
对于任何具有特定值的行执行数学计算并在行末尾输出答案?
每个单元格中是否只有两个相同的字母,并且总是最大单元格编号减去最小单元格编号。
如果是这样,那么它应该很容易,只要您可以先按字母排序,然后按索引排序(按索引排序只需要将初始 1,2,3...n+1 作为列。这样你就会有类似的东西。a,a,b,b,c,c,d,d,e,e,f,f 我对 excel 的语法不是 100% 了解,但希望这能给你 10 的入门知识。
答案3
我会将问题拆分,并使用一些额外的列来表示中间步骤,就像您在解释中所做的那样。然后,您可以隐藏中间计算,或者在必要时将它们合并为一个复杂的大公式。
因此,从第 7 列开始,远离您想要答案的位置,并且假设您只想处理第一次出现的情况,G10:
=匹配(D10,D$1:D9,0)
H10:
=OFFSET(B10,G10-ROW(G10),0)
然后F10就可以:
=B10-H10
把它们放在一起可以得到一个公式:
=B10-OFFSET(B10,MATCH(D10,D$1:D9,0)-ROW(B10),0)
如果您不想出现错误,您可以将所有内容包装在一个IFERROR
函数中。
更优雅的是,如果您想删除所有出现的“d”,或者只有一次其他出现,您可以使用以下公式:
=B10-SUMIFS($B$1:B9,$D$1:D9,D10)