将之前的重复数字返回到另一列之前

时间:2017-06-20 16:27:23

标签: excel excel-formula excel-2016

我正在尝试确定数据集中趋势分析的买入和卖出点。以下是数据样本:第一列是买入,第二列是卖出。

1 [0, 0]
2 [1, 0]
3 [0, 0]
4 [0, 0]
5 [1, 0]
6 [0, 0]
7 [0, 0]
8 [0, 1]
9 [0, 0]
10 [1, 0]

第二排表示购买,所以第五排不必说买,因为我想以最低价购买。我怎样才能将第5行设为0,0,因为我希望下一个1是第8行(卖出)。

感谢。

2 个答案:

答案 0 :(得分:0)

如果要“就地”更改数据,则需要VBA。如果要在两个新列中生成修改后的指标,例如C和D,请在C2和D2中使用以下 CSE公式(输入每个列并按Ctrl + Shift + Enter),然后填写C和D列:

C2:
=A2*IFERROR(MAX(ROW($A$1:$A1)*$A$1:$A1)<=MAX(ROW($A$1:$A1)*$B$1:$B1),1)
' Ctrl+Shift+Enter

D2:
=B2*IFERROR(MAX(ROW($A$1:$A1)*$A$1:$A1)>=MAX(ROW($A$1:$A1)*$B$1:$B1),1)
' Ctrl+Shift+Enter

enter image description here

答案 1 :(得分:0)

或者,VBA解决方案:

Sub analyzecells()
Dim i As Integer
Dim j As Integer

For i = 1 To 100
    If Not ActiveWorkbook.Sheets("Sheet1").Range("A" & i).Value = 0 And _
    ActiveWorkbook.Sheets("Sheet1").Range("B" & i).Value = 0 Then
        If ActiveWorkbook.Sheets("Sheet1").Range("A" & i).Value = 1 Then
            For j = i + 1 To 100
                If ActiveWorkbook.Sheets("Sheet1").Range("B" & j).Value <> 1 Then
                    ActiveWorkbook.Sheets("Sheet1").Range("A" & j).Value = 0
                    ActiveWorkbook.Sheets("Sheet1").Range("B" & j).Value = 0
                Else
                    Exit For
                End If
            Next j
        End If
    End If
Next i
End Sub