我对VBA非常陌生,在这里发帖之前,我尝试了几次谷歌搜索。如果已经有人问过和回答过这样的问题,我向您道歉。
我在表1的A栏中有一个A3:A22的数字列表,我正在尝试根据表1的A7:A26中A列的每个数字的值来分配分数。
我尝试使用的示例逻辑是
If value < 10 Then Grade = 'A'
Else If 10 <= value < 20 then Grade = 'B'
Else If 20 <= value < 50 then Grade = 'C'
Else If 50 <= value < 70 then Grade = 'D'
Else Grade = 'E'我如何才能做到这一点?我不想使用excel公式,因为我有几个这样的逻辑和excel嵌套如果函数可以变得繁琐。
谢谢你的帮助。
发布于 2015-09-03 22:32:36
我会在单元格中使用公式,而不是使用VBA。单元格A7中的类似内容(要向下复制):
=if(Sheet1!A3>70,"E",if(Sheet1!A3>50,"D",if(Sheet1!A3>20,"C",if(Sheet1!A3>10,"B","A"))))如果您必须在VBA中使用它,则应该可以:
Dim SourceStart As Long, DestinationStart As Long, SourceEnd As Long
Dim Grade As String, CurrentRow As Long
Dim SourceSheet As Worksheet, DestinationSheet As Worksheet
SourceStart = 3
SourceEnd = 22
DestinationStart = 7
Set SourceSheet = ActiveWorkbook.Worksheets(1)
Set DestinationSheet = ActiveWorkbook.Worksheets(2)
For CurrentRow = SourceStart To SourceEnd
Select Case SourceSheet.Cells(CurrentRow, 1).Value
Case Is > 70
Grade = "E"
Case Is > 50
Grade = "D"
Case Is > 20
Grade = "C"
Case Is > 10
Grade = "B"
Case Else
Grade = "A"
End Select
DestinationSheet.Cells(CurrentRow + DestinationStart - SourceStart, 1).Value = Grade
Next对于如何编写代码以实现可重用性,这不是一个很好的例子。例如,评分应该转换为某种数据格式,这样您就可以在不同的地方使用不同的评分标准。源和目标不应该是硬编码的。工作表不应该是硬编码的。但是如果不知道用例,就不能正确地编码来考虑这些变量。
https://stackoverflow.com/questions/32378002
复制相似问题