如何实现下面的功能(excel中),在线等~~~

sincere1314 2004-12-27 07:13:19
我定义了一个函数,实现达标成绩到分数的转换,
比如
05:01.0对应89分,
05:01.2按05:02.0计算,对应88分(即向上取值),
......
参数肯定是达标成绩,我定义成string类型,不知对不对,如下:

不知道这样的case语句怎么写,

我自己试了一下,但出现了#ref的错误,
另外也没有实现向上取值的功能,大家帮我看看
Function s1(score As String)
Select Case score
Case "05:01.0"
s1 = 89
Case "05:02.0"
s1 = 88
Case "05:03.0"
s1 = 87
......
Case Else
s1 = 0
End Select
End Function
...全文
158 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
蓝帆·雨轩 2004-12-30
  • 打赏
  • 举报
回复
上面我的表示方法是有问题,不知道您有没有注意:

Case A<=X<=Y [能这样写吗?不可以]
...

Case (A<=X) And (X<=B) [应该是这样的表现形式]
...
蓝帆·雨轩 2004-12-30
  • 打赏
  • 举报
回复
第一个问题:
On Error Resume Next:是一个出错处理语句,防止出错时以外终止程序。

第二个问题:
字符串的大小同样也是可以比较的,所以您可以用比较运算符。
比如: Case A<=X<=Y
...

您再仔细看看吧。
sincere1314 2004-12-29
  • 打赏
  • 举报
回复
急啊,没有人回答吗?
谢谢各位大师了!
sincere1314 2004-12-28
  • 打赏
  • 举报
回复
是不是要比较"05:01.0"和"05:02.0"这两个字符串,“05:01.2”位于其间,就给"05:02.0"的分数88,但我不知道case语句中如何做到这一点?

如果是数字类型,就好办些
case 1 to 5
scoreView=...
case 6 to 8
scoreView=...
但现在是字符串呀
sincere1314 2004-12-28
  • 打赏
  • 举报
回复
谢谢你的指导,还有2个问题:
1。On Error Resume Next是什么意思,是提供异常处理的吗?
2。05:01.2按05:02.0计算(即向上取值),对应88分,如何实现?
蓝帆·雨轩 2004-12-28
  • 打赏
  • 举报
回复
您这里有一个问题:您不应该用s1之类的命名函数,这样基本上都是会出错的。

如果按照您的代码,可以改动如下:
Function ScoreView(score As String)
Select Case score
Case "05:01.0"
ScoreView = 89
Case "05:02.0"
ScoreView = 88
Case "05:03.0"
ScoreView = 87
Case Else
ScoreView = 0
End Select
End Function

测试结果:
输入公式: =ScoreView("05:03.0") 结果为:87

如果要更有实用性,可以改成如下代码:

Function ScoreView(Score As Range)
On Error Resume Next
Select Case Score.Text
Case "05:01.0"
ScoreView = 89
Case "05:02.0"
ScoreView = 88
Case "05:03.0"
ScoreView = 87
Case Else
ScoreView = 0
End Select
End Function

测试结果如下:

A B
1 05:01.0 89
2 05:02.0 88

其中单元格B1中公式为: =ScoreView(A1)

个人方案,仅供参考。若有疑问,欢迎联系。
sincere1314 2004-12-27
  • 打赏
  • 举报
回复
急呀~~case语句中如何使用字符串的比较语句?

6,210

社区成员

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

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