[算表] google sheet 怎么免除拖曳?

楼主: schan003 (饭夜)   2019-04-08 11:31:46
软件: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,目前花了很多时间却研究不出一个可行的办法。
希望可以解决这个问题。
作者: soyoso (我是耀宗)   2019-04-08 13:38:00
问题1如果可以写在d2的话https://i.imgur.com/KS0BE8q.jpg问题2如果无合适的方式的话,script方面可看看onEdit触发事件和autofill或是range.copyto的部分
楼主: schan003 (饭夜)   2019-04-08 22:53:00
太感谢了,结果因为问题二,我决定开始研究宏了,似乎这还比较实际。

Links booklink

Contact Us: admin [ a t ] ucptt.com