excel - VBA Excel 反透视表/提取特定数据
问题描述
我一直在尝试使用 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 -- 源文件中的行数
非常感谢您的帮助!!
解决方案
昨晚完成了这段代码,找到附件供您参考:
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
推荐阅读
- angular - 超时 - 在 jest.setTimout.Timeout 指定的 10000 毫秒超时内不涉及异步回调
- r - ggplot:堆叠条形图 - geom_text 标签凌乱
- python - Wxpython将数据从一帧传递到另一帧
- c++ - 用于返回嵌套类类型的范围解析运算符
- objective-c - Objective-C,dispatch_queue_t 阻塞主线程
- php - 在 Laravel 中为路由设置别名
- xcode - 如何降级 Xamarin.ios 版本 Visual Studio 2019 使其与 Xcode 10.2 兼容
- php - Gate::allows 在 laravel 中的用户权限
- chart.js - 在 ChartJs.Blazor 中向 ChartJsLineChart 发送数据
- asp.net - 从 .NET 中的引导程序中获取输入复选框标记的值