=ROUND(((SUMIF('AI395'!G:G,4112,'AI395'!I:I))+(SUMIF('AI395'!G:G,4122,
'AI395'!I:I)))/100000000,0)+ROUND(((SUMIF('AI395'!G:G,4132,'AI395'!I:I))
+(SUMIF('AI395'!G:G,4302,'AI395'!I:I)))/100000000,0)
上面這條式子太短(!) 換寫法省不了太多
=SUM(ROUND(IF({1,0},SUM(IF(ISNA(MATCH('AI395'!G:G,{4112,4122},)),,'AI395'!I:I)),
SUM(IF(ISNA(MATCH('AI395'!G:G,{4132,4302},)),,'AI395'!I:I)))/10^8,0))
此陣列公式應是2007版才能用
不知短一點的目的何在
讓編輯列不要太佔空間?--使用定義
最簡單全式定為z =z 最短
為方便測試 檔名去掉,I:I改為I1:I9(讓03版陣列公式不溢位)
原式為
=ROUND(((SUMIF(G1:G9,4112,I1:I9))+(SUMIF(G1:G9,4122,I1:I9)))/100000000,0)
+ROUND(((SUMIF(G1:G9,4132,I1:I9))+(SUMIF(G1:G9,4302,I1:I9)))/100000000,0)
法一
=ROUND((SUM(IF((G1:G9=4112)+(G1:G9=4122),I1:I9)))/10^8,0)
+ROUND((SUM(IF((G1:G9=4132)+(G1:G9=4302),I1:I9)))/10^8,0)
法二.1
=ROUND((SUM(IF(ISNA(MATCH(G1:G9,{4112,4122},)),,I1:I9)))/10^8,0)
+ROUND((SUM(IF(ISNA(MATCH(G1:G9,{4132,4302},)),,I1:I9)))/10^8,0)
法二.2
=SUM(ROUND(IF({1,0},SUM(IF(ISNA(MATCH(G1:G9,{4112,4122},)),,I1:I9)),
SUM(IF(ISNA(MATCH(G1:G9,{4132,4302},)),,I1:I9)))/10^8,0))
法一比原式短
法二適合數字很多時如(4112,4122,5112,5122,6112,6122)
或檔名特長時('AI395_Q1_B245001_Z')
法二.2適合各項要各自算很多東西時如 ROUNDDOWN(ROUNDUP(ROUND(數/10^8,0)/7,0)/6,0)
但原式數字不多(2個)
檔名不長(5位)
各項算式(1層)
所以換了半天看起來長度沒什麼變
而且更看不懂了= =""
用定義的話 就要知道哪項不變 哪項常要改
比如
{4112,4122}
{4132,4302}
常會變 那麼應該可用相對參照取代直接寫數字
然後真的就直接整個定為z 再=z即可
又如外層的計算會變 核心不變 定義核心
Y
=IF({1,0},SUM(IF(ISNA(MATCH($G$1:$G$9,{4112,4122},)),,$I$1:$I$9)),
SUM(IF(ISNA(MATCH($G$1:$G$9,{4132,4302},)),,$I$1:$I$9)))
整式變為
=SUM(ROUND(IF({1,0},SUM(INDEX(Y,0,1)),SUM(INDEX(Y,0,2)))/10^8,0))
之類
※ 引述《ljuber (給你吃膨餅)》之銘言:
: 軟體: excel
: 版本: 任何版本
: 有一行excel函數如下
: =ROUND(((SUMIF('AI395'!G:G,4112,'AI395'!I:I))+
: (SUMIF('AI395'!G:G,4122,'AI395'!I:I)))/100000000,0)
: +ROUND(((SUMIF('AI395'!G:G,4132,'AI395'!I:I))
: +(SUMIF('AI395'!G:G,4302,'AI395'!I:I)))/100000000,0)
: 想要問
: 能夠再修短一點嗎??
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.47.38.174
※ 編輯: JieJuen 來自: 218.164.51.101 (12/28 10:03)