VBA Excel将3列转换为Arrary
我一直在寻找一种方法来做到这一点,我觉得我正在打墙。 。 。 我是VBA的新手,所以我可能不会这样做。
我有一个如下所示的表格:
我需要它看起来像这样:
客户需要将这些数据用于各种目的。 他们尝试了一个Pivot Table,但是他们讨厌它的样子,最终用户也不喜欢它。 在最终格式之后,他们还对数据做了很多其他调整。
我能够获得名称和问题以正确的布局复制/粘贴到新的工作表。 然后,我试图做一个For Each循环来过滤名称,并将答案复制/粘贴/转置到新的工作表。 我采用了这种方法,因为问题和名字的数量总是各不相同。
我不明白我已经看到的代码,我不确定我在网上find的旧例子可以被操纵来匹配我的情况。
有什么build议么? 还是有另一个职位正在做一些我想要做的事情,我已经错过了?
谢谢!!
假设名字被sorting,每个名字都有相同的问题,你可以运行一个简单的“双重匹配-1”来得到答案作为工作表公式。 (在表1中的列表1和表2中的列表2)
=INDEX(sheet1!$C:$C,MATCH(B$1,INDEX(sheet1!$B:$B,MATCH($A2,sheet1!$A:$A,0)):sheet1!$B$99999,0)+MATCH($A2,sheet1!$A:$A,0)-1)
B2的公式。 向右下方填充。
如果您不需要公式,请隐藏工作表并将值仅通过VBA复制/粘贴到另一个工作表。
名称不需要完整,但是“aabb”和“bbaa”可以一起工作,但“abab”或“baab”不会。 问题不需要以任何顺序排列,但没有“q1”的人会给他另一个名字find的下一个“q1”。
你可以简单的使用Power Pivot
(一个免费的MS插件,在2010 – 2013年(又名Data --> Get & Transform
在2016年)
仅仅
- select
Questions
列到数据透视表(创build新列) - 值列 – >
Answers
- 高级选项
Do not aggregate
- 高级选项
这是使用您发布的数据的结果:
我做的唯一的格式更改是closures表选项下的筛选器button。