【问题标题】:Add missing row with Macro/Excel or Matlab使用 Macro/Excel 或 Matlab 添加缺失的行
【发布时间】:2019-10-23 04:31:11
【问题描述】:

我真的很难完成编写代码以填充测量文件中缺失数据的简单任务。我以前从未编码过,所以很难。


问题描述:

我上传了一张带有问题示例的图片。

源格式是一个包含两列的 .csv 文件,一个时间戳 (hh:mm:ss) 和每个时间戳的值。 我在 excel 中创建了行“时间值”,它将时间戳显示为数字。 (第 1 分钟 = 1/1440 到第 59 分钟 = 1439/1440)。 在 D 列中,我输入了两个时间步长之间的差异,对于 1 分钟的步长,该差异应该在 0.007 左右。

但是,问题是整个列的数据中缺少一些分钟,有时只有一分钟,有时甚至是多分钟。


所需代码

所以我需要一个 Matlab 代码,例如,它会检查时间戳或时间值并识别丢失的分钟并写入前一分钟的值。

例如。第 6 分钟不见了? --> 写第 6 分钟的行,并给它第 5 分钟的值。

我希望我的问题很清楚,否则我很乐意解释更多细节。

--

干杯

艾莉森 :)

PS:多个文件每个都有数十万条数据。这就是为什么我需要一个自动代码:)

图片:

【问题讨论】:

  • 你为什么说timestamp can't be read by Matlab? MATLAB 阅读它应该没有问题。
  • 嘿菲尔,我的意思是我不能用时间戳做数学运算来找到丢失的时间步。感谢您的帮助。 :)

标签: excel vba matlab


【解决方案1】:

我认为你可以做这样的事情:

Sub test()
lastrow = Worksheets("Inactive").Cells(Rows.Count, 1).End(xlUp).Row
For i = 3 To lastrow
If Format(TimeValue(CDate(Cells(i, 1).Value)) - TimeValue(CDate(Cells(i - 1, 1).Value)), "hh:mm:ss") > "00:01:00" Then
Rows(i).Insert
Cells(i, 1).Value = Format(TimeValue(CDate(Cells(i - 1, 1).Value) + "00:01:00"), "hh:mm:ss")
Cells(i, 2).Value = Cells(i - 1, 2).Value
End If
Next
End Sub

之前

之后输出

【讨论】:

  • 非常感谢,我会用这个宏试试看结果如何。 :)
  • @Alison2622 不客气,即使它有效,也不要犹豫给我反馈
  • 再次非常感谢您!这对我帮助很大
  • @Alison2622 你能接受这个答案吗?
猜你喜欢
  • 1970-01-01
  • 2013-05-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-06-19
  • 2013-08-02
  • 2015-09-08
相关资源
最近更新 更多