查找未排序数组之间的匹配项并检索找到的匹配项的相应值
Find Matches Between UnSorted Arrays AND Retrieve Corresponding Values for Matches Found
我有两个枢轴 table(称它们为 1 和 2),分别包含当前和前一天的期权数据。我 运行 使用从这些 table 中组合的数据进行了多次计算,在所有情况下,匹配键都是期权合约(行使价)价格。
我寻求解决的问题发生在期权行使价合约每天都不相同的情况下。例如,可以以以前不存在的新价格引入合同(或者相反——当不再向市场提供的合同每天都被删除时)。这两种情况都会导致 table 行数据之间的偏移量。
INDEX 和 MATCH 的使用似乎是一个可行的解决方案,其中当日行使价是匹配键。如果该键在两个 table 中都存在,则打印相应的当前和前一天值并将此输出用于比较公式。
我创建了一个包含简化测试数据的文件 here。 G-I 列包含 INDEX MATCH 语句,这些语句应该说明我需要在输出方面完成什么,并且我突出显示了受合同创建的行偏移量影响的行每天都不相同。
我尝试了几种解决方案;这不是我的驾驶室,需要一些帮助。谢谢
从逻辑上讲,使用最新数据是有意义的。
如果您的公式必须依赖于单个值进行某种比较。
您在 V 列中使用的公式是
=IF(OLD_STRIKE=NEW_STRIKE,OLD_STRIKE,FALSE)
我建议,如果您需要进行比较,最近的输入很可能是最正确的。所以你可以使用
=IF(OLD_STRIKE=NEW_STRIKE,OLD_STRIKE,NEW_STRIKE)
另一种选择是对两者进行平均,我不推荐这样做,因为如果一夜之间发生了剧烈变化,或者如果数据中存在某种异常值(如杂散 0),它可能会丢弃您的数据。但无论哪种方式都是这个选项。
=IF(OLD_STRIKE = NEW_STRIKE, OLD_STRIKE, AVERAGE(OLD_STRIKE, NEW_STRIKE))
使用puts作为你的主键,
您的问题是您使用行使价来决定购买,但是,购买是由看跌价值定义的。这是我观察到的数据样本。
https://docs.google.com/spreadsheets/d/17Lkib1tCFEw9upEIUmpubhWUVGbQ4RDXboGe9nR4Qdg/edit?usp=sharing
行使价和看跌价之间有 100% 的匹配。因此,如果您正在尝试比较某项购买,不妨看看看跌期权的价值。
所需的解决方案需要根据两个 table 之间的键匹配来打印值。
根据我使用的数据,table 行之间经常出现无法控制的偏移。出于这个原因(并且如原始 post 中所述),使用 INDEX MATCH、VLOOKUP 等在这种情况下不起作用,因为它们在相应的单元格中寻找匹配项。
我发现的解决方案涉及使用 SUPERSQL,一对可以使用 SQL 的应用程序脚本(即 SELECT 和 JOIN 语句)。
我用 this 视频来了解 SUPERSQL 用法;如果有人遇到与我类似的需求,它的描述包括 link 到安装视频。
我有两个枢轴 table(称它们为 1 和 2),分别包含当前和前一天的期权数据。我 运行 使用从这些 table 中组合的数据进行了多次计算,在所有情况下,匹配键都是期权合约(行使价)价格。
我寻求解决的问题发生在期权行使价合约每天都不相同的情况下。例如,可以以以前不存在的新价格引入合同(或者相反——当不再向市场提供的合同每天都被删除时)。这两种情况都会导致 table 行数据之间的偏移量。
INDEX 和 MATCH 的使用似乎是一个可行的解决方案,其中当日行使价是匹配键。如果该键在两个 table 中都存在,则打印相应的当前和前一天值并将此输出用于比较公式。
我创建了一个包含简化测试数据的文件 here。 G-I 列包含 INDEX MATCH 语句,这些语句应该说明我需要在输出方面完成什么,并且我突出显示了受合同创建的行偏移量影响的行每天都不相同。
我尝试了几种解决方案;这不是我的驾驶室,需要一些帮助。谢谢
从逻辑上讲,使用最新数据是有意义的。
如果您的公式必须依赖于单个值进行某种比较。
您在 V 列中使用的公式是
=IF(OLD_STRIKE=NEW_STRIKE,OLD_STRIKE,FALSE)
我建议,如果您需要进行比较,最近的输入很可能是最正确的。所以你可以使用
=IF(OLD_STRIKE=NEW_STRIKE,OLD_STRIKE,NEW_STRIKE)
另一种选择是对两者进行平均,我不推荐这样做,因为如果一夜之间发生了剧烈变化,或者如果数据中存在某种异常值(如杂散 0),它可能会丢弃您的数据。但无论哪种方式都是这个选项。
=IF(OLD_STRIKE = NEW_STRIKE, OLD_STRIKE, AVERAGE(OLD_STRIKE, NEW_STRIKE))
使用puts作为你的主键,
您的问题是您使用行使价来决定购买,但是,购买是由看跌价值定义的。这是我观察到的数据样本。
https://docs.google.com/spreadsheets/d/17Lkib1tCFEw9upEIUmpubhWUVGbQ4RDXboGe9nR4Qdg/edit?usp=sharing
行使价和看跌价之间有 100% 的匹配。因此,如果您正在尝试比较某项购买,不妨看看看跌期权的价值。
所需的解决方案需要根据两个 table 之间的键匹配来打印值。
根据我使用的数据,table 行之间经常出现无法控制的偏移。出于这个原因(并且如原始 post 中所述),使用 INDEX MATCH、VLOOKUP 等在这种情况下不起作用,因为它们在相应的单元格中寻找匹配项。
我发现的解决方案涉及使用 SUPERSQL,一对可以使用 SQL 的应用程序脚本(即 SELECT 和 JOIN 语句)。
我用 this 视频来了解 SUPERSQL 用法;如果有人遇到与我类似的需求,它的描述包括 link 到安装视频。