请问这个excel的VBA程序怎么写,谢谢大家!

来源:百度知道 编辑:UC知道 时间:2024/05/20 13:23:44
是这样的,我有1000行数据,共A,B,C,D.4列,要求A列的数据如果含"a"就在D列累加公式(=D列本身的值+(Bn+Cn)*2,n代表该数),如果A列数据里含"b"就在D列累加公式(=D列本身的值+(Bn+Cn)*3),如果A列数据里含"c"就在D列累加公式(=D列本身的值+(Bn+Cn)*4),请问这个for循环,if语句应该怎么写,还有就是D列要添加的是公式,可能很麻烦
谢谢大家!
(编号)(学分)( 考勤)( 总分)
(a12)( 59)( 1)( 10)
(a13)( 69)( 1)( 10)
(b14)( 77)( 1)( 10)
(c15)( 54)( 1)( 10)
(a16)( 59)( 1)( 10)
(a17)( 59)( 1)( 10)
我又说错了,shuhua0715,糊涂先生_tty,谢谢你们,我问题没问全,不好意思,如果结果让D列显示公式,应该怎么办?比如第二行,运行程序后,D列正常情况下显示值,在选中后不是显示值,而是显示=10+(B2+C2)*2,,因为没运行程序前,D列就有公式

按“Alt”+“F11”键,假如数据在Sheet1表上,双击Sheet1,把以下代码复制到右面的窗体内保存,运行即可(如果数据在Sheet2上,就双击 Sheet2,以此类推...)。另外注意需要把宏的安全性设为“中”或“低”。代码如下:

补充:如果字符出现在任意位置,代码如下:
Sub test()
num = Cells(65536, 1).End(xlUp).Row
For i = 2 To num
If InStr(Cells(i, 1), "a") <> 0 Then Cells(i, 4) = Cells(i, 4) + (Cells(i, 2) + Cells(i, 3)) * 2
If InStr(Cells(i, 1), "b") <> 0 Then Cells(i, 4) = Cells(i, 4) + (Cells(i, 2) + Cells(i, 3)) * 3
If InStr(Cells(i, 1), "c") <> 0 Then Cells(i, 4) = Cells(i, 4) + (Cells(i, 2) + Cells(i, 3)) * 4
Next i
End Sub

e2=d2+(b2+c2)*if(left(a2)="a",2,if(left(a2)="b",3,4))
下拉
剪切e列,选择性粘贴数值到d列。

代码应该是这样的
Sub tt()
For i = 1 To 20
If InStr(Cells(i, 1).Value, "a") > 0 Then
Cells(i, 5).Value = "=" & Cells(i, 4).Value & "+(B" & i & "+C" & i & ")*2"
End If
I