excel vba 文本數字求和?如上圖,如何求每列合計數中間的最大值?附數據樣本,我來為大家科普一下關于excel vba 文本數字求和?以下内容希望對你有幫助!
如上圖,如何求每列合計數中間的最大值?附數據樣本
第一列 |
第二列 |
第三列 |
第四列 |
1 |
1 |
5 |
9 |
3 |
1 |
5 |
7 |
3 |
4 |
1 |
6 |
5 |
8 |
1 |
8 |
5 |
1 |
4 |
4 |
8 |
3 |
1 |
3 |
9 |
8 |
6 |
1 |
6 |
4 |
4 |
1 |
2 |
7 |
5 |
1 |
4 |
9 |
3 |
1 |
4 |
5 |
3 |
4 |
有群友給出了公式方案:
26 |
MAX(MMULT(P1:Z1 1,A5:D15)) | ||||||
41 |
MAX(SUBTOTAL(9,OFFSET(A:A,,{0,1,2,3},,))) | ||||||
43 |
MAX(SUMIF(A:A,">0",OFFSET(A:A,,{0,1,2,3}))) | ||||||
26 |
MAX(MMULT(D1:N1 1,A5:D15)) | ||||||
45 |
MAX((MMULT(TRANSPOSE(ROW(A5:A15)^0),A5:D15))) | ||||||
45 |
MAX((MMULT(TRANSPOSE(ROW(A5:A15)^0),A5:D15))) | ||||||
52 |
MAX(SUM(A5:A15),SUM(B5:B15),SUM(C5:C15),SUM(D5:D15)) |
也有半自動的方式,先求單列和用sum,再橫向拖動公式,求出每列和
最後再用max求最大值
網友的vba方案:
Sub test1() '通用的數組調用工作表函數Sum區域求和法
Dim i, j, k, arr, brr(), msum, mmax
arr = [a5: d15]
For i = 1 To UBound(arr, 2)
'msum = O
' For j = 1 To UBound(arr)
' msum = msum arr(j, i)
' Next
msum = Application.Sum(Range(Cells(5, i), Cells(UBound(arr) 4, i)))
If msum > mmax Then mmax = msum
Next
'Range("k13") = mmax
Range("g6") = mmax
End Sub
下面給出我的解決方案
方案一,sub方式Sub test2()
For i = 1 To 4
msum = Application.WorksheetFunction.Sum(Range(Cells(5, i), Cells(15, i)))
If msum > mmax Then mmax = msum
Next
[G6] = mmax
End Sub
因為用函數可以内部直接算,邏輯上也更簡明。隻用了for if,不需要數組,sum内部計算也很快。
方案二:function自定義函數方式Function zsummax(rng As Range) '在range中列向求和再求最大值
Dim i, msum, mmax
For i = rng.Column To rng.Columns.Count
msum = Application.WorksheetFunction.Sum(rng.Range(rng.Cells(rng.Row, i), rng.Cells(rng.Row rng.Rows.Count, i)))
If msum > mmax Then mmax = msum
Next
zsummax = mmax
End Function
這個自定義函數更适合公式玩家使用。
當然寫完了之後,能正确求取結果,很快我又發現其中的bug問題
聰明的你看出來了嗎
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!