VBA Excel取消透视表/提取特定数据

时间:2018-09-11 15:00:47

标签: excel vba

我一直在尝试使用VBA从MS Excel中的数据透视表中提取特定数据点。

数据如下:

ID     dimension     value
0001   Name          Max
0001   Adress        Octavia St
0002   Postal Code   94100
0001   City          San Antonio
0005   Name          Sylvia
0018   Postal Code   33741

并且我想根据所需的“维数”作为列标题和ID作为行标题,将特定数据点提取到更大的表中,并使用来自其他来源的信息:

ID     otherInfo1    Name    otherInfo2    City
0001   chef          Max     married       San Antonio
0005   bank teller   Sylvia  single        ...

不幸的是,我无法在线找到该问题的任何答案,而且对于VBA来说还比较陌生。

有人知道如何在不使用中间工作表的情况下将数据直接粘贴到另一个电子表格中吗?

我一直在尝试使用for循环,但未成功:

For i = 12 To nRowsB
    For j = 2 To nRowsB
        If wks_source.Cells(j, 1).Value = wkstarget.Cells(i, 1).Value Then
        wkstarget.Cells(i, 1).Value = wks_source.Cells(j, 1).Value
        Debug.Print "Success1"
        Else
        j = j + 1
        End If
    Next j
Next i

nRowsB-源文件中的行数

非常感谢您的帮助!

2 个答案:

答案 0 :(得分:0)

此代码应可帮助您解决问题。

(Get-Content 'C:\folder\phonebook.xml') -replace '<extension>01','<extension>+441' -replace '<extension>07','<extension>+447' | Set-Content 'C:\folder\phonebook.xml'

它从此表“源”中提取数据

enter image description here

进入此表“目标”

enter image description here

答案 1 :(得分:0)

昨晚制定了此代码,请查找附件以供参考:

 Sub get_unpivoted_data(nRowsID, source_wks, target_wks, ID_column_source, ID_column_target, search_term_2nd_level, target_write_column, source_column, source_search_term_2nd_level_column)

    For i = 12 To nRowsID
        For j = 2 To nRowsID
            If source_wks.Cells(j, ID_column_source).Value = target_wks.Cells(i, ID_column_target).Value Then
                Debug.Print "Success1"
                If source_wks.Cells(j, source_search_term_2nd_level_column).Value = search_term_2nd_level Then
                    target_wks.Cells(i, target_write_column).Value = source_wks.Cells(j, source_column).Value
                    Else
                    Debug.Print "x"
                    End If
            Else
            j = j + 1
            End If
        Next j
    Next i

    End Sub