【问题标题】:Maths based on dynamic groups基于动态组的数学
【发布时间】:2021-05-23 13:13:14
【问题描述】:

我正在创建一个工作表,其中将使用条形码扫描仪输入 A 列中的数据,并且我希望工作表能够识别一组扫描的结束位置和下一组扫描的开始位置,这将是不同的行数。然后根据第一次扫描后的结果进行数学运算。例如,A1 是商品条码,A2 可能是数量代码 (+/-),A3 可能是另一个数量代码,也可能是下一个商品代码。所有商品条码都以相同的数字开头;我怎样才能得到工作表来识别新“组”项目的开始并仅基于该组进行数学运算?我已经包含了一个样本表 - 希望这是有道理的。更喜欢使用公式而不是 VBS 来执行此操作。

提前致谢!

https://docs.google.com/spreadsheets/d/1798XZ8csvQbQpAvoQGS1vJJ4gsWcYSLVXXwzhm22AmY/edit?usp=sharing

【问题讨论】:

    标签: google-sheets sum google-sheets-formula array-formulas google-query-language


    【解决方案1】:

    尝试:

    =ARRAYFORMULA(IFNA(VLOOKUP(IF(REGEXMATCH(A2:A, "^06767.+"), "×"&ROW(A2:A), ), 
     QUERY({VLOOKUP(ROW(A2:A), IF(REGEXMATCH(A2:A, "^06767.+"), {ROW(A2:A), 
     "×"&ROW(A2:A)}), 2, 1), IF(ISNUMBER(C2:C), C2:C*1, )*1}, 
     "select Col1,sum(Col2) 
      where Col2 is not null 
      group by Col1  
      label sum(Col2)''", 0), 2, 0)))
    

    【讨论】:

    • 魔术我告诉你,魔术......就像一个魅力。
    • 后续问题:如何让修饰符代码(例如 C4)出现在与 06767 行相同的行中?将有助于数据保持更有条理。
    • 试试:=ARRAYFORMULA(IFNA(VLOOKUP(IF(REGEXMATCH(A2:A, "^06767.+"), "×"&ROW(A2:A), ), QUERY({VLOOKUP(ROW(A2:A), IF(REGEXMATCH(A2:A, "^06767.+"), {ROW(A2:A), "×"&ROW(A2:A)}), 2, 1), IF(NOT(REGEXMATCH(A2:A, "\d+")), C2:C, )}, "select Col1,max(Col2) where Col2 is not null group by Col1 label max(Col2)''", 0), 2, 0)))
    猜你喜欢
    • 2020-05-18
    • 2017-05-04
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2020-08-03
    • 1970-01-01
    • 2013-04-01
    • 2013-10-09
    相关资源
    最近更新 更多