如何转置 excel 中的不同列?

How to transpose varied columns in excel?

我有很多像上面那样的行。

低于table是理想的结果。

我曾使用 v-lookup,pivot table 但运气不好。

有什么方法可以正确匹配不同的列吗?

是的,可以做到。这是一个 vba-less 方法。我正在使用两个工作列,A 和 B(但它们可以隐藏在其他地方)。我的条目从您的数据行下方某处开始,在我的例子中是第 6 行,在 A6 到 D6 中我放置了列 headers:

sourceline    sourcecol    country    city

现在在 A7 中,我将数字 1 放在第一行表示开始。 在 A8 中,我放置了以下公式,并根据需要将其向下拖动。 =if(1+countif(indirect("A7:A"&(row()-1)),A7)=(counta(indirect("A"&A7&":Z"&A7))),A7+1,A7)。它有什么作用?好吧,它说让我们看看我上面的数字出现了多少次。如果与相应行中的城市数(假设<=25)相同,则该加1并移至下一行。否则,继续同一行。

在B7中我把下面的公式往下拖。 =if(A7=A6,1+B6,2) 它说,如果我仍然与前面的条目在同一行,请移到一列,否则从第 2 (B) 列重新开始。

一旦我有了行和列,对于国家/地区,我需要在 C7 中使用以下内容并向下拖动 =indirect(address(A7,1)),它表示在此处提到的行和第 1 (A) 列中找到我的值。

同样在D7里拖下去我有=indirect(address(A7,B7))拿到城市。这会产生您想要的 table(可能超过两列,但您可以对其进行调整)。

通过在输入和我的输出的 headers 之间至少留一个空行,如果您将公式稍微超出一点,您最终也会在 table 的底部留下空白在需要的地方。

您或许可以使用 OFFSET 函数稍微简化公式。

如果你想从这里得到:

...为此:

那么你要做的就是Unpivot

  1. 突出显示您的数据并按 CTRL+T 使其成为 table。 (如果有标题,请检查 "my data has headings",如果没有,请检查 un-check,就像您的示例一样。)
  2. DATA 选项卡上单击 FROM TABLE/RANGE。这将打开 PowerQuery。
  3. 您需要 select 除第一列之外的所有列,因此单击第二列,然后按住 CTRL,同时单击其右侧的其他列。
  4. TRANSFORM 选项卡上单击 UNPIVOT COLUMNS
  5. 单击屏幕 top-right 中的 X,然后单击“保持更改

大功告成!(...简单又有趣!)

  • 我的其他回答 here 中有更多示例和更详细信息的链接 here