【问题标题】:Filtering with vba Excel使用 vba Excel 过滤
【发布时间】:2018-10-14 20:57:20
【问题描述】:

大家好,非常感谢您对以下问题的帮助:

我有一个包含硬件采集的 Excel 文件,其采样率取决于值(例如,在这种情况下,某些值在 100 毫秒处获取,而另一些值在 10 毫秒处获取)。所以我有时间值的第一列(每个单元格是 10 毫秒)和其他获取值的以下列。对应于 100ms 采集频率的每一列在填充单元格后显示 10 个空白单元格(而 10ms 的单元格已满)。现在我的问题是: 过滤所有值并创建一个新表的最佳方法是什么?只有值每 1 秒占用一次?
谢谢。 这是截图(简化)

文件图片

【问题讨论】:

  • 原始数据和预期结果的更直观表示会有所帮助!
  • 数据透视表和分组?
  • 您的时间值是标准 Excel 时间格式还是毫秒数?
  • 我添加了一张桌子的截图。我的时间价值只是从外部硬件获取的数字。让我现在清楚,谢谢!
  • 一个选项是创建一个辅助列,其具有可以对数据进行分类的公式=IF(ROUNDDOWN(A5,0) = A5,"DATASET","")。然后您可以轻松过滤“DATASET”

标签: vba excel filter


【解决方案1】:

我只会使用几个这样的循环

Option Explicit

Sub CopySeconds()
    Dim FirstRow, LastRow, inRow, inCol, outRow, outCol, colShift As Variant
    LastRow = Cells(Rows.Count, "A").End(xlUp).Row
    FirstRow = 4
    outRow = FirstRow
    colShift = 10
    For inRow = FirstRow To LastRow
    If Not IsEmpty(Cells(inRow, 1)) And Int(Cells(inRow, 1)) = Cells(inRow, 1) Then
        For inCol = 1 To 4
        outCol = inCol + colShift
        Cells(outRow, outCol) = Cells(inRow, inCol)
        Next inCol
        outRow = outRow + 1
    End If
    Next inRow

End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    • 2019-07-26
    • 1970-01-01
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多