请教高手、大侠、前辈们一个很菜的问题!

leiwulong 2003-09-29 11:38:51
请教高手、大侠、前辈们:

如何在EXCEL中实现对某列,或者某个区域中的值进行条件判断后再计算呢?

就有些类似FOXBASE中的repl 命令

1、比方说 我用EXCEL调出某单位人员基本状况 我要给 所有职称是工程师的增加30%

的工资;
2、拖动选择了矩形块儿,或者按住CTRL选择了某些单元格,我就想对这些单元格中的数据进行,有条件或者无条件的 计算 比如在现有值的基础上增加 5%
用EXCEL如何实现?如果不能,用VBA该如何写这个通用的程序呢?

...全文
25 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
leiwulong 2003-10-01
  • 打赏
  • 举报
回复
测试的过程中,程序2、和先在剪贴板复制一个数,然后选择性粘贴,再选择运算方法得到结果;的时候问题就出来了:如果顺次选择列或者规则矩形块,结果正确;但如果选择多列的不规则单元格(我先选择了A列2行的向下的5个单元格,然后再按住CTRL键,选择B列、C列、A列的另几个单元格,等等)结果就会随机的对某个,或者某几个的单元格的值计算2次,也就得出了错误的结果。(office97环境下测试,)
这是怎么回事儿呢?难道是OFFICE中的BUG?
很高兴认识各位热心的兄弟,:)

祝愿,各位在今后的日子里,事事顺!步步高!


雷武龙 10月1日 敬上



大雄 2003-10-01
  • 打赏
  • 举报
回复
问题2也可以在任意单元格输入1.05,按Ctrl+C复制后,选定那些要加5%的单元格,用右键点击在菜单里选择"选择性粘贴"->在"运算"里选择"乘"。
大雄 2003-10-01
  • 打赏
  • 举报
回复
我就给 wl3721的语句加点注释和补充吧
'问题1
Sub 加工资()
j = 1 'j表示<职称>所在的列数,1表示第1列即列A,如果j没赋值就会编译错误
For i = 1 To 20 'i表示行,这里表示第1到第20行,你根据实际调整
If Cells(i, j).Value = "工程师" Then
Cells(i, j + 3).Value = Cells(i, j + 3).Value * 1.3
'j+3表示<工资>所在列数,这里是假设它在职称后第3列,你根据实际调整

End If
Next
End Sub


'问题2
Sub 加()
For Each mycell In Selection
mycell.Value = mycell.Value * 1.05 '我的机子不加.value算不了
Next
End Sub


klbt 2003-09-30
  • 打赏
  • 举报
回复
设A列为职称,B列为工资,C列为计算列

在C1列设置公式:
IF(A:A="工程师",B:B*1.3,B:B)
然后拖动即可。

一定能行!
leiwulong 2003-09-30
  • 打赏
  • 举报
回复
IF(C2='工程师',D2*1.3,D2)
zzzhang(平安)兄的做法,达不到效果哦:(

wl3721() 兄,的循环可否给出注释? 我搞不大懂语法 程序总是编译错误

达不到效果
zzzhang 2003-09-29
  • 打赏
  • 举报
回复
上句输入错误
在空列中用IF语句,IF(单元格="工程师",工资*1.3,工资)
zzzhang 2003-09-29
  • 打赏
  • 举报
回复
在空列中用IF语句,IF(单元格="工程师,工资,工资)
hot.wind 2003-09-29
  • 打赏
  • 举报
回复
'问题1
for i = 1 to 20
if cells(i,j) = "工程师"
cells(i,j+3) = cells(i,j+3) * 1.3
end if
next

'问题2
for each mycell in selection
mycell = mycell*1.05
next

6,210

社区成员

发帖
与我相关
我的任务
社区描述
Microsoft Office应用
社区管理员
  • Microsoft Office应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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