在Excel中创建唯一的导出数据VBA宏函数

在Excel中创建唯一的导出数据VBA宏函数,vba,excel,Vba,Excel,本网站以及Excel VBA的新增功能。我得到了一个现有的电子表格,其中有很多信息需要处理,我想知道这里是否有人能够提供有关创建VBA函数来完成繁重工作的见解 我的挑战是,有很多数据需要保持原始格式,但对于我们的分析来说,将数据导出为下面第二张图片所示的格式是可行的 是否有一个函数可以循环遍历X标头,然后返回与相应Y标头关联的值,并通过不同的组合进行处理 原始数据格式: 所需的导出数据格式: 在此方面的任何帮助都将不胜感激!原始数据是不断变化的,因此,如果我找不到解决方案,它将变成一个永无止

本网站以及Excel VBA的新增功能。我得到了一个现有的电子表格,其中有很多信息需要处理,我想知道这里是否有人能够提供有关创建VBA函数来完成繁重工作的见解

我的挑战是,有很多数据需要保持原始格式,但对于我们的分析来说,将数据导出为下面第二张图片所示的格式是可行的

是否有一个函数可以循环遍历X标头,然后返回与相应Y标头关联的值,并通过不同的组合进行处理

原始数据格式:

所需的导出数据格式:

在此方面的任何帮助都将不胜感激!原始数据是不断变化的,因此,如果我找不到解决方案,它将变成一个永无止境的复制粘贴练习

谢谢

杰森

更新:谢谢你们的提示。我查看了一个unpivot代码,并能够将其作为一个资源找到,它是有效的!:

  Sub NormalizeData()
Dim Rng As Range
Dim WS As Worksheet

On Error Resume Next
Set Rng = Application.InputBox(Prompt:="Select a range to normalize data" _
, Title:="Select a range", Default:=ActiveCell.Address, Type:=8)
On Error GoTo 0

If Rng Is Nothing Then
Else
Application.ScreenUpdating = False
Set WS = Sheet1
i = 0
For c = 1 To Rng.Columns.Count - 1
For r = 1 To Rng.Rows.Count - 1
        WS.Range("A2").Offset(i, 0) = Rng.Offset(0, c).Value
        WS.Range("A2").Offset(i, 1) = Rng.Offset(r, 0).Value
        WS.Range("A2").Offset(i, 2) = Rng.Offset(r, c).Value
        i = i + 1
    Next r
Next c
WS.Range("A:C").EntireColumn.AutoFit
Application.ScreenUpdating = True
End If
End Sub
结果的图像如下所示:


我仍在调整它,使其用户友好。任何进一步的提示将不胜感激

标题1和标题2是否总是有一个3x3表格?输出表中的“标题”来自哪里?此外,这也是pivot表擅长的事情。(没有双关语)不幸的是,这些桌子的大小会有所不同。我的错误是,输出表中不需要标题。我只是想说明我更喜欢不同列中的数据。你试图实现的可以称为“unpivot”。请尝试谷歌它,你会发现多个合并范围的样本数据透视表和vba。