gpt4 book ai didi

excel - 基于先前结果的条件结果

转载 作者:行者123 更新时间:2023-12-02 13:04:39 25 4
gpt4 key购买 nike

我有一个公式,可以得出买入、卖出或持有。公式如下所示:=IF(D3>0.01,"Buy",IF(D3<-0.01,"Sell","Hold"))

正如您所看到的,它是基于 D 列中的值,问题源于以下事实:“买入”或“卖出”结果可以连续多次发出,但正如您可以想象的那样,您无法购买某些东西你已经买了,你不能卖掉你已经卖掉的东西。

所以我希望公式做的是,如果结果是卖出,那么任何后续的卖出结果都会变为持有,直到出现买入结果,并且与买入相同,任何额外的买入结果都会更改为持有,直到出现卖出结果。即连续只有一次卖出或一次买入,并根据需要散布有尽可能多的持有结果。

希望这是清楚的,它很难用语言解释。不确定它是否有帮助,但这是一个屏幕截图。提前致谢。

Screen Shot - ignore the top line of n/a

最佳答案

您可以使用数组公式来查找 MAX ROW在 C 列为“买入”或“卖出”的当前行之前,然后比较它们。

SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Buy")))
//versus
SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Sell")))

(SUMPRODUCT 只是确保这部分代码被计算为数组公式。C$1 意味着当您向下拖动它时它会锁定到顶部)

将此作为您的 IF 的一部分,因为您只想在最近的操作相反时买入/卖出。 (即仅当 BuyRowSellRow 时才购买,反之亦然)

这意味着您的“购买时间”支票将变为 AND(D3>0.01, SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Buy")))<=SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Sell")))) ,所以完整的公式变为:

IF(AND(D3>0.01, SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Buy")))<=SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Sell")))), "Buy", IF(AND(D3<-0.01, SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Buy")))>=SUMPRODUCT(MAX(ROW(C$1:C2)*--(C$1:C2="Sell")))), "Sell", "Hold"))

( >=<= 很重要,因为对于第一个操作, BuyRowSellRow 都将是 0 。这确实意味着通过更改其中一个要排除=,您可以告诉它先执行哪个操作!)

关于excel - 基于先前结果的条件结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49226893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com