找到范围之间的值,填写下一个单元格

时间:2015-04-13 13:31:33

标签: vba excel-vba excel

我正在寻找一种方法来复制范围内的所有数据并将其粘贴到下一列。

A =文本数据

B =随机数,但总是从1开始

C =一些数据

D =我需要的解决方案

Example:
     A          B   C    D
    018404.00   1   20  20
    018404x0    2   0   20
    018404f1    2   0   20
    018404v1    3   0   20
    11000-0532  4   0   20
    1004-1101   5   0   20
    0720-0125   3   0   20
    0810-0001   3   0   20
    0710-0040   3   0   20
    052269.00   1   0   80
    052269v6    2   0   80
    11001-0000  3   0   80
    1001-1110   4   0   80
    0720-0500   2   0   80
    0810-0001   2   80  80
    0720-0002   2   0   80
    052275.00   1   0   160
    052275v2    2   160 160

当B列中的值为1时,在C列中找到值(在Range B:B中从1到1)将其复制到D

我用公式试过但这限制了深度。如果C列上的值远离1行,那么它就不起作用。

=IF(AND(B2=1;C2=0);IF(B3=1;0;IF(C3=0;IF(C4=0;C5;C4);C3));IF(C2>0;C2;I1))

所以我认为我需要一个vba解决方案。

1 个答案:

答案 0 :(得分:1)

我认为你需要这样的东西。 此代码搜索1和1值之间的最大值

Sub FindValBetweenOne()

Dim LastRow As Long
Dim FindVal As Long

LastRow = Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row

For I = 1 To LastRow
    If Cells(I, "B").Value = 1 Then 'find next "1"
        FindVal = Cells(I, "C").Value
        J = I + 1
        Do While (J <= LastRow And Cells(J, "B").Value <> 1)
            If Cells(J, "C").Value > FindVal Then
            FindVal = Cells(J, "C")
            End If
            J = J + 1
        Loop            
    End If
    Cells(I, "D").Value = FindVal
Next I

End Sub