2017-01-23 3 views
-1

複数のテストに対する項目応答を持つデータセットがあります。私は、ファイルから読み取ることができる正しい応答に基づいて応答を再コード化したい。テストの長さは異なります。レコード数は、テストおよび適用されるデータセットによって異なる場合があります。例えば、データセットは、50個の読書項目、40個の数量項目30個の綴り項目などに対する応答を有する400個のレコードを有することができる。 現在、以下のコードに示すように、各アイテムのレスポンスを記録しています。 50個の正解を読み込み、対応する50個の列(CV:ES)の回答に適用し、同じ/類似のコード構造を使用して他の列の他のテスト回答に適用したい。VBAの配列を使用して項目応答をコード化するためのキーを適用する

Sub readscore27() 
Dim readkey(1) As String 
readkey(1) = "A" 

Dim MyRange As Range 
Dim MyCell As Range 
Sheets("output2").Select 
'Step 2: Define the target Range. 
Set MyRange = Range("dv2", Range("dv" & Rows.Count).End(xlUp)) 
'Step 3: Start looping through the range. 
For Each MyCell In MyRange 
'Step 4: Do something with each cell. 
    If MyCell.Value = "^" Then 
    MyCell.Value =readkey(1) 
ElseIf MyCell.Value = "--" Then 
    MyCell.Value = "-" 
ElseIf IsEmpty(MyCell) Then 
    MyCell.Value = "" 
End If 
'Step 5: Get the next cell in the range 
Next MyCell 
End Sub 
+0

あなたの現在のコードが、あなたがしたいことの説明にどのように関係しているかは、明確ではありません。プロセスの各部分にサンプルデータを含めると、あなたの質問は簡単に答えることができます。 –

+0

ありがとうTim、現在のコードは – Paddy

+0

です。ありがとうございましたTim、現在のコードは私が50回以上行っていることです。コード例は私の27番目の変数です。正しい応答が 'readkey'に割り当てられ、recodeに対する応答は 'output2'の列 'dv'にあります – Paddy

答えて

0

readscoreにいくつかのパラメータを追加することでコードをより一般的にすることができます。以下

例。

Sub Tester() 

    readscore "DV", "A" 
    readscore "DW", "B" 
    readscore "DX", "C" 

End Sub 



Sub readscore(colLetter, readkey) 
    Dim c As Range, myRange As Range, v 

    With Sheets("output2") 
     Set myRange = .Range(.Cells(2, colLetter), _ 
         .Cells(.Rows.Count, colLetter).End(xlUp)) 
    End With 

    For Each c In myRange 
     v = c.Value 
     If v = "^" Then 
      c.Value = readkey 
     ElseIf v = "--" Then 
      c.Value = "-" 
     ElseIf Len(v) = 0 Then 
      c.Value = "" 
     End If 
    Next c 
End Sub 
+0

おかげでTim、あなたの時間を感謝します:) – Paddy

関連する問題