0

我有一个三列的长表,如下所示:

+-----+-------+-------+
| URL | Label | Value |
+-----+-------+-------+
| u1  | l3    | v1    |
+-----+-------+-------+
| u3  | l4    | v3    |
+-----+-------+-------+
| u2  | l2    | v2    |
+-----+-------+-------+
| u4  | l1    | v4    |
+-----+-------+-------+
| u3  | l5    | v3    |
+-----+-------+-------+
| u1  | l2    | v1    |
+-----+-------+-------+
| u4  | l3    | v4    |
+-----+-------+-------+
| u2  | l4    | v2    |
+-----+-------+-------+

我想准旋转它,让它看起来像:

+-----+-----+-----+-----+-----+-----+
| URL | l1  | l2  | l3  | l4  | l5  |
+-----+-----+-----+-----+-----+-----+
| u1  | #NV | v4  | v1  | #NV | #NV |
+-----+-----+-----+-----+-----+-----+
| u2  | #NV | v2  | #NV | v2  | #NV |
+-----+-----+-----+-----+-----+-----+
| u3  | #NV | #NV | #NV | v3  | v3  |
+-----+-----+-----+-----+-----+-----+
| u4  | v4  | #NV | v4  | #NV | #NV |
+-----+-----+-----+-----+-----+-----+

为此,我编写了一个带有两个搜索条件的 VLOOKUP 公式,如下所示:

=VLOOKUP($E2&F$1,CHOOSE({1.2},$A$2:$A$9&$B$2:$B$9,$C$2:$C$9),2,0)

CTRL+ SHIFT+输入ENTER

我不确定我是否正确地将公式从德语翻译成英语 - 我的德语 Excel 原始工作公式如下所示:

=SVERWEIS($E2&F$1;WAHL({1.2};$A$2:$A$9&$B$2:$B$9;$C$2:$C$9);2;0)

在这个例子中,这个公式就像一个魅力。

我的问题:我需要处理的原始表大约有 700.000 行长 - 在 Excel 昨晚整个计算之后,计算甚至还没有准备好。

有什么方法可以更有效地计算?

4

3 回答 3

1

不使用密集数组公式的一种更简单的替代方法是使用辅助列

在 D 列中,生成连接:

=A2&B2

一旦完成,那么它在单元格中是相当直接的公式F2

=IFERROR(INDEX($C:$C,MATCH($E2&F$1,$D:$D,0)),"#NV")

向下复制。

于 2021-06-17T15:01:57.633 回答
0

这是附加图像中 F2 的公式,从那里复制到 F2:J5。

=IFERROR(INDIRECT(ADDRESS(SUMPRODUCT((INDEX(Data,0,1)=$E2)*(INDEX(Data,0,2)=F$1)*ROW(Data)),3)),"-")

在此处输入图像描述

F1 中的公式如下所示。E2 中的公式类似,如图所示。

=TRANSPOSE(UNIQUE(INDEX(Data,0,2)))

这是定义命名范围的公式Data:-

=OFFSET(Sheet1!$A$2,0,0,COUNTA(Sheet1!$A:$A)-1, 3)

第一个和最后一个公式都是易变的,这将使包含 700,000 行的工作表变得迟缓。对于 OFFSET 函数,这无关紧要,因为它只有其中两个。对于 INDIRECT 函数,我假设您会将结果转换为值,并且公式不会保留在工作簿中。

于 2021-06-17T15:16:58.813 回答
0

虽然不太确定它是否可以在没有数组的情况下工作(我有 office365,但看不出有什么区别),但试试这个:

=INDEX($C$1:$C$9,MATCH($E2&F$1,$A$1:$A$9&$B$1:$B$9,0)) 在此处输入图像描述

在德语中,这将是: =INDEX($C$1:$C$9;VERGLEICH($E2&F$1;$A$1:$A$9&$B$1:$B$9;0))

PS这个公式是非易失性的,不需要助手。

您也可以将其包装在 IFERROR 中,它只会显示匹配项,如果没有匹配项则显示空白: =IFERROR(INDEX($C$1:$C$9,MATCH($E2&F$1,$A$1:$A$9&$B$1:$B$9,0)),"")

于 2021-06-17T15:20:44.690 回答