excel 公式根据索引匹配公式的相邻单元格更改索引匹配公式的输出?

p3rjfoxz  于 2023-11-20  发布在  其他
关注(0)|答案(2)|浏览(163)

我从一个电子表格中获取原始数据,并将其移动到另一个报表中。原始数据看起来像这样:
| 网站|参数|值|限定符|
| --|--|--|--|
| 一|氯|14 mg/L| U|
| B|氯|19毫克/升|J|
| 一|pH| 6.8||
| B| pH| 7.1||
我现在做的表看起来像这样:
| 参数|站点a|部位B|
| --|--|--|
| 氯(mg/L)| 14 | 19 |
| pH| 6.8| 7.1|
我使用以下函数来实现:
=索引(数据!$C$2:$C$100,MATCH(1,(B$1=数据!$A$2:$A$100)*($A2=数据!$B$2:$B$100),0))
所以我在原始数据中搜索参数和位置的具体值,它会产生两者都为真的值。
我的问题是,现在我想再次遍历并找到原始数据中限定符为U的每个值(这意味着未检测,因此给定的值本质上是猜测),并将其更改为最终表格中的单元格为空。因此,我希望最终表格看起来像这样,因为在我的示例原始数据中,站点a的氯值有一个U限定符:
| 参数|站点a|部位B|
| --|--|--|
| 氯(mg/L)|--| 19 |
| pH| 6.8| 7.1|
我现在唯一能想到的方法就是在一个很大的嵌套函数中使用IF和XLOOKUP重复我已经有很多次的公式。我想尽可能避免这种情况,因为这会让错误更难被发现。我想知道我是否可以使用“OR”函数来实现这一点,但我不知道如何在Excel语法中调用相邻单元格,如果可能的话,我不想返回限定符列中的内容,所以我也不能使用OFFSET。

t40tm48m

t40tm48m1#

也许这对使用XLOOKUP()的您有用
x1c 0d1x的数据
·单元格G2中使用的公式

=XLOOKUP(
    1,
    (
        TEXTBEFORE(
            $F2,
            "(",
            ,
            ,
            ,
            $F2
        ) = $B$2:$B$5
    ) *
        (
            TEXTAFTER(
                G$1,
                " "
            ) = $A$2:$A$5
        ) * ($D$2:$D$5 <> "U"),
    $C$2:$C$5,
    "--"
)

字符串
公式需要填写下来,填写正确!
如果你想返回一个数组,那么你可以尝试这样做:

=MAKEARRAY(ROWS(F2:F3),COLUMNS(G1:H1),LAMBDA(α,φ,
 XLOOKUP(1,(TEXTBEFORE(INDEX(F2:F3,α),"(",,,,INDEX(F2:F3,α))=B2:B5)*
 (TEXTAFTER(INDEX(G1:H1,φ)," ")=A2:A5)*(D2:D5<>"U"),C2:C5,"--")))

sqxo8psd

sqxo8psd2#

整理你的标签(我认为它们必须比你发布的表格中的更整洁,因为你的工作公式没有做任何“解析”,例如 mg/L),你可以使用一个单一的FILTER()函数:x1c 0d1x
C9中的公式(向下和横向复制)为

=FILTER($C$2:$C$5,($B$2:$B$5=$B9)*($A$2:$A$5=C$8)*($D$2:$D$5<>"U"),"--")

字符串

相关问题