好的,所以我试图将常用的教程数组公式更进一步,但无法弄清楚如何。
基本上我有一组包含以下值的表格:
| Sheet 1 || Sheet 2 |
| Products(1) | Product Group || Products(2) | Data |
| | || | |
| 100 | 1 || 100 | abc |
| 200 | 2 || 200 | def |
| 300 | 3 || 200 | ghi |
| 400 | 3 || 500 | jkl |
| 500 | 2 || 400 | mno |
工作表1列出了对每个产品进行分类的所有参数,并使用这些参数将每个产品分配给一个组。 Essentially Products是一个独特的索引键。
工作表2是每次产品运行时的跟踪列表,它是如何运行的。因此,产品编号可能会多次显示或根本不显示。
我有第三张纸,其中输入了产品编号,从中计算了其组编号,并在纸张1中搜索具有该组编号的所有产品,并使用数组公式返回列表(使用本教程{ {3}}由不同的人在线显示)。我们将在表3中将其称为“列K”。
我现在要做的是更进一步,从表2返回“数据”,以获取“表2”,“产品(2)”和“表3”之间的所有匹配!“列K”。如果“Column K”被修复了,我可以再次使用相同的公式,并在IF表达式中添加一个OR语句,但由于K是动态填充的,我不知道如何找到它们。
为了澄清,我最理想的结果是:
| Sheet 3 |
| Product Num | Column K | Column L | Column M |
| (user enters) | (automatic) | (automatic) | (automatic) |
| 500 | 200 | 200 | def |
| | 500 | 200 | ghi |
| Product Group | | 500 | jkl |
| (automatic) | | | |
| 2 | | | |
答案 0 :(得分:0)
如果将列向量与数组公式中的行向量进行比较,则会将列中的每个值与行中的每个值进行比较。因此,以下内容可行,因为我们会先将Sheet3!K1:K[n]
中的值转换为行向量,然后再与Sheet2!$A$1:$A$10000
进行比较。
Sheet 1中:
Sheet 2中:
表Sheet 3:
Sheet3
中的公式:
在A5
:
=VLOOKUP($A$2,Sheet1!$A:$B,2,FALSE)
在K2
向下:
{=IFERROR(INDEX(Sheet1!$A$1:$A$10000,SMALL(IF(Sheet1!$B$1:$B$10000=$A$5,ROW(Sheet1!$B$1:$B$10000)),ROW(1:1))),"")}
在L2
向下:
{=INDEX(Sheet2!$A$1:$A$10000,SMALL(IF(Sheet2!$A$1:$A$10000=TRANSPOSE($K$1:INDEX($K:$K,MAX(IF($K$1:$K$10000<>"",ROW($K$1:$K$10000))))),ROW(Sheet2!$A$1:$A$10000)),ROW(1:1)))}
在M2
向下:
{=INDEX(Sheet2!$B$1:$B$10000,SMALL(IF(Sheet2!$A$1:$A$10000=TRANSPOSE($K$1:INDEX($K:$K,MAX(IF($K$1:$K$10000<>"",ROW($K$1:$K$10000))))),ROW(Sheet2!$A$1:$A$10000)),ROW(1:1)))}
K2
,L2
,M2
中的公式是数组公式。在没有大括号的情况下输入它们,然后按[Ctrl] + [Shift] + [Enter]。
K[n]
中对Sheet3!K1:K[n]
的引用是使用
INDEX($K:$K,MAX(IF($K$1:$K$10000<>"",ROW($K$1:$K$10000))))
其中
MAX(IF($K$1:$K$10000<>"",ROW($K$1:$K$10000)))
获取列K中最大的行号,其中内容不等于&#34;&#34;。
如果产品编号是数字,则更容易,也可以对结果进行排序。
Sheet1和sheet2见上文。
表Sheet 3:
Sheet3中的公式:
在A5
中:见上文
在K2
向下:
{=IFERROR(SMALL(IF(Sheet1!$B$2:$B$10000=$A$5,Sheet1!$A$2:$A$10000),ROW(1:1)),"")}
在L2
向下:
{=SMALL(IF(Sheet2!$A$2:$A$10000=TRANSPOSE($K$2:INDEX($K:$K,MATCH(MAX($K:$K),$K:$K))),Sheet2!$A$2:$A$10000),ROW(1:1))}
在M2
向下:
{=INDEX(Sheet2!$B$1:$B$10000,SMALL(IF(Sheet2!$A$1:$A$10000=$L2,ROW(Sheet2!$A$1:$A$10000)),COUNTIF($L$2:$L2,L2)))}