为同一数据集定义两个方向的查找函数
Lookup function to define two directions for same dataset
您好,我想根据以下数据创建一个数据透视表 table。在 Q 列 ("Ver 00") 中,我有 places/cities 缩写。我想确定两个方向有多少次旅行;从 "bast" 到 "drg" 然后从 "drg" 到 bast”。问题是所有的行程并不总是在 "bast" 开始并在 "drg" 结束并且相反。有时他们 fx 在 "nbst" 开始并在 "drg" 结束。我完全迷失在这里。但是我如何制作一个列来识别哪个方向是 "IN" 以及哪个方向"OUT" 如果我定义 "bast" => "drg" 为 "IN" 和 "drg" => "bast" 为 "OUT"?我在想vlookup 在这里可能会有用(定义两个方向),但我不知道这是否能解决问题。
该列应该类似于 AG 列。
我试过这个公式,但它不起作用:
=IF([@Batch]<>N3,IF([@Rank]<=7,IF(COUNT.IF(Inrng,[@[Ver 10]]),"In",IF([@Rank]>7,IF(COUNT.IF(Outrng,[@[Ver 10]]),"Out",)))),AR3)
嗯,如果你能确定 "bast" 或 "drg" 包含在每个批次(行程)中,那么你只需要确定给定行程中哪一个是第一个。
为此,我将使用匹配函数。这些将必须找到实际批次的 "bast" 和 "drg"。为此,我将连接 "Batch" 和 "Ver 00 " 列,并在其中进行搜索。
那我只需要比较位置,看看哪个是第一个。
见下文:
在单元格 D2 中使用此公式:
=IF(MATCH(A2&"bast",C:C,0)<MATCH(A2&"drg",C:C,0),"in","out")
这是否更接近您的需求? :)
添加了用于缺失 "bast" 或 "drg" 个案例的新方法:
试试这个:
=IFERROR(IF(MATCH([@Batch]&"bast",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"in","out"),IF(MATCH([@Batch]&"drg",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"out","in"))
请注意,我不是一次性完成的。我用了5个helper columns,先一步一步来。我推荐这种方法用于复杂的计算。
我在这里做什么:
使用匹配在批次中查找 "bast"。
MATCH([@Batch]&"bast",[Batch&Ver 00],0)
使用另一个匹配项查找实际批次的第一行:
MATCH([@Batch],[Batch],0)
如果这些值在同一行,那么它是一个 "in",否则它是一个 "out":
IF(MATCH([@Batch]&"bast",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"in","out")
现在,如果整个过程产生错误,则意味着无法找到 "bast"。在这种情况下,对 "drg" 执行相同的搜索。这就是 iferror 的作用:
IFERROR({...previous part...},IF(MATCH([@Batch]&"drg",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"out","in"))
作为参考,我这里是我正在使用的 table 的另一张图片,以便您了解列名:
您好,我想根据以下数据创建一个数据透视表 table。在 Q 列 ("Ver 00") 中,我有 places/cities 缩写。我想确定两个方向有多少次旅行;从 "bast" 到 "drg" 然后从 "drg" 到 bast”。问题是所有的行程并不总是在 "bast" 开始并在 "drg" 结束并且相反。有时他们 fx 在 "nbst" 开始并在 "drg" 结束。我完全迷失在这里。但是我如何制作一个列来识别哪个方向是 "IN" 以及哪个方向"OUT" 如果我定义 "bast" => "drg" 为 "IN" 和 "drg" => "bast" 为 "OUT"?我在想vlookup 在这里可能会有用(定义两个方向),但我不知道这是否能解决问题。
该列应该类似于 AG 列。
我试过这个公式,但它不起作用:
=IF([@Batch]<>N3,IF([@Rank]<=7,IF(COUNT.IF(Inrng,[@[Ver 10]]),"In",IF([@Rank]>7,IF(COUNT.IF(Outrng,[@[Ver 10]]),"Out",)))),AR3)
嗯,如果你能确定 "bast" 或 "drg" 包含在每个批次(行程)中,那么你只需要确定给定行程中哪一个是第一个。
为此,我将使用匹配函数。这些将必须找到实际批次的 "bast" 和 "drg"。为此,我将连接 "Batch" 和 "Ver 00 " 列,并在其中进行搜索。
那我只需要比较位置,看看哪个是第一个。
见下文:
在单元格 D2 中使用此公式:
=IF(MATCH(A2&"bast",C:C,0)<MATCH(A2&"drg",C:C,0),"in","out")
这是否更接近您的需求? :)
添加了用于缺失 "bast" 或 "drg" 个案例的新方法:
试试这个:
=IFERROR(IF(MATCH([@Batch]&"bast",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"in","out"),IF(MATCH([@Batch]&"drg",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"out","in"))
请注意,我不是一次性完成的。我用了5个helper columns,先一步一步来。我推荐这种方法用于复杂的计算。
我在这里做什么:
使用匹配在批次中查找 "bast"。
MATCH([@Batch]&"bast",[Batch&Ver 00],0)
使用另一个匹配项查找实际批次的第一行:
MATCH([@Batch],[Batch],0)
如果这些值在同一行,那么它是一个 "in",否则它是一个 "out":
IF(MATCH([@Batch]&"bast",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"in","out")
现在,如果整个过程产生错误,则意味着无法找到 "bast"。在这种情况下,对 "drg" 执行相同的搜索。这就是 iferror 的作用:
IFERROR({...previous part...},IF(MATCH([@Batch]&"drg",[Batch&Ver 00],0)-MATCH([@Batch],[Batch],0)=0,"out","in"))
作为参考,我这里是我正在使用的 table 的另一张图片,以便您了解列名: