添加标题时转置表格

时间:2019-01-29 15:15:46

标签: excel vba

我有一张这样的桌子:

FRANCE       PARIS
FRANCE       MARSEILLE
FRANCE       LYON
SPAIN        MADRID
SPAIN        BARCELONA
SWITZERLAND  ZURICH
SWITZERLAND  GENEVA
SWITZERLAND  BERN

我想换位,所以看起来像这样:

FRANCE       SPAIN       SWITZERLAND
PARIS        MADRID      ZURICH
MARSEILLE    BARCELONA   GENEVA
LYON                     BERN

如果我可以使用更合适的工具,则可以在5分钟内使用循环来完成此操作,但是我只能在工作中使用Excel(以及VBA,我对此一无所知)。

到目前为止,我所做的是一个有效的丑陋解决方案。首先,我使用COUNTIF和SUMPRODUCT创建一个过渡表,然后使用VLOOKUP创建我的最终表。

是否有更优雅的方法来实现我要完成的任务?

3 个答案:

答案 0 :(得分:2)

在列 A B 中包含数据,请尝试使用以下简短的VBA宏:

<p><b>Contact data: <button class="0316 301 958" onclick="myFunction(this.className)">Show the number</button>
     <p><b>Contact data: <button class="0316 301 958" onclick="myFunction(this.className)">Show the number</button>
          <p><b>Contact data: <button class="0754 520 952" onclick="myFunction(this.className)">Show the number</button>
               <p><b>Contact data: <button class="0316 301 958" onclick="myFunction(this.className)">Show the number</button>

enter image description here

答案 1 :(得分:1)

如果您有机会获得powerquery你可以做以下(稍微低效率的,但做这项工作)。

将数据转换为名为Table1的表,然后在Excel 2016 / +中进入“数据”>“从表”(选择表)。对于2013,请在从Microsoft安装加载项后使用powerquery选项卡,然后执行from表导入。在powerquery窗口中打开编辑器窗口,然后将M代码编辑为以下内容:

let
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    #"Changed Type" = Table.TransformColumnTypes(Source,{{"Country", type text}, {"City", type text}}),
    #"Grouped Rows" = Table.Group(#"Changed Type", {"Country", "City"}, {{"Count", each _, type table}}),
    #"Expanded Count" = Table.ExpandTableColumn(#"Grouped Rows", "Count", {"Country", "City"}, {"Count.Country", "Count.City"}),
    #"Transposed Table" = Table.Transpose(#"Expanded Count"),
    #"Removed Columns" = Table.RemoveColumns(#"Transposed Table",{"Column2", "Column3", "Column4", "Column6", "Column8"}),
    #"Promoted Headers" = Table.PromoteHeaders(#"Removed Columns", [PromoteAllScalars=true]),
    #"Changed Type1" = Table.TransformColumnTypes(#"Promoted Headers",{{"FRANCE", type text}, {"SPAIN", type text}, {"SWITZERLAND", type text}})
in
    #"Changed Type1"

答案 2 :(得分:1)

假设您可以使用“删除重复项”,然后将国家/地区转置为一行,则可以在以下条件下使用此数组公式(由 CTRL + SHIFT + ENTER 输入):

=INDEX($B$1:$B$8,SMALL(IF($A$1:$A$8=E$1,ROW($A$1:$A$8)-ROW(A$1)+1),ROWS(A$1:A1)))

enter image description here

然后,要在找不到其他匹配项时隐藏#NUM错误,只需将该公式包装在=IFERROR([formula above],"")中即可。