excel VBA合并两个表[已关闭]

x759pob2  于 2023-03-20  发布在  其他
关注(0)|答案(1)|浏览(130)

**已关闭。**此问题需要debugging details。当前不接受答案。

编辑问题以包含desired behavior, a specific problem or error, and the shortest code necessary to reproduce the problem。这将有助于其他人回答问题。
2天前关闭。
Improve this question
我一直在绞尽脑汁想办法,我有两张table
表一
| 战略|产品名称|执行日期|净性能MTD %|
| - ------|- ------|- ------|- ------|
| 地层1|产品1|2023年1月31日|1%|
| 地层1|产品1|二○二三年二月二十八日|百分之二|
| 地层2|产品2|2023年1月31日|1%|
| 地层2|产品2|二○二三年二月二十八日|百分之二|
表二
| 战略|产品名称|年初至今净业绩|
| - ------|- ------|- ------|
| 第1层|产品1|百分之三点一|
| 第2层|产品2|百分之三点一|
组合表
| 战略|产品名称|2023年1月31日|二○二三年二月二十八日|年初至今净业绩|
| - ------|- ------|- ------|- ------|- ------|
| 第1层|产品1|1%|百分之二|百分之三点一|
| 第2层|产品2|1%|百分之二|百分之三点一|
任何帮助都将不胜感激
谢谢
我尝试了数据透视表和合并数据透视表,但没有工作,因为不是唯一的,任何帮助非常感谢,理想的VBA

clj7thdc

clj7thdc1#

这也可以使用Windows Excel 2010+和Excel 365(Windows或Mac)中提供的Power Query来完成
使用增强查询的步骤

  • 选择数据表中的某个单元格
  • Data => Get&Transform => from Table/Range
  • PQ编辑器打开时:Home => Advanced Editor
  • 记录第2行中的表名称
  • 将下面的M代码粘贴到您看到的位置
  • 将第2行中的Table名称改回最初生成的名称。
    • 同时更改Source2行中的表名以反映工作簿中的实际名称 *
  • 阅读评论并探索Applied Steps以了解算法
let

//Read in Table1
    Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
    Table1 = Table.TransformColumnTypes(Source,{
        {"Strategy", type text}, {"Product name", type text}, {"Performance Date", type date}, 
        {"Net Performance MTD %", Percentage.Type}}),

//Read in Table 2
    Source2 = Excel.CurrentWorkbook(){[Name="Table2"]}[Content],
    Table2 = Table.TransformColumnTypes(Source2, {
        {"Strategy", type text}, {"Product Name", type text}, {"Net Performance YTD", Percentage.Type}}),

//Join the two tables
    Join = Table.NestedJoin(Table1,{"Strategy","Product name"}, Table2, {"Strategy", "Product Name"}, "Joined"),
    #"Expanded Joined" = Table.ExpandTableColumn(Join, "Joined", {"Net Performance YTD"}, {"Net Performance YTD"}),
    #"Pivoted Column" = Table.Pivot(Table.TransformColumnTypes(#"Expanded Joined", {{"Performance Date", type text}}, "en-US"), 
        List.Distinct(Table.TransformColumnTypes(#"Expanded Joined",
            {{"Performance Date", type text}}, "en-US")[#"Performance Date"]),
             "Performance Date", "Net Performance MTD %"),

//Move YTD Performance to the end.
    #"Col Order" = List.RemoveRange(Table.ColumnNames(#"Pivoted Column"),2,1) & {Table.ColumnNames(#"Pivoted Column"){2}},
    #"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column", #"Col Order"),
    
//Rename date columns
    #"Renames" = List.Transform(
        List.Select(#"Col Order", each (try Date.From(_))[HasError]=false), each {_, Date.ToText(Date.From(_), "d/M/yyyy")}),
    #"Rename Date Columns"  = Table.RenameColumns(#"Reordered Columns",#"Renames")
in
    #"Rename Date Columns"

表1和表2

输出

相关问题