当前位置:编程学习 > VB >>

Excel用VBA 处理数据 取第一列名字相同的行以TXT格式存放

Excel用VBA 处理数据 第一列名字相同的行以TXT格式存放,
aa 25 65
aa 55 36
bb 14 11
cc 26 87
dd 14 58
dd 44 52
dd 44 35
其中第一列名字相同的行数不一定,现在需要把名字不同的提取出来保存为文本格式,这里把1,2行;第3行;第4行;第5.6.7行,把这保存四个文件,名字以第一列名字 --------------------编程问答-------------------- Sub test()
    Dim i As Integer
    Dim j As Integer
    Dim k As Integer
    Dim sFile As Object
    Dim FSO As Object
    
    k = 1
    For i = 1 To Range("A1").SpecialCells(xlCellTypeLastCell).Row
         If Range("A" & i) <> Range("A" & i + 1) Then
             Set FSO = CreateObject("Scripting.FileSystemObject")
             Set sFile = FSO.CreateTextFile("D:\rfb\" & Range("A" & i) & ".txt", True)
             For j = k To i
                  sFile.WriteLine (Range("A" & j) & " " & Range("B" & j) & " " & Range("C" & j))
             Next 'j
             sFile.Close
             Set sFile = Nothing
             Set FSO = Nothing
             k = i + 1
         End If
    Next 'I
End Sub --------------------编程问答-------------------- 你的原始表格中,“名字相同的”是否都连续地放在一起的?

如果是连续放一起的,那处理起来很容易。
如果混杂存放的,那要稍微麻烦点儿。
但都比较好解决。

但楼主还有些问题没说清楚:
后面的数据有多少列,是固定的还是不确定的?
是否只需要从B列开始的数据?
列与列之间的数据,要不要分隔?用什么字符分隔?
输出文本时,是否每行对应一行?还是不换行连续输出?
--------------------编程问答-------------------- --------------------编程问答-------------------- --------------------编程问答-------------------- Sub test()
Dim arr, k, itm,dic
arr = [a1].CurrentRegion
Set dic = CreateObject("scripting.dictionary")
For k = 1 To UBound(arr)
    If Not dic.exists(arr(k, 1)) Then
       dic(arr(k, 1)) = Join(Application.Index(arr, k))
    Else
       dic(arr(k, 1)) = dic(arr(k, 1)) & vbCrLf & Join(Application.Index(arr, k))
    End If
Next
For Each itm In dic.keys
    Open ThisWorkbook.Path & "\" & itm & ".txt" For Output As #1
    Print #1, dic(itm): Reset
Next
Stop

End Sub
补充:VB ,  VBA
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,