每100行数据创build一个文本文件

我们说:

  1. 我在Excel电子表格中有1000行独立的信息。 (1列1000行)

  2. 我想将每个100行保存为自己的文件名。 ( workbook1.txtworkbook2.txtworkbook3.txt等)

目前,我手动这样做:

  • 我将突出100行。
  • 我使用Control + C (复制),然后控制 + N (新build)创build一个新文件,然后控制 + V (粘贴),然后控制 + S保存文件,命名文件与默认名称分配使用Control + N ,所以它会被保存为workbook1workbook2workbook3

我将它们保存为文本文件(.txt)。

有可能自动化这个过程,也许是一个蝙蝠文件或东西?

您可以使用简单的VBA脚本,如:

 Dim counter As Integer counter = 0 Do While counter < 10 Range("A1:A100").Select Selection.Copy Sheets("Sheet2").Select ActiveSheet.Paste ActiveWorkbook.SaveAs Filename:="C:\test" & CStr(counter) & ".txt", _ FileFormat:=xlTextMSDOS, CreateBackup:=False Sheets("Sheet1").Select Range("A101:A1000").Select Selection.Cut Range("A1").Select ActiveSheet.Paste counter = counter + 1 Loop 

保存为xlTextMSDOS只保存活动工作表,因此您不必创build新的工作簿。

如果你有权访问Linux系统,有一个名为“split”的命令行实用程序就是这样做的:将一个文本文件分割成N个文件(行,字节,单词)。

猫original_file.csv | 拆分-1 1000

有时,将所有内容复制到新的工作表中并删除不想保留的内容就简单多了。 将Worksheet.Copy方法设置为无位置将打开一个带有单个工作表的新的空白工作簿; 这是原件的副本。

 Sub split_100() Dim i As Long, lr As Long, fn As String 'Application.ScreenUpdating = false 'uncomment when it works right for you With Worksheets("Sheet1") lr = .Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To lr Step 100 .Copy With ActiveWorkbook With .Worksheets(1) If i > 1 Then _ .Cells(1, 1).Resize(i - 1, 1).EntireRow.Delete .Cells(101, 1).Resize(lr, 1).EntireRow.Delete End With fn = Environ("TMP") & "\Workbook" & Format(Int(i / 100) + 1, "00") 'no extension; leave that for xlTextWindows 'Application.DisplayAlerts = False 'uncomment to avoid overwrite warnings .SaveAs Filename:=fn, FileFormat:=xlTextWindows .Close SaveChanges:=False End With Next i End With Application.ScreenUpdating = True End Sub 

删除不需要的内容后, Workbook.SaveAs方法将该循环带入Workbook.Close 。 有许多TXT格式可供select,上面使用了xlTextWindows xlFileFormat。