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

问题描述:

所以我有一个Excel电子表格应该可以跟踪成绩,但我似乎无法从字母成绩转换为数字成绩。我试图将I21:I48中的单元格与G10中的参考字母等级匹配:G15和I10:I15,然后将G21:G48替换为相应的数字等级。如果单元格匹配任一列中的单元格返回相邻单元格文本

下面是布置成两排为漂亮的格式,它是硬的原因之一的转化细胞:对细胞

 <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 

下面是一些例子的数据单元,以[FILL]填写:

 <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 

下面是同一张图应该是什么样子填写,使用字母等级列来匹配上面的转换表:

 <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 
+0

它不是很清楚你后面的东西。把它分解多一点? –

+0

两个VLOOKUP()(每列一个),使用IFERROR()在不匹配时返回空白 –

+0

@DougCoats上面的第一个表格是一个转换图表,字母等级为数字等级,其中A为4.0,B +为到3.7等。使用该表格,将第二个表格的“成绩”列中的每个元素替换为对应于“字母成绩”列中的条目的数字成绩,得到第三个表格 – TheEnvironmentalist

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

在G21中粘贴并填充它应该可以做到。

如果你的表是完全顺序的,那么这会更容易一些,并且需要更少的嵌套,而不是将它分成四列而不是两列。我有第二个IFERROR来显示???只是在列I中的项目实际上不在表格中,需要手动调查。

你正在打一个组织糟糕的桌子。在G16输入:

=I10 

复制该小区对面一列,然后向下:

enter image description here

现在你可以在G10:H21

+0

正如问题中所述,重新组织为简单起见,表格不是一个选项 – TheEnvironmentalist

此做一个简单的VLOOKUP()工作,但它不是一个工作表解决方案。基本上在预定义的列中循环遍历每个字母等级,并将答案吐出你告诉它的地方。

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 

它不是最漂亮的代码,但它适用于你所需要的。