Excel VBA表格操作:基于第一列转置列

ws51t4hk  于 2022-12-05  发布在  其他
关注(0)|答案(2)|浏览(131)

我要组织从多个文本文件汇入所产生的数据表。将多个文本文件汇入Excel会建立类似下列数据集的数据表。数据表的文字档名称位于数据行A,值位于数据行B。
1.组数约为400
1.“ID”数始终为160
1.使用公式是很好的,但我认为这是不可能的
下面是我的数据集,它只有两列,但需要进行转置,这样每一个不同的列1条目就有一行,这样就有了多列:

|Group|Value|
|-----|-----|
|A.txt| 1a  |
|A.txt| 2a  |
|A.txt| 3a  |
|B.txt| 1b  |
|B.txt| 2b  |
|B.txt| 3b  |
|C.txt| 1c  |
|C.txt| 2c  |
|C.txt| 3c  |

这就是我们想要的结果!

|Group|ID1|ID2|ID3|
|:----|:-:|:-:|--:|
|A.txt|1a |2a |3a |
|B.txt|1b |2b |3b |
|C.txt|1c |2c |3c |

每个条目的ID数相同。
很多年前我就在Excel中使用VBA了,但自从2015年以来我就没有使用过!需要一些帮助。

vddsk6oq

vddsk6oq1#

我知道你要求一个Excel/VBA解决方案,但我会给予你一个非常简单的谷歌工作表之一。你可以很容易地打开你的Excel在谷歌工作表和工作。你甚至可以得到的想法和港口到Excel然后。只是把在相同的地方,并写在指定的单元格公式,或调整公式...

我也在这里粘贴代码:

D2: =UNIQUE(A2:A)
E1: = ARRAYFORMULA("ID" & TEXT(SEQUENCE(1,COUNTA(E2:2),1,1),"00"))
E2: =TRANSPOSE( filter($B$2:$B,$A$2:$A=$D2))
e3... drag down from E2
guykilcj

guykilcj2#

这是我想出的解决方案。我花了一年的时间才有3个小时来完成这个项目。在不久的将来,我可能会将此方法扩展到排序和使用VLOOKUP(),但这个练习是我需要记住如何使用VBA的起点。
这是需要创建按钮的初稿,但将让VBA从文件夹中加载每个txt文件,并创建初始设置,然后针对该设置运行下面的宏。

Dim i As Integer
Dim j As Integer
Dim k As Integer
Dim group As Integer
Dim str1 As String
Private Sub CommandButton1_Click()
    str1 = ""
    group = 0
    j = 0
    k = 1
    For i = 1 To 10
        If str1 = Cells(i, 1).Value Then
            k = k + 1
            Cells(group, 4 + k).Value = Cells(i, 2).Value
        Else
            str1 = Cells(i, 1).Value
            If group = 0 Then
                Cells(1, 4).Value = Cells(i, 1).Value
                j = j + 1
            Else
                Cells(1, 4 + group).Value = CStr(group)
                Cells(group + 1, 4).Value = str1
                Cells(group + 1, 4 + j).Value = Cells(i, 2).Value
            End If
            group = group + 1
            k = 1
        End If
    Next i
End Sub

谨致

相关问题