MS Excel:如果行包含给定日期,如何列出所有列?

问题描述 投票:0回答:2

我的数据如下所示。我有每天与我分享主题的网上论坛。我们会根据需要随机执行此操作。

enter image description here

|         | Topic 1 | Topic 2 | Topic 3 | Topic 4 | Topic 5 | Topic 6 | Topic 7 | Topic 8 | Topic 9 |
|---------|---------|---------|---------|---------|---------|---------|---------|---------|---------|
| Group 1 |         | 19-apr  | 30-apr  |         |         |         |         |         |         |
| Group 2 | 18-apr  | 25-apr  |         |         |         |         |         |         |         |
| Group 3 |         |         |         |         | 19-apr  | 30-apr  |         |         |         |
| Group 4 | 18-apr  | 25-apr  |         |         |         |         |         |         |         |
| Group 5 |         |         |         |         |         |         | 19-apr  | 30-apr  |         |
| Group 6 |         |         | 25-apr  |         |         |         |         |         |         |
| Group 7 | 18-apr  | 25-apr  |         |         |         |         |         |         |         |

对于我们的指标和分析,我们需要每个日期在不同工作表上的组列表。我们想知道在一天中哪些团体参与了。如下所示

enter image description here

有人可以帮我如何仅使用公式而不使用宏来完成此操作?我相信可以通过某种方式在索引匹配或查找中进行处理。

excel excel-formula xlsx
2个回答
0
投票

您绝对可以使用宏进行此操作。您可以在没有宏的情况下执行类似的操作;它可能与您要查找的内容不完全相同,因为它将在空白处留下未解决组的空白。

方法1这是我使用的公式以及它所在的工作表图片:

=IF(IFERROR(MATCH(L$4,$B6:$H6,0),FALSE),INDEX($B$5:$B$13,MATCH($K5,$B$5:$B$13,0),1),"")

想法是,如果每个日期的组列表旁边都有绝对引用,则可以使用索引和匹配来填写该组的名称,但前提是Match必须在上一张表格的该行的行中找到该确切的日期代码。如果将等效公式放在第一个单元格中,则可以将其拖到数组的其余部分。

我使用的公式不是执行此操作的唯一方法,但是如果您知道Index and Match,那么它对您应该很有意义。

方法2

一种更复杂的方法是使用图像参考。有了这些,就可以在单独的工作表上准确地生成您要的报告。

假设您采用方法1,并将每一列分离到另一个表中。日期标题下单元格内的公式几乎相同,除了将标题参考括在int()中,如下所示。为N个日期中的每个日期创建一个表,其中N是您要一次监视的天数。然后,当您希望摘要显示不同的日期时,请转到每个表并更改标题,然后过滤出空白。

公式:=IF(IFERROR(MATCH(INT($L$2),$B4:$H4,1),FALSE),INDEX($B$4:$B$11,MATCH($K3,$B$4:$B$11,1),0),"")

下图显示了每个日期一张表的意思:

然后插入图像。不管什么图像;可能是任何内容的屏幕截图。单击该图像,然后单击进入编辑栏。然后突出显示您要代表的表列。以下是该操作的屏幕截图:

现在将该图片放在工作簿中自己的图纸上。将每个日期表放在工作簿中自己的工作表上。这样做的原因是:如果您过滤表,则重叠在表外的所有其他行也将被隐藏。您将表格移动到单独的工作表上,以防止它们彼此隐藏。

最后,按照您喜欢的顺序排列图片,从表格中过滤出空白,然后图片将正是您所需要的:

同样,这有点令人费解,因为如果您希望报告显示新的日期摘要,则必须更改每个表的标题。然后,您必须转到每个表并刷新它的过滤器。这通常是宏的输入位置。


0
投票

假设范围A1:J8存放在源表中,L1:P8存放在日期/组输出中

1]在L2中,复制为:

=IFERROR(1/(1/AGGREGATE(15,6,$B$2:$J$8/($B$2:$J$8>K$2),1)),"")

2]在L3中,复制到P3并全部向下复制:

=IF(L$2="","",IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($A$2:$A$8)/($B$2:$J$8=L$2),ROW(A1))),""))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.