|
本帖最后由 sure 于 2015-1-13 15:10 编辑
各位老师,我这有几组数据,要做如下操作:
1、在sheet1里面有10组数据值,第一行是数据编号1~10,共300行,首先要做的是在每组编号对应列的数据里面查找第一个满足i行的值>=50,i+1行的值<50且i>=13的行数 i 的值;
2、在找到这个 i 值之后,在sheet2里面找到对应编号所在列的第 i 行,m=(sheet2.cells(i,列号)+sheet2.cells(i+1,列号))/2,然后再把m值输出到sheet2.cells(303,列号);
3、sheet3就是sheet2的每组数据的每行减去对应列所在的303行的m值;
4、如果没有满足i>=50,i+1<50且i>=13的行数 i 的值,那么就让此行的m值等于前一列数据的m值,譬如编号为3的数据就没有符合条件的 i 值,那么在sheet2里面.cells(303,3)=.cells(303.2), sheet3里第3列就用sheet2的第3列减去这个m值。
附件里的sheet3的第一列数据是个样本,可以参照一下,了解我的程序的运算过程,谢谢!
- Sub tt()
- arr = Sheet1.[a1].CurrentRegion
- brr = Sheet2.[a1].CurrentRegion
- For j = 1 To UBound(arr, 2)
- Debug.Print j
- For i = 2 To UBound(arr) - 1
- If arr(i, j) >= 50 And arr(i + 1, j) < 50 And i >= 13 Then Exit For
- Next
- If i < UBound(arr) Then m = (brr(i, j) + brr(i + 1, j)) / 2
- For i = 2 To UBound(brr)
- brr(i, j) = brr(i, j) - m
- Next
- Next
- Sheet3.[a1].Resize(UBound(brr), UBound(brr, 2)) = brr
- End Sub
复制代码
|
|