首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如果单元格与任一列中的单元格匹配,则返回相邻单元格文本

如果单元格与任一列中的单元格匹配,则返回相邻单元格文本
EN

Stack Overflow用户
提问于 2016-09-26 05:34:58
回答 3查看 142关注 0票数 0

因此,我有一个excel电子表格,它应该可以跟踪成绩,但我似乎不能正确地将字母等级转换为数字等级。我正在尝试将I21:I48中的单元格与G10:G15和I10:I15中的参考字母等级进行匹配,然后用相应的数字等级替换G21:G48。

下面是排列在两行中的转换单元格,以获得良好的格式,这是很难实现的原因之一:

代码语言:javascript
运行
复制
      <G>   <H>   <I>   <J>
<10>   A    4.0    C    2.0
<11>   A-   3.7    C-   1.7
<12>   B+   3.3    D    1.0
<13>   B    3.0    F    0.0
<14>   B-   2.7    NA   0.0
<15>   C+   2.3    I    0.0

以下是一些示例数据单元格,并对要填充的单元格进行填充:

代码语言:javascript
运行
复制
        <G>       <H>           <I>   
<20>   GRADE     TERM      Letter Grade
<21>   [FILL]   Term 3           A
<22>   [FILL]   Term 3           A-
<23>   [FILL]   Term 3           A
<24>   [FILL]   Term 3           A
<25>   [FILL]   Term 3           A
<26>   [FILL]   Term 3           C
<27>   [FILL]   Term 2           B
<28>   [FILL]   Term 2           A
...
<48>   [FILL]   Term 1           A

下面是填充相同图表,使用字母等级列与上面的转换图表进行匹配:

代码语言:javascript
运行
复制
        <G>       <H>           <I>   
<20>   GRADE     TERM      Letter Grade
<21>    4.0     Term 3           A
<22>    3.7     Term 3           A-
<23>    4.0     Term 3           A
<24>    4.0     Term 3           A
<25>    4.0     Term 3           A
<26>    2.0     Term 3           C
<27>    3.0     Term 2           B
<28>    4.0     Term 2           A
...
<48>    4.0     Term 1           A
EN

回答 3

Stack Overflow用户

发布于 2016-09-26 06:39:08

=IFERROR(IFERROR(VLOOKUP(I21,$G$10:$H$15,2,FALSE),VLOOKUP(I21,$I$10:$J$15,2,FALSE)),"???")

将其粘贴到G21中并将其填充下来应该能起到作用。

如果您的表是完全连续的,而不是将其拆分成四列而不是两列,这将会更容易,并且需要更少的嵌套。我有第二个IFERROR来显示???,以防列I中的项实际上不在表中,需要手动调查。

票数 0
EN

Stack Overflow用户

发布于 2016-09-26 06:44:54

你在和一张组织得不好的桌子打架。在G16中输入:

代码语言:javascript
运行
复制
=I10

将此单元格复制到一列,然后向下复制:

现在,您可以在G10:H21上执行简单的VLOOKUP()

票数 0
EN

Stack Overflow用户

发布于 2016-09-26 20:36:23

这是可行的,但它不是一个工作表解决方案。基本上,循环遍历预定义列中的每个字母等级,并在您告诉它的地方拼写出答案。

代码语言:javascript
运行
复制
Private Sub gradeconversion()
Dim rNg As Range
Dim rCell As Range
Dim vAr As Double
Set rNg = ActiveSheet.Range("i1:i100")
For Each rCell In rNg.Cells
    If rCell.Value <> vbNullString Or rCell.Value <> "" Then
        Select Case rCell
            Case Is = "A"
                vAr = 4
            Case Is = "A-"
                vAr = 3.7
            Case Is = "B+"
                vAr = 3.3
            Case Is = "B"
                vAr = 3
            Case Is = "B-"
                vAr = 2.7
            Case Is = "C+"
                vAr = 2.3
            Case Is = "C"
                vAr = 2
            Case Is = "C-"
                vAr = 1.7
            Case Is = "D"
                vAr = 1
            Case Else
                vAr = 0
        End Select
        rCell.Offset(0, -2).Value = vAr
    End If
Next rCell

End Sub

它不是最漂亮的代码,但它能满足你的需求。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39692070

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档