如图,图1是原始表格数据,第一行是日期。图2和图3是txt文本数据,第一行是日期的拆分和时间(两组00 数据)。请用表格2016的vba语言,写一个程序,能直接将图1原始数据拆分成多个如图2图3样的txt数据,并保存下面是一个可以直接在 Excel 2016 VBA 中运行的示例代码,它会按列(日期)将数据拆分成多个 .txt 文件,格式与你提供的示例一致:
vba:
Sub ExportToTxtFiles()
Dim ws As Worksheet
Dim lastRow AsLong, lastCol AsLong
Dim i AsLong, j AsLong
Dim fName AsString
Dim fNum AsInteger
Dim dateStr AsString
Dim dataLine AsString
' 设置工作表(假设数据在Sheet1)
Set ws = ThisWorkbook.Worksheets("Sheet1")
' 获取数据范围
lastRow = ws.Cells(ws.Rows.Count,"A").End(xlUp).Row
lastCol = ws.Cells(1, ws.Columns.Count).End(xlToLeft).Column
' 遍历每一列(从第2列开始,第1列是C01-C10)
For j =2To lastCol
' 从表头提取日期字符串,如 "2023/7/10"
dateStr =CStr(ws.Cells(1, j).Value)
' 格式化日期为 "YYYY MM DD 00 00" 格式
Dim y AsString, m AsString, d AsString
y = Format(CDate(dateStr),"yyyy")
m = Format(CDate(dateStr),"mm")
d = Format(CDate(dateStr),"dd")
dateLine = y &" "& m &" "& d &" 00 00"
' 生成文件名,如 "2023-7-10.txt"
fName = ThisWorkbook.Path &"\"& Replace(dateStr,"/","-")&".txt"
' 打开文件
fNum = FreeFile
Open fName For Output As#fNum
' 写入日期行
Print #fNum, dateLine
' 写入每一行数据(C01到C10)
For i =2To lastRow
dataLine = ws.Cells(i,"A").Value & vbTab & Format(ws.Cells(i, j).Value,"0.00000")
Print #fNum, dataLine
Next i
' 关闭文件
Close #fNum
Next j
MsgBox "所有文件已导出完成!", vbInformation
EndSub
使用说明:
- 将你的原始数据放在 Excel 的
Sheet1 中,确保: - 按
F5 运行宏,或在 Excel 中通过 “开发工具”→“宏” 执行 - 生成的
.txt 文件会保存在当前 Excel 文件所在的文件夹中
然后复制代码到EXCEL2016的宏编辑器内,运行测试。