Google 表格 - 使用 REGEXREPLACE/REGEXMATCH 函数导入范围

问题描述 投票:0回答:1

我有与书籍产品代码相关的虚拟数据:

XXX AAA BB 文档代码 测试类型
P01 01 BK-001-CR 1.内容质量测试
   - 校对
   - 事实核查
   - 最终编辑
2.设计和布局测试
P01 02 BK-002-CR 1.物理生产测试
2。分布测试
P02 哦哦 01 BK-001-CR 1.内容质量测试
   - 校对
   - 事实核查
   - 最终编辑
2.设计和布局测试
P03 01 BK-001-RT 1.内容质量测试
   - 校对
   - 事实核查
   - 最终编辑
2.设计和布局测试

此链接中列出。

我想将其清理为预期输出,如下所示:

产品代码 文档代码 测试类型
P01.BOO.01
P02.OOK.01
BK-001-CR 内容质量测试
   - 校对
   - 事实核查
   - 最终编辑
P01.BOO.01
P02.OOK.01
BK-001-CR 设计和布局测试
P01.BOO.02 BK-002-CR 物理生产测试
P01.BOO.02 BK-002-CR 分布测试
P03.KOO.01 BK-001-RT 内容质量测试
   - 校对
   - 事实核查
   - 最终编辑
P03.KOO.01 BK-001-RT 设计和布局测试

此链接中列出。

对于输出,我尝试使用产品代码列中的公式:

=ARRAYFORMULA( 
  TEXTJOIN(" "; TRUE; 
    FILTER(
      IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!B2:B5") & "." & 
      IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!C2:C5") & "." &
      IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!D2:D5"); 
      (REGEXMATCH(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!F2:F5"); I2) + 
      REGEXMATCH(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!B2:B5"); H2)) > 0
    )
  )
)

在文档代码栏中:

=QUERY(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!E2:F5"); "SELECT Col1 WHERE Col2 CONTAINS '" & I2 & "'")

在测试类型栏中:

=ARRAYFORMULA(
  UNIQUE(
    FILTER(
      TRIM(
        FLATTEN(
          SPLIT(
            REGEXREPLACE(
              IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!F2:F5"); 
              "\d+\."; 
              "~"
            ); 
            "~"
          )
        )
      ); 
      (TRIM(FLATTEN(SPLIT(REGEXREPLACE(IMPORTRANGE("https://docs.google.com/spreadsheets/d/1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ/edit?gid=0#gid=0"; "Test!F2:F5"); "\d+\."; "~"); "~"))) <> "")
    )
  )
)

但是仍然有错误,仍然与预期的输出不符。 enter image description here

还有其他公式吗?

google-sheets google-sheets-formula spreadsheet
1个回答
0
投票

以下是您可以相应调整的通用方法:

=let(Λ;importrange("1dIVsBszYwQnELHwu8C7BaamZnQTz2zogzKlrkq72IZQ";"B2:F7");Σ;lambda(x;choosecols(Λ;x));a;Σ(1);b;Σ(2);c;Σ(3);d;Σ(4);e;Σ(5);
 reduce(tocol(;1);unique(tocol(d;1));lambda(x;y;vstack(x;reduce(tocol(;1);sequence(max(index(ifna(--regexextract(split(xlookup(y;d;e);char(10));"^\d+")))));lambda(f;q;vstack(f;
 hstack(join(char(10);filter(a&"."&b&"."&c;d=y));y;regexextract(xlookup(y;d;e);"(?s).*"&q&". (.*?)(?:\n"&q+1&". |$)")))))))))

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.