tft每日頭條

 > 圖文

 > excel vba 文本數字求和

excel vba 文本數字求和

圖文 更新时间:2024-07-28 10:19:44

excel vba 文本數字求和?如上圖,如何求每列合計數中間的最大值?附數據樣本,我來為大家科普一下關于excel vba 文本數字求和?以下内容希望對你有幫助!

excel vba 文本數字求和(excel如何列向求和求最大值)1

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每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved