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