【问题标题】:VLOOKUP with dynamic column index number (ROW, ROWS, COUNTA)具有动态列索引号(ROW、ROWS、COUNTA)的 VLOOKUP
【发布时间】:2023-01-20 21:45:36
【问题描述】:

这是可用的数据:

Column A Column B Column C Column D Column E
item1 traitA traitB traitC traitD
item2 traitE traitF traitG traitH
item3 traitI traitJ traitK
item4 traitL traitM traitN
item5 traitO traitP

我有一列 5,000 多个项目。他们都有不同的特征(有的有 2 个,有的多达 20 个)。这些特征在同一行中,在项目旁边的列中。我已经有了每件物品的特征计数,并将物品堆叠到合适的数量。导致:

Column Q Column R
item1 4
item2 4
item3 3
item4 3
item5 2

和:

Column Y Column Z
item1
item1
item1
item1
item2
item2
item2
item2
item3
item3
item3
item4
item4
item4
item5
item5

我需要的结果如下:

Column Y Column Z
item1 traitA
item1 traitB
item1 traitC
item1 traitD
item2 traitE
item2 traitF
item2 traitG
item2 traitH
item3 traitI
item3 traitJ
item3 traitK
item4 traitL
item4 traitM
item4 traitN
item5 traitO
item5 traitP

我把它放在 Z2 单元格中: =VLOOKUP(Y2,$A:$E,2,FALSE) 这仅适用于 traitA、traitE、traitI 等(B 列)。

所以我需要的是一个动态的列索引号。这需要找到 Y 列中总共有多少个“item1”,然后它在 Y 列中的总数中位于第一个。

此外,当您转到下一项时,列索引号必须返回到“2”,因为这将使 VLOOKUP 工作。

列索引号需要如下所示:

Column Y Column Z
item1 2
item1 3
item1 4
item1 5
item2 2
item2 3
item2 4
item2 5
item3 2
item3 3
item3 4
item4 2
item4 3
item4 4
item5 2
item5 3

对 ROW 和 ROWS 没有太多经验,我无法让它工作。也许 VBA 提供了最好的解决方案。还是还需要有 COUNTA 函数?

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你有什么版本的excel?
  • 微软 Excel 365 企业版
  • 我昨天回答了类似的question。你想要做的是取消透视第一列。你能检查一下你是否可以按照说明进行操作并通过查询来完成吗?

标签: excel indexing excel-formula match row


【解决方案1】:

您可以使用此公式 - 基于名为 data 的表

=LET(traits,data[[Column B]:[Column E]],
items,MAP(traits,LAMBDA(i,INDEX(data[Column A],ROW(i)-1))),
FILTER(HSTACK(TOCOL(items),TOCOL(traits)),TOCOL(traits)<>0))

基本思想是使用 TOCOL - 用于简单的特征。

关于项目,诀窍是用相应的项目填充特征矩阵 - 然后执行TOCOL

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多