作者schan003 (饭夜)
看板Office
标题[算表] google sheet 怎麽免除拖曳?
时间Mon Apr 8 11:31:46 2019
软体:google sheet
版本:google sheet
===「前言」===
最终目的是免除拖曳这个步骤。
资料经由「表单」输入到「试算表1」里面,为了避免误触试算表1的资料所以後续的计
算都是由「试算表2」处理。
以下皆为「试算表2」
栏首都有「文字标题」,除了标题外下面的资料都是数字。
栏位的顺序如下:
A,B,C,D
日期时间,第二资料栏,第三资料栏,运算
A,B,C栏皆为资料栏,诸如:
A1='Sheet1'!A1
A2='Sheet1'!A2
A3='Sheet1'!A3
而B,C两栏也是依照此模式向下拖曳从「sheet1」撷取资料。
而D栏的运算模式为:
D1=B1
D2=B2-C1
D3=B3-C2
D4=B4-C3
以此类推。
这样导致每天资料更新时都要手动向下拖曳资料,很麻烦。
===「问题一」===
最近发现有一个函式叫作arrayformula
可以在栏首写一遍之後就一劳永逸,未来就不用一直拖曳了。
例如:
A1=arrayformula('sheet1'!A:A)
B1=arrayformula('sheet1'!B:B)
C1=arrayformula('sheet1'!C:C)
但是到了D栏就无法那麽简单写
D1=arrayformula(B:B-C:C)
这样子的结果只会出现:
D1=B1-C1
D2=B2-C2
D3=B3-C3
D4=B4-C4
而非我期望的:
D1=B1-C0
D2=B2-C1
D3=B3-C2
D4=B4-C3
也就是说我希望能达成C栏跟B栏相差一列,两者再相减。
但问题很多:
1.不知道如何将arrayformula算式呈现在D1
2.在D1,计算B1-C0会出现错误(没有C0这个位址)
3.在D1以及D2,因为运算当中有属於「标题文字」的B1,C1,这也会跳错误。
已解决问题:
当无资料时相减显示0的解法。
当B999是空白而C998也是空白时,两者相减会显示0。
这可以用下面的方法解决:
D1=arrayformula (if(isblank(B:B),"",不知道怎麽写的函式))
让结果写成空白。
===问题二===
sheet2还有第二个大魔王
另一个栏位,就算是E栏好了。
E栏是以日为单位对B栏进行累加,但是每个月从头开始累加,以下举例:
A栏,B栏,E栏,「说明」
2019/01/30,8,16
2019/01/31,2,18,「16+2=18」
2019/02/01,20,20,「新的一月0+20=20」
2019/02/02,6,26,「20+6=26」
2019/02/03,9,35,「26+9=35」
.
.
.
2019/12/30,2,49
2019/12/31,5,54,「49+5=54」
2020/01/01,7,7,「新的一年0+7=7」
2020/01/02,1,8,「7+1=8」
A栏是按照时序排列的,因此在一般计算时很方便,以E6为例基本上就是:
E6=if(month(A6)=month(A5),E5+B6,0+B6)
接下来就是向下拖曳就好。
但是我也希望将他整合进arrayformula里面,这又是一堆问题了。
===总结===
我不强求一定要使用arrayformular来进行运算,最终目的是想要在填完表单之後可以马
上看到sheet2的结果,而非又要拖曳一次。
好像可以在google sheet上面录制巨集,让巨集自动在sheet1有由表单输入的一列新资
料时运作,自动将sheet2也向下拖曳一列。
但因为google sheet的巨集程式实在是没有经验,不知道该如何编辑,只好一直研究ar
rayformula,目前花了很多时间却研究不出一个可行的办法。
希望可以解决这个问题。
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 111.241.187.98
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Office/M.1554694308.A.1CC.html
1F:→ soyoso: 问题1如果可以写在d2的话 04/08 13:38
3F:→ soyoso: 问题2如果无合适的方式的话,script方面可看看onEdit触发 04/08 14:15
4F:→ soyoso: 事件和autofill 04/08 14:16
5F:→ soyoso: 或是range.copyto的部分 04/08 14:18
6F:→ schan003: 太感谢了,结果因为问题二,我决定开始研究巨集了,似 04/08 22:53
7F:→ schan003: 乎这还比较实际。 04/08 22:53