ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 2100|回复: 7

用IF语句能实现这样的循环吗?

[复制链接]

TA的精华主题

TA的得分主题

发表于 2011-12-17 16:20 | 显示全部楼层 |阅读模式
假如 Me.收费项目="学费" 且 Me.班级="103班"或"105班" 时
若   Me.入学日期在2010年2月以前
Me.收费金额="1000"
若   Me.入学日期在2010年2月-2011年3月
Me.收费金额="1300"
若   Me.入学日期在2011年3月-2011年9月
Me.收费金额="1500"
否则
Me.收费金额="2000"
假如 Me.收费项目="学费" 且 Me.班级="101班"或"102班"或"104班"或"106班" 时
若   Me.入学日期在2010年2月以前
Me.收费金额="1200"
若   Me.入学日期在2010年2月-2011年3月
Me.收费金额="1500"
若   Me.入学日期在2011年3月-2011年9月
Me.收费金额="1800"
否则
Me.收费金额="2100"
假如 Me.收费项目="学费" 且 Left(Me.班级, 1) = 2或3或4或5或6 时
若   Me.入学日期在2010年2月以前
Me.收费金额="1300"
若   Me.入学日期在2010年2月-2011年3月
Me.收费金额="1600"
若   Me.入学日期在2011年3月-2011年9月
Me.收费金额="1900"
否则
Me.收费金额="2200"
假如 Me.收费项目="学费" 且 Left(Me.班级, 1) = 7或8或9 时
若   Me.入学日期在2010年2月以前
Me.收费金额="1400"
若   Me.入学日期在2010年2月-2011年3月
Me.收费金额="1700"
若   Me.入学日期在2011年3月-2011年9月
Me.收费金额="2000"
否则
Me.收费金额="2500"

或者不筛选日期,直接赋4个值到金额里,采用下拉框显示,到底怎么样最好呢?
要把这些转换成代码,怎么写啊???

TA的精华主题

TA的得分主题

发表于 2011-12-17 16:41 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
完全可以啊,用嵌套if可以实现

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-17 16:49 | 显示全部楼层
怎么写成代码啊?{:soso_e178:}{:soso_e192:}

TA的精华主题

TA的得分主题

发表于 2011-12-17 17:00 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-17 18:53 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
建议不要用If语句。用select case来做。大体的伪代码如下:
select case "年级"
         case is <7
                select case "班级"
                         case 1,2,4,6
                               select case "入学日期"
                                        case is <#2010-2-1#
                                       case ………………
                    end select
              end select
         case else
                select case "班级"
                         case 1,2,4,6
                               select case "入学日期"
                                        case is <#2010-2-1#
                                       case ………………
                    end select
              end select
end select
不过,这些为什么不能通过建立一个基础数据表来实现呢?
年级    班级    入学日期    学费
1          101        2010-1-31  1200
1          102       2010-1-31    1500
1          101       2011-2-28    1700
…………………………………………
只需要用Dlookup或者DLast来判断入学日期(不必把所有日期都列出来),即可返回学费了。这是最直接也是最直观的做法。
楼主对基础表的认识可能还不足。写代码当然不是不可以,而且,虽然缩进可以更加直观,但是一旦参数变动时,修改代码、调试都不是一件很方便的事情。如果是基础表,只需要增加或者修改某条记录,查询结果即可显示是否正确了。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-18 15:45 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 午夜兰花 于 2011-12-18 15:53 编辑

我开始也用的表,用组合框联动和判断语句,但始终弄不好。我传个附件帮我看看吧!

学生档案1.rar (35.18 KB, 下载次数: 14)

里面收费标准是这样的:
1-9年级共29个班级,其中103班和105班的学费是一个标准,其它1-6年级一个标准,7-8年级一个标准,9年级一个标准。
其中又按入学时间分4个档次,所以不知怎么搞才好。

要达到这样要求:在选择收费项目后,金额下拉框自动显示。

TA的精华主题

TA的得分主题

 楼主| 发表于 2011-12-19 09:29 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2011-12-19 09:05 | 显示全部楼层
午夜兰花 发表于 2011-12-18 15:45
我开始也用的表,用组合框联动和判断语句,但始终弄不好。我传个附件帮我看看吧!

楼主可以在C表中再创建一个字段(年级),年级与档案表关联起来,统计起来应该会更方便
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-10 21:52 , Processed in 0.024557 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表