![从最近的前一条记录中获取一个值,其中某些文本出现在两列中的任意一列中](https://linux22.com/image/1449296/%E4%BB%8E%E6%9C%80%E8%BF%91%E7%9A%84%E5%89%8D%E4%B8%80%E6%9D%A1%E8%AE%B0%E5%BD%95%E4%B8%AD%E8%8E%B7%E5%8F%96%E4%B8%80%E4%B8%AA%E5%80%BC%EF%BC%8C%E5%85%B6%E4%B8%AD%E6%9F%90%E4%BA%9B%E6%96%87%E6%9C%AC%E5%87%BA%E7%8E%B0%E5%9C%A8%E4%B8%A4%E5%88%97%E4%B8%AD%E7%9A%84%E4%BB%BB%E6%84%8F%E4%B8%80%E5%88%97%E4%B8%AD.png)
我正在尝试更全面地自动化计算我保存的有关联赛比赛结果的电子表格中的数值和摘要数据。
我有一张表格,其中包含有关每场比赛的大量信息,相关字段包括:比赛日期、获胜者、获胜者起始差点、获胜者结束差点、失败者、失败者起始差点、失败者结束差点、比赛开始时间。
让分会在每场比赛结束时和下一场比赛开始前进行调整。要找到一名球员最近的过去记录(可能是赢家或输家),并将他的最终让分从该记录复制到我现在要输入的起始让分(赢家或输家),这是一件很麻烦的事情。
我想要一个公式来找到最近的记录(如果他一天玩两次,则为最高日期和开始时间),他是赢家还是输家,然后得到最终的差点(来自各自的赢家或输家)。
根据 teylyn 的建议,以下是该文件的 Dropbox 链接。相关选项卡是比赛结果:https://www.dropbox.com/s/1j9c6zsxjd3q4dt/Sample%20for%20Excel%20Question%20on%20Superuser.xlsx?dl=0
我添加了一个空白的 L 列来测试,将结果与 K 中的结果进行比较,看看它们是否有效,这就是它在那里的原因。当我把它放到 Dropbox 中时忘记删除它了。
答案1
问题陈述
工作表的列E
和中都有名称X
。对于每一行n
, ≠ 。 Column 中有数字对应于 Column 中的名称, Column 中有数字对应于 Column 中的名称。 对于第一行之后的任何行(假设为第 42 行),如果可能,我们希望从前几行获取和的值。En
Xn
M
E
AG
X
K42
AF42
- 如果
E42
是“John”,则查找包含“John”的最新行(在列E
或中X
)。将该行称为n
。如果= “John”,则设置为等于。如果= “John”,则设置为等于。En
K42
Mn
Xn
K42
AGn
如果
X42
是“Scott”,则查找包含“Scott”的最新行(在E
或列中X
)。将该行称为n
。如果= “Scott”,则设置为等于。如果= “Scott”,则设置为等于。En
AF42
Mn
Xn
AF42
AGn
解决方案
为了保持理智,我们使用辅助列;假设AR
和AS
。假设(如示例文件中所示),数据从第 2 行开始。输入
=MAX(($E$2:$E2=$E3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)), ($X$2:$X2=$E3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))
到AR3
(跳过)。以 ++结尾AR2
,使其成为数组公式。同样,设置为CtrlShiftEnterAS3
=MAX(($E$2:$E2=$X3)*(100*ROW($E$2:$E2)+COLUMN($M:$M)), ($X$2:$X2=$X3)*(100*ROW($X$2:$X2)+COLUMN($AG:$AG)))
作为数组公式。(这与 相同,AR3
只是 的两个出现$E3
被 替换为$X3
。)
设置K3
=IF($AR3=0, "?", INDEX($A$1:$BG$999, INT($AR3/100), MOD($AR3,100)))
并AF3
=IF($AS3=0, "?", INDEX($A$1:$BG$999, INT($AS3/100), MOD($AS3,100)))
(不是数组公式)。除了三次出现的$AR3
被 替换为外,这些是相同的$AS3
。
当然,向下拖动/填充。
辅助列查找最近出现的名称 — 查找最近出现的名称,并 查找最近出现的名称— 基本上是通过在前面的行中找到最大值ARn
En
ASn
Xn
(上一个值=this_value) * 排())
即姓名匹配的最高行号。然后它将找到姓名的位置编码为
100*行() + 列(我们想要复制的数据)
两个公式都会查找列E
和,并返回相应列或单元格X
的编码坐标。然后和公式只需解码单元格地址并检索值。M
AG
K
AF
213也是如此AR6
,因为“John”(E6
)最近出现在第 2 行,并且由于他出现在E2
(而不是X2
),所以我们想要从第 13 列(列M
)复制值。