2015-02-05 106 views
0

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

Time  Data 
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)中,每当到达新的秒数时,我都希望获取每行的时间和数据值。所以它看起来像:

Time Data 
163010 0.009332522 
163011 0.009332936  
163012 0.009334042

等等。

回答

0

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

=INT(A2) 

在D2:

=B2 

和D3:

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

第一和持续上述复制下来以适应。

+0

对不起,我不认为我展示了p的全部范围最初的恐惧。请参阅更新后的数据集 – Hyung 2015-02-05 21:43:28

0

假设一个数据建立和期望的结果,看起来像这样:

tigeravatar example for Hyung

在单元格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))) 
+0

这适用于小型数据集,但对于数千行来说,执行该公式所需的处理时间很多次似乎不可行。 :/ – Hyung 2015-02-05 22:10:54

+0

可以使用类似于pnuts的建议的解决方案。或者,如果您不反对VBA,可以通过录制宏并执行这些步骤来开发可行且高效的解决方案,然后清理记录的代码。 – tigeravatar 2015-02-05 22:15:07

+0

将使用pnuts,因为我不必多次重复。谢谢您的帮助! – Hyung 2015-02-05 22:24:12

相关问题