[英]Excel - Writing a Complex Formula
我在AI3:AJ41
范圍內有以下數字:
34 3
26 3
25 3
24 2
24 2
24 2
24 2
24 2
24 2
24 2
24 2
24 2
22 2
22 2
22 2
22 2
21 2
21 2
21 2
21 2
19 2
19 2
19 2
19 2
19 2
19 2
19 2
19 2
17 2
17 2
17 2
15 2
15 2
15 2
15 2
12 1
12 1
12 1
12 1
AI
列包含值,而AJ
列在單元格AJ3
中包含以下公式:
=ROUNDUP(AI3/12,0)
向下延伸到AI41
。
在單元格AJ2
中,我有以下求和公式
=SUM(AJ3:AJ41)
結果是 77。
我想在單元格AI2
中寫入一個公式,以獲得與我現在在AJ2
中得到的結果相同的結果,而無需使用(輔助)列AJ
,即僅使用AI
列的值。
也許它可以是一個 VB 宏,我不知道......
我提供了指向示例文件的鏈接,以便於復制/粘貼。 感謝您的時間和幫助。
11 月 27 日更新
我還在機場,決定在沒有 VBA/UDF 的情況下嘗試解決這個問題。
數組 function 可以讓你得到你想要的。 對於非 vba 解決方案,使用 CTL SHIFT ENTER 將其輸入到您的工作表中:
=SUM(ROUNDUP(COUNTIF(A1:AH1,">="&ROW(INDIRECT("A1:A"&MAX(A1:AH1),TRUE)))/12,0))
您可以在此處下載 XLSM 文件。
對於任何希望他們可以在常規 Excel 公式中執行 VBA“循環”的人來說,這是一個很好的例子,說明如何通過使用Row
和Indirect
函數每次在具有更高 integer 的范圍內“循環” . 奇普·皮爾森 (Chip Pearson) 對這類事情的看法非常出色。
11 月 26 日更新
我坐在機場很無聊,所以我會再給這個 go...我認為這個自定義 function 會得到他們想要的 OP。 把它放在任何地方,你會得到 77。 =UMutCustom2(A1:AH1)
所需的自定義 function 代碼在這里:
Function UMutCustom2(rng As Range) As Double
Dim r As Long
For r = 1 To Application.WorksheetFunction.Max(rng)
UMutCustom2 = Application.WorksheetFunction.RoundUp(Application.WorksheetFunction.CountIf(rng, ">=" & r) / 12, 0) + UMutCustom2
Next r
End Function
原答案
我在此處的文件中包括了這兩個示例。
可能最容易使用數組公式。 在單元格 Ai1 中輸入此公式: =SUM(ROUNDUP(AI3:AI999/12,0))
但是,在輸入公式后,您必須按 CTR SHIFT ENTER!
這將在公式周圍創建大括號,因此當您查看公式時,它應該顯示: {=SUM(ROUNDUP(AI3:AI999/12,0))}
並且在我的文件版本中總和為 77。
(好消息是 2019 年 Excel 的新查詢引擎將不再需要 CTL SHIFT !)
或者,如果您想使用 vba 制作自定義 function,您可以使用此自定義 function,這不需要 ctr shift enter...這是 VBA 代碼:
Function UMuTCustomFunc(rng As Range) As Double
Dim ws As Worksheet, rCell As Range
Set ws = Sheets(rng.Parent.Name)
For Each rCell In Intersect(ws.UsedRange, rng).Cells
UMuTCustomFunc = Application.WorksheetFunction.RoundUp(rCell.Value / 12, 0) + UMuTCustomFunc
Next rCell
End Function
如果您不想使用數組公式(懶得按CTRL SHIFT ENTER
),您可以使用:
=SUMPRODUCT(ROUNDUP(AI$3:AI$41/12,0))
然后按ENTER
。 結果是 77。
我什至不知道有一個ROUNDUP
function 所以我一開始用這個:
=SUMPRODUCT(IF(MOD(AI3:AI41,12)=0,INT(AI3:AI41/12),INT(AI3:AI41/12)+1))
但如果不將其作為數組公式輸入,它就無法工作。 這應該作為一個提醒,即使SUMPRODUCT
也不會總是作為“非數組”公式工作。
如果要對范圍A1:AH1
應用相同的原則,請使用以下公式:
=SUMPRODUCT(ROUNDUP($A1:$AH1/12,0))
結果是87。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.