看板 Office 關於我們 聯絡資訊
=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)