我知道一点VBA,但我一直在寻找更聪明的方式(人们的工作方式!!)。
这是我想要做的。我必须处理一些
的数据年|月|一天|小时|分钟| Data1 |数据2 .... | DataN
每个都在一个单独的列中,并且有数千行。 “数据”列的数量由用户在运行时定义(至少1和最大100)。数据可以具有任何时间步长,例如每分钟,5分钟,10分钟,每小时,每天等等。然后,用户指定输出数据间隔,该间隔将始终大于输入数据间隔。
因此,该宏应该在用户指定的间隔内写入数据。必须将输出时间步骤之间的每列中的数据添加到其他位置。请参阅以下两个表格:
输入:
Yr Mth Day Hr Min Data_1 Data_2
2010 2 7 8 0 1.01 2.01
2010 2 7 8 5 1.02 2.02
2010 2 7 8 10 1.03 2.03
2010 2 7 8 15 1.04 2.04
2010 2 7 8 20 1.05 2.05
2010 2 7 8 25 1.06 2.06
2010 2 7 8 30 1.07 2.07
2010 2 7 8 35 1.08 2.08
2010 2 7 8 40 1.09 2.09
2010 2 7 8 45 1.10 2.10
2010 2 7 8 50 1.11 2.11
2010 2 7 8 55 1.12 2.12
2010 2 7 9 0 1.13 2.13
2010 2 7 9 5 1.14 2.14
输出:
Yr Mth Day Hr Min Data_1 Data_2
2010 2 7 8 0 1.01 2.01
2010 2 7 8 15 3.09 6.09
2010 2 7 8 30 3.18 6.18
2010 2 7 8 45 3.27 6.27
2010 2 7 9 0 3.36 6.36
因此,输入数据每5分钟一次,输出数据必须每15分钟一次。连续15分钟间隔之间的每行数据必须加在一起。
我有这个东西工作,因为我使用两个循环水平和垂直遍历并在每一步将值写入电子表格。但它真的很慢。
非常感谢任何加快此过程的帮助。
提前致谢
-MP
* * 代码我一直用来将处理过的数据写入文本文件:
Open FName For Output Access Write As #FNum
For RowNdx = StartRow To endrow
done = Int((RowNdx / endrow) * 100)
Application.StatusBar = "Exporting *.gag file... (" & done & " % done )"
WholeLine = ""
For colNdx = StartCol To Endcol
If Sheets("Output").Cells(RowNdx, colNdx).Text = "" Then
CellValue = ""
Else
CellValue = Sheets("Output").Cells(RowNdx, colNdx).Text
End If
WholeLine = WholeLine & CellValue & sep
Next colNdx
WholeLine = Left(WholeLine, Len(WholeLine) - Len(sep))
Print #FNum, WholeLine
Next RowNdx
Close #FNum
有没有办法一次将范围写入文本文件。我试图避免循环。
感谢您的帮助
MPD
答案 0 :(得分:0)
您是否尝试过设置
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
在你的循环之前?
请记住设置
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic
循环完成后。
您也可以将所有数据保存到循环中的数组中,然后将整个数组作为范围写入输出电子表格,而不是逐个单元格地写入值,这就像你看来的那样现在做