PeterStrange
2019-09-26 21:41:05
我會將所有括號換哂做[ ] , 唔係成日有錯誤
包容下
好而家認真講
前面拆array果part個個都差唔多做法
應該大家都冇咩興趣睇
用呢條做例子
20/10, 21-24/11 , 30/12
拆完就變
{",,,20";"21-24";" , 30";#NUM!;...} 下略96個#NUM!;
如果正常咁做,我起碼要CALL多呢段FORMULA 5,6次
我個appaoch 想做到既係唔需要不斷重覆咁copy and paste
前面條array果段formula黎做
因為咁做真係會整到好亂
同埋好鳩流
所以我拆完個array之後,個方向就係直接用果一條array磨個答案出黎
{",,,20";"21-24";" , 30";#NUM!;...}
由於呢條式已經有21-24,如果可以令呢度兩個數自己相減就好
但係我要24變左25先,因為咁樣減出黎條數先岩
所以我要將21-24變做數字,再將佢+1
而最簡單就係將"-" SUB走佢
SUBSTITUTE[{",,,20";"21-24";" , 30";#NUM!;...} ,"-"}
return {",,,20";"2124";" , 30";#NUM!}
之後我想將佢+1, 但係唔可以就咁+1, 因為如果佢本身係0103咁樣
+1變數字會出 104, 而唔係0104
我想留住佢前面個0,所以我+10001, 咁前面個0就唔會冇左
不過做呢樣野之前,我要解決左#NUM!;先,因為",,,20" 加任何數都會出#VALUE!, 到時就同#NUM!; 分唔開
#NUM!; 係多左出黎既VALUE, 我要佢尾4個字係0000
由於我之後將會+10001
所以我將佢變做-1, 之後再全個ARRAY + 10001
IFERROR[{",,,20";"2124";" , 30";#NUM!},-1]+10001
return {#VALUE!;12125;#VALUE!;10000}
#VALUE!代表既係單日既日子
佢計出黎要係1
所以我俾個 10102佢 [ 2 -1 = 1] , 其實你俾幾多都得,減出黎係1就得
IFERROR[{#VALUE!;12125;#VALUE!;10000},10102]
return {10102;12125;10102;10000}
之後重點就黎...
所有野都準備好,只要將每個value第4,5個char 同 第 2,3個char相減就計完
首先我將佢拆左出黎,用mid,兩隻兩隻字咁拆
呢度要拆一個2d array, 係原有單向打直既array度,每個value再打橫拆多一層出黎 [留意, ; 號既分別]
MID[{10102;12125;10102;10000},{2,4},2]
return {"01","02";"21","25";"01","02";"00","00"}
上面每pair 既數, 前面要變負數, 後面要不變, 所以就x 個{-1,1} 落去
{"01","02";"21","25";"01","02";"00","00"}*{-1,1}
return {-1,2;-21,25;-1,2;0,0}
最後再sum埋佢,禮成