将列的子集转换为行,并将其余列保留在Excel VBA中

将列的子集转换为行,并将其余列保留在Excel VBA中,excel,vba,Excel,Vba,我有活动注册的数据,这些数据将以CSV文件的形式每周提交给我。为了简单起见,我对数据进行了简化,但基本思想是它将如下所示: Team Name1 Name2 Name3 Total 1 a b c 10 2 d e f 20 3 g h i 30 4 j k l 40 5 m n o 50 6 p q r 60 7

我有活动注册的数据,这些数据将以CSV文件的形式每周提交给我。为了简单起见,我对数据进行了简化,但基本思想是它将如下所示:

Team Name1 Name2 Name3 Total
1    a     b     c     10
2    d     e     f     20
3    g     h     i     30
4    j     k     l     40
5    m     n     o     50
6    p     q     r     60
7    s     t     u     70
Team Name Total
1    a    10
1    b    10
1    c    10
2    d    20
2    e    20
2    f    20
3    g    30
3    h    30
3    i    30
4    j    40
4    k    40
4    l    40
5    m    50
5    n    50
5    o    50
6    p    60
6    q    60
6    r    60
7    s    70
7    t    70
7    u    70
每周,对于完整数据集,我需要能够将列Name1、Name2和name3转换为行,并保持所有其他列相同,以便如下所示:

Team Name1 Name2 Name3 Total
1    a     b     c     10
2    d     e     f     20
3    g     h     i     30
4    j     k     l     40
5    m     n     o     50
6    p     q     r     60
7    s     t     u     70
Team Name Total
1    a    10
1    b    10
1    c    10
2    d    20
2    e    20
2    f    20
3    g    30
3    h    30
3    i    30
4    j    40
4    k    40
4    l    40
5    m    50
5    n    50
5    o    50
6    p    60
6    q    60
6    r    60
7    s    70
7    t    70
7    u    70
  • 最终格式需要在Excel文件中
  • 这类任务的最佳方法是什么?Excel/VBA?进入
  • 我不必将列名设置为最终格式(如果这增加了太多的复杂性,我可以自己添加这些列名)
由于我不是VBA专家,所以我尝试使用互联网上的VBA,所以在我进一步尝试更彻底地学习VBA之前,我想我会看看最推荐的技术是什么,以及是否有人有一个简单的解决方案可以工作


谢谢您的帮助。

我的第一个想法是访问,但如果这就是您所做的全部,您可以留在Excel中


这甚至可以在没有VBA的情况下完成——只需使用MATCH()的Excel公式(对于团队名称,返回Excel行)和INDEX()(给它MATCH()结果,它将返回NAME1、2或3或Total)。

[SOLVED]一位朋友刚刚帮我编写了一个awk脚本来创建一个新的CSV文件,这非常简单。我将走这条路。

您可以在Excel中完成此操作。一个简单的循环可以满足您的需求。我很久以前也回答过一个类似的问题。。。我们必须搜索它。如果我能,那么我会发回