如何根据某种完成键根据其他列值设置值?

How do I set value depending on other columns value, according to some kind of completion key?

我正在使用 Google 表格来大致了解我的银行交易。 我想将每笔交易都归入一个类别,例如杂货、交通…… 我使用这个简短的脚本解决了这个问题:

=IFS(REGEXMATCH(A1;$K); $L;REGEXMATCH(A1;$K);$L;REGEXMATCH(A1;$K);$L;true;"other")

A列是我要查看的,所有交易,K是我要查看的店铺名称,例如“shopname1”,L是我要交易的类别对于这家店。 现在,这工作得很好,但是这个商店和类别列表现在只有 3 行长,因为我正在测试它,但是因为我将使用它,它会很长,这意味着我的 IFS 语句也会很长。这不是非常模块化的 eighter,以备将来更改,所以我想做得更好。 我想知道一种方法,例如让它检查几个列表,每个列表一个。

我希望这是有道理的,并且有人有想法!

您可以试试这个(在 B2 中):

=ARRAYFORMULA(
  IF(
    A:A = "";;
      VLOOKUP(
        ROW(A:A);
        {
          FILTER(ROW(A:A); A:A <> "")\
          REGEXREPLACE(
            TRIM(
              TRANSPOSE(QUERY(
                IF(
                  NOT(REGEXMATCH(
                    TRANSPOSE(FILTER(A:A; A:A <> ""));
                    "(?i)" & FILTER(K2:K; K2:K <> "")
                  ));;
                    FILTER(L2:L; K2:K <> "") & ", "
                );;
                COUNTA(K2:K)
              )) & "other"
            );
            ", other$";
          )
        };
        2;
      )
  )
)

如果没有匹配,它会设置other,否则它会设置所有匹配的类别,用, 分隔。