2016-07-18 7 views
1

私は、ある月の個人のスコアを計算するスプレッドシートを持っています。私は現在、人の名前に基づいてテーブルに現在のスコアをコピーするマクロを持っています。テーブルの中で何ヶ月もスコアを追跡できるようにしたいと思います。たとえば、スコアカードが5月にJohnに85点を与えたとします。私は、マクロが以下に示すようにジョンズスコアをテーブルに入れることを望むでしょう。 特定の行と列へのデータのコピーと貼り付け

Name Jan Feb Mar April May June 
Jim 
James 
John       85 
Jack 

は、私はそれが一次元のためにこれを行います(つまり、名前の隣に現在のスコアを置く)が、任意の運を持っていなかった持っているマクロを使用してそれを働いてみました。非機能コード以下の通りです:

Private Sub MonthScore() 

Dim row As Integer 
Dim column As Integer 

row = 2 

column = 2 

Do While (Sheets("Sheet2").Cells(row, column).Value <> "") 
    If Sheets("Sheet2").Range("A" & row).Value = Sheets("Scorecard").Range("B2").Value _ 
    And Sheets("Sheet2").Cells(1, column).Value = Sheets("Scorecard").Range("J2") Then 
    Sheets("Sheet2").Cells(row, column).Value = Sheets("Scorecard").Range("H15").Value 
    End If 
row = row + 1 
column = column + 1 

Loop 
End Sub 

動作するように、このコード(または、この作業を行いますコードの任意のセット)を取得して任意の助けいただければ幸いです。

+1

そこには3枚がここに関与しているように見えますか? ( "Sheet2"、 "Scorecard"、および "Sheet7')あなたは確認/修正できますか? –

+0

'Sheets(" Sheet2 ")セルを変更する(行、列).Value =シート("スコアカード ")範囲(H15).Valueを' Sheets( "Sheet2")に設定するセル(行、列).Value = Sheets( "Scorecard")。Range( "H15")。値 ' –

+0

2枚のみで、' Sheet7'は "Sheet2"でなければなりません。私は元の投稿にそれを修正しました。 – Miller

答えて

0

あなたは名前で値を見つけるためにApplication.Match()を使用することができますし、月範囲:

Sub MonthScore() 

    Dim mR, mC 
    Dim shtSC, sht2 

    Set shtSC = Sheets("Scorecard") 
    Set sht2 = Sheets("Sheet2") 

    mR = Application.Match(shtSC.Range("B2").Value, sht2.Columns(1), 0) 
    If Not IsError(mR) Then 

     mC = Application.Match(shtSC.Range("J2").Value, sht2.Rows(1), 0) 

     If Not IsError(mC) Then 
      sht2.Cells(mR, mC).Value = shtSC.Range("H15").Value 
     End If 
    End If 
End Sub 
+0

素晴らしいですが、完璧に動作します。 – Miller

関連する問題