【问题标题】:Getting a meaningful report from data从数据中获取有意义的报告
【发布时间】:2017-04-17 10:34:53
【问题描述】:

我对 Google 表格还很陌生,并且对这些功能非常了解。我正在尝试创建一个表格来记录不同物品的买卖记录,然后生成一份报告,我可以在其中查看利润和剩余物品库存、平均买入/卖出价格等。这是指向sample sheet 的链接和我试过了。

请让我知道它是否可以实现,如果可以,我需要寻找什么,任何样本或链接以正确的方向学习以实现我想要获得的东西。附上屏幕截图以快速浏览。 我使用的查询:-

=QUERY(A2:F9,"select A,B,Sum(C),Sum(E) group by A,B Label Sum(C) '总数量',Sum(E) '总价格'")

谢谢。

PS。我之前也在 google 群组中发布过。如果我找到任何解决方案,我会将其链接回那里。

【问题讨论】:

  • 不要将公式添加为图像,而是将它们作为文本包含(通常格式化为代码有助于提高可读性)。看起来你需要使用数据透视表。
  • 谢谢@Rubén 我已经附上了样本表链接,也更新了文本查询。我也尝试过 pivot ,但无法按照我想要的方式完成,可能是我缺乏知识。
  • 您可以使用 INDEX 从查询中提取一行,具体取决于您在结果表中的哪一行。也许稍后再看。
  • 顺便说一句,实际利润是怎么计算的?
  • 谢谢@TomSharpe,这对开始有很多帮助,我会阅读并了解它是如何工作的(大多数功能都不熟悉)。实际利润计算是在 FIFO 模式下,即我会在卖出发生之前平均买入率并扣除卖出量,例如说项目 1 的平均买入率是 11,直到销售日期然后我会说 12(卖出率)- 11(平均买入率)=1(卖出的实际利润)。希望我说得通。

标签: google-sheets google-query-language


【解决方案1】:

我找不到一种简单而简洁的方法来实现您想要的布局,但是您可以使用索引根据包含这样的公式的行和列从查询中提取行和列(对于第一列)

=if(int(rows($1:3)/3)<=countunique($A$2:$A$9),choose(mod(rows($1:3),3)+1,index(QUERY($A$2:$F$9,"select A,B,Sum(C),Sum(E) group by A,B Label Sum(C) 'Total Quantity',Sum(E) 'Total Price'") ,int(rows($1:3)/3)*2,1),"","Total"),"")

然后它会确定它是报告中组的第一行、第二行还是第三行,并使用选择功能输入项目名称、空白单元格或单词“Total”。

第二列的工作方式相同

=if(int(rows($1:3)/3)<=countunique($A$2:$A$9),if(mod(rows($1:3),3)<2,index(QUERY($A$2:$F$9,"select A,B,Sum(C),Sum(E) group by A,B Label Sum(C) 'Total Quantity',Sum(E) 'Total Price'") ,int(rows($1:3)/3)*2+mod(rows($1:3),3),2),""),"")

第一个 Mod 函数用于确定查询中是否应该显示“b”或“s”,或者是空白,第二个 Mod 函数用于确定应该是“b”还是“s”查询的行。

第三列也类似

=if(int(rows($1:3)/3)<=countunique($A$2:$A$9),if(mod(rows($1:3),3)<2,index(QUERY($A$2:$F$9,"select A,B,Sum(C),Sum(E) group by A,B Label Sum(C) 'Total Quantity',Sum(E) 'Total Price'") ,int(rows($1:3)/3)*2+mod(rows($1:3),3),3),L11-L12),"")

第一个 Mod 函数用于计算它是否应该显示查询中的数量,或者前两行的差异,第二个 Mod 函数用于计算它应该是“b”还是“s”查询的行。

第四列与第二列几乎相同。

=if(int(rows($1:3)/3)<=countunique($A$2:$A$9),if(mod(rows($1:3),3)<2,index(QUERY($A$2:$F$9,"select A,B,Sum(C),Sum(E) group by A,B Label Sum(C) 'Total Quantity',Sum(E) 'Total Price'") ,int(rows($1:3)/3)*2+mod(rows($1:3),3),4),""),"")

(我不知道应该如何计算实际利润)。

【讨论】:

  • 这项工作是维护任何以不同价格购买商品的小商店的库存。这是一页的全部记录,然后查看有什么库存,什么是销售利润等作为报告。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 2021-03-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-02
  • 2015-09-17
相关资源
最近更新 更多