簡體   English   中英

Excel - 寫一個復雜的公式

[英]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“循環”的人來說,這是一個很好的例子,說明如何通過使用RowIndirect函數每次在具有更高 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM