我有多个具有以下示例格式的文件,我们需要为“ abc”提取5列,然后将其复制到另一张工作表中,然后以“ .txt”格式保存为“ abc.txt”(基于_之后的值)。我们需要同时复制Set1及其下面的任何其他集合。挑战是要为所有数据复制5列,即abc,def,ghi等。循环将一直运行,直到列中没有数据为止。
我们坚持这一点。请帮忙。
Set 1
日期0_abc 5_abc 10_abc 15_abc 20_abc 0_def 5_def 10_def 15_def 20_def
2018年1月1日36995485 61 24526982982487404491
2018年1月2日662881379778778853328430996776508
2018/1/3 689 672 479 908 815 235 611 996 685 771
Set 2
日期0_abc 5_abc 10_abc 15_abc 20_abc 0_def 5_def 10_def 15_def 20_def
2018年1月1日838815631336477477164511682550197
2018年1月2日19534445464537516516425904971676
____________
输出文件如下:
abc.txt
设置1
日期0_abc 5_abc 10_abc 15_abc 20_abc
1/1/2018 369 954 85 61 24
2018年1月2日662 881 379 778 853
2018/1/3 689672479908815
Set 2
日期0_abc 5_abc 10_abc 15_abc 20_abc
1/1/2018 838815631336336477
2018年1月2日19534445464564537
----------
def.txt
设置1
日期0_def 5_def 10_def 15_def 20_def
1/1/2018 526982487404491
2018年1月2日328430430996776508
2018/1/3/235 611996996685771
Set 2
日期0_def 5_def 10_def 15_def 20_def
2018年1月1日164511682550197
2018年1月2日516425904904971676
____________
____________
代码示例
Sub Final6()
Columns("A:A").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("A1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("B:F").Select
Selection.Copy
ActiveWorkbook.Worksheets(2).Activate
Range("B1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("G:K").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("B1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("A:A").Select
Selection.Copy
ActiveWorkbook.Worksheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("L:P").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("B1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("A:A").Select
Selection.Copy
ActiveWorkbook.Worksheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("Q:U").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("B1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("A:A").Select
Selection.Copy
ActiveWorkbook.Worksheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("V:Z").Select
Selection.Copy
Sheets.Add After:=ActiveSheet
Range("B1").Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets(1).Activate
Columns("A:A").Select
Selection.Copy
ActiveWorkbook.Worksheets(2).Activate
Range("A1").Select
ActiveSheet.Paste
End Sub
答案 0 :(得分:0)
您必须证明您已经解决了问题,而不是要求我们完成这项工作。因此,我将为您提供链接和方法来解决您的问题。对此进行研究将有助于您了解有关vba的更多信息。
然后,您必须选择数据(5列)并将其复制到另一张表(here is some explanation on ranges)中:
将范围1设为范围,将范围2设为范围
设置range1 = your_First_Sheet.Range(Cells(firstrow,firstcolumn),Cells(lastrow,lastcolumn))
设置范围2 = your_Second_Sheet.Range(Cells(firstrow,firstcolumn),Cells(lastrow,lastcolumn))
range1.copy range2
我还没有完成所有工作,但这会为您提供帮助。但是,我给您提供了这一功能,可让您将数据保存在一个文本文件中(因为这可能很棘手):
Dim filename As String, lineText As String, chemin As String
Dim I As Integer, J As Integer
Dim folder As FileDialog
Dim data as Range
Set data = your_sheet_you_want_in_your_file.Range(Cells(firstrow, firstcol),Cells(lastrow,lastcol))
Set folder = Application.FileDialog(msoFileDialogFolderPicker) 'this is to ask the user where he wants to save the txt file
folder.Show
path = folder.SelectedItems(1)
filename = path & "\" & Name_of_your_file & ".txt"
Open filename For Output As #1
For I = 1 To data.Rows.count
For J = 1 To data.Columns.count
lineText = Trim(IIf(J = 1, "", lineText & " ") & data.Cells(I, J))
Next J
Print #1, lineText
Next I
Close #1
MsgBox "Txt file created under :" & Chr(13) & Chr(10) & filename
但是我还没有对其进行测试,因此,当您在代码上做了更多工作后,请回来给我们