如何转置 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。
- 突出显示您的数据并按 CTRL+T 使其成为 table。 (如果有标题,请检查 "my data has headings",如果没有,请检查 un-check,就像您的示例一样。)
- 在 DATA 选项卡上单击 FROM TABLE/RANGE。这将打开 PowerQuery。
- 您需要 select 除第一列之外的所有列,因此单击第二列,然后按住
CTRL
,同时单击其右侧的其他列。
- 在 TRANSFORM 选项卡上单击 UNPIVOT COLUMNS。
- 单击屏幕 top-right 中的 X,然后单击“保持更改”
大功告成!(...简单又有趣!)
我有很多像上面那样的行。
低于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。
- 突出显示您的数据并按 CTRL+T 使其成为 table。 (如果有标题,请检查 "my data has headings",如果没有,请检查 un-check,就像您的示例一样。)
- 在 DATA 选项卡上单击 FROM TABLE/RANGE。这将打开 PowerQuery。
- 您需要 select 除第一列之外的所有列,因此单击第二列,然后按住
CTRL
,同时单击其右侧的其他列。 - 在 TRANSFORM 选项卡上单击 UNPIVOT COLUMNS。
- 单击屏幕 top-right 中的 X,然后单击“保持更改”
大功告成!(...简单又有趣!)