【问题标题】:GoogleSheet : Crossing data from two tables谷歌表:交叉来自两个表的数据
【发布时间】:2021-01-09 01:09:25
【问题描述】:

使用 GoogleSheet,我有两个表格作为输入:

第一个表:

Name val1 val2 val3 val4
Joe X X X
Jess X X X
Mark X X

表示 Joe 有 val1 。 val3 。 val4, Jess 有 val1 。 val2 。 val4, Mark 有 val2 。 val4

第二张表就像一个矩阵:

   | val1  | val2 | val3  | val4 
val1          警告A  警告B
val2           errA
val3
val4

识别与某些文本关联的一些值:val1.val3:warn A, val1.val4:warn B, val2.val3:err A

因此,我想加入这两个表以提取这样的表:

姓名 |结果    
乔    警告 B (val1.val4),警告 A (val1.val3)
Jess   警告 A (val1.val4)
马克 

我需要使用 googlesheet 解决它,但我失败了,我有太多的转换步骤,最后我迷路了。

目前,我认为使用二进制或运算符可能会有所帮助。我是这样进行的:

#1 将第二个表 table2 转换为 base2 的新 dec 值:
| val1  | val2 | val3  | val4 
val1 10   9
val2          6
val3
val4

  1. 每个位对应于 Val[位位置]。例如:val1 => 1000,val2 => 0100
  2. (Val1, Val4) => BITOR(1000,0001) = 9

#2 第一个表table1的同种变换:

姓名 | val1(8) | val2(4) | val3(2) | val4(1)|
乔  8         2     1
杰西  8    4        1
标记      4        1

#3 从table2中提取相关值 =过滤器(转置(展平(table2)),转置(展平(table2))0) 我得到: 10 | 9 | 6(来自表2)

#4 我对 table1 中的行求和:

Name sum
Joe 11
Jess 13
Mark 5

#5 我在 terms1 11 | 的每个术语之间应用 BITAND 运算符 IF(BITAND(term2,term1)=term1,"Warn") 13 |5 和条款2 : 10 | 9 | 6

对于乔:

So as BITAND(11,10)=10 then i got a "Warn" for 1010 => (Val1,Val3)
So as BITAND(11,9)=9 then i got a "Warn" for 1001 => (Val1,Val4)
So as BITAND(11,6) not = 6 then nothing

但是我以一小组数据为例实现了这一点,并且关于列数和行数没有什么是动态的......我想是否有一种函数或查询可以很好地替换我糟糕的代码。

【问题讨论】:

  • 你能展示一下你到目前为止所做的尝试吗?请编辑您的问题以包含它。
  • 我相信期望输出的例子是错误的。请检查一下
  • 谢谢你们的cmets,我更新了。

标签: google-sheets google-sheets-formula


【解决方案1】:

尝试:

=ARRAYFORMULA({A2:A5, REGEXREPLACE(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(REGEXMATCH(TRIM(FLATTEN(QUERY(TRANSPOSE(
 IF(B2:E5="X", B1:E1, )),,9^9))), TRANSPOSE(QUERY(FLATTEN(
 IF(B12:E16="",,A12:A16&".*"&B11:E11)), 
 "where Col1 is not null"))), TRANSPOSE(QUERY(FLATTEN(
 IF(B12:E16="",,B12:E16&" ("&A12:A16&"."&B11:E11&"),")), 
 "where Col1 is not null")), )),,9^9))), ",$", )})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-09
    • 2022-10-15
    • 2014-04-19
    • 2013-04-20
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多