【问题标题】:Select adjacent data based on values in cells根据单元格中的值选择相邻数据
【发布时间】:2015-02-05 21:27:30
【问题描述】:

我有一个巨大的 Excel 文件,其中包含一个时间列和一个数据列。在两个新列中,我想根据时间列的值在新的一秒开始时提取时间和相应的数据(同一行)。每秒的行数不一致,所以不能使用线性偏移。时间(A)和数据(B)列的格式如下:

时间数据
163010.3838 0.009332522
163010.8468 0.009332853
163011.3099 0.009332936
163011.7749 0.00933318
163012.2399 0.009334042
163012.7049 0.00933733
163013.168 0.009335146
163013.633 0.009332692
163014.098 0.009335718
163014.5631 0.009334616
163015.0271 0.009334818
163015.4921 0.009336317
163015.9571 0.009335719

时间的格式是 hhmmss.decimal 值。在相邻的列(比如 C 和 D)中,每当到达新的一秒时,我想提取每行的时间和数据值。所以它看起来像:

时间数据
163010 0.009332522
163011 0.009332936
163012 0.009334042

等等。

【问题讨论】:

    标签: excel if-statement integer excel-formula worksheet-function


    【解决方案1】:

    假设Time在A1,请在C2试试:

    =INT(A2)
    

    在 D2 中:

    =B2  
    

    在 D3 中:

    =IF(INT(A3)>INT(A2),B3,"")  
    

    上面的第一个和最后一个都复制下来以适应。

    【讨论】:

    • 对不起,我不认为我最初显示了问题的全部范围。请查看更新的数据集
    【解决方案2】:

    假设数据设置和期望的结果如下所示:

    在单元格 D2 中并向下复制以下公式:

    =IFERROR(INDEX(INT($A$2:$A$14),MATCH(0,INDEX(COUNTIF(D$1:D1,INT($A$2:$A$14)),),0)),"")
    

    在单元格 E2 中并复制下来是这个公式:

    =IF(D2="","",INDEX($B$2:$B$14,MATCH(D2,INDEX(INT($A$2:$A$14),),0)))
    

    【讨论】:

    • 这适用于小型数据集,但对于包含数千行的数据集,执行该公式多次所需的处理时间似乎并不可行。 ://
    • 可以使用类似于 pnuts 建议的解决方案。或者,如果您不反对 VBA,则可以通过记录宏并执行这些步骤,然后清理记录的代码来开发可行且有效的解决方案。
    • 将使用 pnuts',因为我不必重复太多次。感谢您的帮助!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-11
    • 1970-01-01
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多