2016-09-25 6 views
0

グレードを記録するはずのスプレッドシートがありますが、文字グレードから数値グレードに変換することはできません。私はG10:G15とI10:I15のI21:I48の細胞を参照文字のグレードと一致させ、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]で、いくつかの例のデータセルである:ここで

は素敵なフォーマットのための2つの行、それが難しい理由の一つに配置された変換細胞である

ここで
 <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

IFERROR()を使用して2つのVLOOKUP()(各列に1つずつ)、一致がない場合に空白を返す –

+0

@DougCoats上記の最初の表は、変換グラフで、Aは4.0、Bは行くこの表を使用して、2番目の表の 'Grade'列の各要素を 'Letter Grade'列の項目に対応する数値グレードに置き換え、3番目の表を返します。 – TheEnvironmentalist

答えて

0

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

G21に貼り付けて記入してください。

テーブルが完全に連続している場合は、テーブルが2つではなく4つの列に分割されるのではなく、少し簡単になり、必要なネストが少なくなります。私は???を表示するために2番目のIFERRORを持っていますが、実際にはテーブルに入っておらず、手動で調べる必要があるカラムに項目を入れてください。

0

不適切な構成のテーブルと戦っています。 1列全体に

=I10 

コピーこのセルを、その後ダウン:G16で入力してください今すぐ

enter image description here

あなたはG10:H21

+0

質問で説明したように、単純化のためのテーブルはオプションではありません – TheEnvironmentalist

0

これに簡単な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 

それはあなたに必要なもののために働きますが、最も美しいコードです。

関連する問題