vba - 在 Excel 中透视数据的宏或方法?

标签 vba excel excel-formula unpivot

我正在寻找一种方法来动态透视 Excel 工作表中的数据,以便将数据置于通用格式中,无论数据集有多大。

例如:我希望能够将一个可能有 5 列、30 列或 x 列的电子表格转换为只有三列宽的通用格式。

以下是原始数据的示例:

enter image description here

我希望它看起来像这样:

enter image description here

有没有办法做到这一点,无论是通过宏还是使用任何其他 Excel 函数?

最佳答案

假设标签/数据位于 Sheet1 中,从 A1 开始。

  1. 插入新的 ColumnA。

  2. 对于 Excel 2003:激活汇总表中的任意单元格并选择“数据 - 数据透视表和数据透视图报表”:

    SO20541905 first example

  3. 对于更高版本,请使用 Alt+D、P:

    访问向导
  4. 选择多个合并范围数据透视表,然后单击下一步>

    SO20541905 second example

  5. 在“第 2a 步(共 3 步)”中,选择我将创建页面字段,然后单击下一步>

    SO20541905 third example

  6. 在“Step 2b of 3”(未在模式中显示!)中,在范围:字段中指定汇总表范围(示例数据为 A2:E6),然后单击 < kbd>添加,然后下一步>

SO32982294 fourth example

  • 在“第 3 步,共 3 步”中,选择数据透视表的位置(应使用现有工作表,因为仅暂时需要 PT):
  • SO32982294 fifth example

  • 单击完成创建数据透视表:
  • SO32982294 sixth example

  • 向下钻取(即双击)总计的交点(此处为单元格 L4 或 16):
  • SO32982294 seventh example

  • 现在可以删除 PT。

  • 在表 A2 中:

    ="摘要"&RIGHT(B2)

  • 通过在快速菜单中选择表格(在表格中右键单击)并转换为范围,将生成的表格转换为传统的单元格数组。

  • 在从 Row2 系列开始的备用列中,向下填充整数,从 1 到您开始使用的数据行数(在示例中为 4) 。然后系列填充该系列以适应。

  • 按该(备用)列对工作表进行排序,从最小到最大,并选中我的数据有标题

  • 删除 Row1 和备用列,希望您最终会得到:

    SO32982294 eighth example

  • 关于vba - 在 Excel 中透视数据的宏或方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32982294/

    相关文章:

    vba - Excel VBA 中的 Like 运算符

    vba - XHTML 网站抓取指南

    javascript - 如何从 html 表单中获取输入值并转换为 csv?

    excel - Debug.Print 所有应用程序名称

    excel - 突出显示选定的行和列

    excel - 为什么这个暗淡定义错误?

    arrays - 数组类型不匹配

    Excel 公式返回最新日期旁边的值

    excel - 用列文本替换文本标记

    excel - COUNTIFS 列 A 或 B 作为范围