100分请教一个关于宏的问题,想了很久没法解决,请朋友们来挑战一下吧。

forgot2000 2008-03-12 01:27:54
此宏有一個字符參數和一个整数参数,
Sub Test(ByVal sCol As String, ByVal RowCount As Long)

把单元格的汇总算出来,比如
Test “A”,3
那么A4=A1*B1+A2*B2+A3*B3
Test “C”,4
那么C5= C1*D1+C2*D2+C3*D3+C4*D4
如果对应的单元格非有效数字或者为空,则取0值

请在自己机器测试,是否有什么简便的方法,谢谢热心的朋友帮忙!谢谢!
...全文
109 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
gracexu 2008-03-14
  • 打赏
  • 举报
回复
楼主,你不能自己进一步拓展吗?
forgot2000 2008-03-14
  • 打赏
  • 举报
回复
謝謝樓上的朋友,如果我輸入Test “DB”,3 呢?應該如何解決?
gracexu 2008-03-13
  • 打赏
  • 举报
回复
其实楼主这个问题要考虑的细节挺多的,我也好人做到底吧。

Dim charcode As Integer, result As Long
Dim myRange1 As Range, myRange2 As Range
charcode = Asc(sCol)
result = 0
Set myRange1 = Range(Cells(1, charcode - 64), Cells(RowCount, charcode - 64))
Set myRange2 = Range(Cells(1, charcode - 63), Cells(RowCount, charcode - 63))
result = WorksheetFunction.SumProduct(myRange1, myRange2)
Test = result
End Function

我这个可以管到Z列,但是使用函数时一定要用大写字母,因为用到Asc函数,大小写的值是不一样的。
如果楼主愿意,自己加代码把输入全部转成大写吧。
栖云居主人 2008-03-13
  • 打赏
  • 举报
回复
range(sCol & RowCount+1) = Application.WorksheetFunction.SumProduct(Range(sCol & "1:" & sCol & RowCount), Range(Chr(Asc(sCol) + 1) & "1:" & Chr(Asc(sCol) + 1) & RowCount))

只能管到Y列,如果会超过Z列的话要略微麻烦一点
forgot2000 2008-03-13
  • 打赏
  • 举报
回复
因為有目的確實需要用宏來實現,我不是問怎麼實現,而是這個宏應該怎麼寫。
gracexu 2008-03-12
  • 打赏
  • 举报
回复
严重同意1楼,这个问题干嘛要写个宏来解决啊
在A4输入=sumproduct(A1:A3,B1:B3)
C5同理.
EdmundBull 2008-03-12
  • 打赏
  • 举报
回复
SUMPRODUCT函数即可

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧