如何在数据透视表中将2个不同列的信息表示为1?

问题描述 投票:0回答:1

在我的数据中,我有两列代表之前访问过的国家,一个国家访问了我正在学习的城市之后。

这是我的数据样本的图片:https://i.imgur.com/kS4K9uK.png

我想在我的数据透视表中代表与每个城市相关的所有国家(所以在城市之前和之后)。我希望将我所在的城市和所有可能被访问过的国家作为我的专栏和我的价值观中的数量。

这是我想要实现的图片,但我只能在其中一个列(在该情况下的国家/地区)之后执行此操作。我想要相同的格式,但有前后两个数据(但重要的是要知道它不一定是2列中的相同国家,所以我不能只有一个国家列作为头部和两个作为价值观):https://i.imgur.com/PUjhSmB.png

当我将城市放在行中并且将2个国家/地区列放在值和列中时,很难读取表格,因为之前和之后都是独立的,甚至可能被视为一对。如果他们不在数据透视表列中,他们只给我前后国家的数量,而不是国家,这不是我想要的。

这是数据透视表结果的图片:https://i.imgur.com/3j4BD3k.png

我还尝试通过«Country before»+«Country after»来创建一个新的领域,但它似乎不起作用,因为数据是在文本中。

excel merge pivot-table
1个回答
0
投票

好的,我认为现在了解输出。您基本上需要计算B + C列中每个国家/地区的出现次数,并按城市分组。我将提供几种方法,以便您可以选择最适合您的方式。

最简单的方法

我能想到的最简单的方法就是将第二列粘贴到第一列下,然后在这个新表上进行透视。

COUNTIF

更可重复的方法是基本上创建自己的数据透视表并使用COUNTIF函数来计算每个国家/地区的实例。

=COUNTIFS($A$1:$A$6,$F2,$B$1:$B$6,G$1)+COUNTIFS($A$1:$A$6,$F2,$C$1:$C$6,G$1)

电源查询

最可重复的方法是使用PowerQuery。这样,您只需单击按钮即可刷新数据。要做到这一点(假设您有excel 2016),请转到“数据”选项卡,然后在选择数据时单击“从表/范围”。 Power Query窗口将打开。在屏幕的左上角将是一个带有高级编辑器的按钮。当你打开它时,你会看到以下代码:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"City", type text}, {"Country Before", type text}, {"Country After", type text}})
in
    #"Changed Type"

用以下代码替换代码。请注意,您的表可能会被称为不同的表。您可以在代码的第二行看到它的内容。下面的代码使用“Table1” - 您可以将其替换为表的名称。

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"City", type text}, {"Country Before", type text}, {"Country After", type text}}),
    #"Before" = Table.RemoveColumns(#"Changed Type",{"Country Before"}),
    #"After" = Table.RemoveColumns(#"Changed Type",{"Country After"}),
    #"Append" = Table.Combine({#"Before",#"After"}),
    #"Inserted Merged Column" = Table.AddColumn(Append, "Country", each Text.Combine({[Country After], [Country Before]}, ""), type text),
    #"Removed Columns" = Table.RemoveColumns(#"Inserted Merged Column",{"Country After", "Country Before"})
in
    #"Removed Columns"

希望有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.