选择 Excel 中某一列的值等于某个值的第一行

选择 Excel 中某一列的值等于某个值的第一行

我有一个 Excel 表,其中显示了我的网站上各种产品全天的状态以及状态的时间戳,如下所示:

| Timestamp               | Product 1 | Product 2 | Product 3 | Product 4 |
|-------------------------|-----------|-----------|-----------|-----------|
| 25/03/2021 08:15:52.020 | 999       |           | 0         | 999       |
| 25/03/2021 08:15:53.000 | 0         | 101       | 0         |           |
| 25/03/2021 08:15:53.070 | 0         | 0         |           | 0         |

状态为 0 表示产品可用,而空白单元格/其他数字表示产品不可用。

对于每件产品,我希望获取该产品首次上市的时间戳(即单元格中的值首次为 0,而不是非 0 或空白)。最终结果如下:

|           | Timestamp               |
|-----------|-------------------------|
| Product 1 | 25/03/2021 08:15:53.000 |
| Product 2 | 25/03/2021 08:15:53.070 |
| Product 3 | 25/03/2021 08:15:52.020 |
| Product 4 | 25/03/2021 08:15:53.070 |

可以使用纯 Excel 函数来实现吗?还是我需要使用一些 Python/Pandas 来获取我想要的表格?谢谢!!

答案1

这可以使用INDEX/MATCH

假设您的数据在A1:E4,对于产品 1,您将使用

=INDEX($A2:$A4,MATCH(0, B2:B4,0))

(其他产品也同样如此B2:B4C2:C4

答案2

扩展@cybernetic 的解决方案,第二张表中的公式可以查找应使用的列。因此 sheet2,B2 是(假设 Z 产品列和 100 行):

=INDEX(Sheet1!$A$2:$A$100, MATCH(0, INDEX(Sheet1!$B$2:$Z$100,,MATCH(A2, Sheet1!$B$1:$Z$1,0)),0))

分解一下,右边第一个 MATCH 查找产品名称并返回列索引 1 到 25(相对于 B - Z)。右边第一个 INDEX 返回包含当前产品状态信息的列向量。第二个 MATCH 查找此列向量中第一次出现的零并返回行索引。第二个 INDEX 使用这个最终索引来挑选该行的时间戳。

编辑:更好的是,假设工作表 1 和工作表 2 中列出的产品的顺序保持不变,您不必搜索(匹配),而可以简单地使用工作表 2 中产品的行号作为工作表 1 中的列索引...

=INDEX(Sheet1!$A$2:$A$100, MATCH(0, INDEX(Sheet1!$B$2:$Z$100,,ROW()-2+1),0))

其中 ROW()-2+1 给出从第 2 行开始的索引 1、2、3、4...。

答案3

您还可以使用指数匹配功能。

对于产品 1 是=INDEX(A2:E4;XMATCH(0;B2:B4);1)

只需将 B2:B4 更改为 C2:C4,其他产品亦是如此。

在此处输入图片描述 在此处输入图片描述

相关内容